Habilite o acesso de saída à Internet para pods - Amazon EKS

Habilite o acesso de saída à Internet para pods

Aplica-se a: nós IPv4 do Fargate para Linux, nós do Linux com instâncias do Amazon EC2

Se você implantou seu cluster utilizando a família IPv6, as informações neste tópico não serão aplicáveis a ele, pois endereços IPv6 não são convertidos na rede. Para obter mais informações sobre como usar o IPv6 com o seu cluster, consulte Saiba mais sobre endereços IPv6 para clusters, pods e serviços.

Por padrão, cada Pod em seu cluster recebe um endereço link:AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-private-addressesIPv4 de um bloco de roteamento interdomínio sem classe (CIDR) associado à VPC em que o Pod está implantado. Pods na mesma VPC se comunicam entre si usando esses endereços IP privados como endpoints. Quando um Pod se comunica com qualquer endereço IPv4 que não esteja em um bloco CIDR associado à sua VPC, o plug-in Amazon VPC CNI (para Linux ou Windows) traduz o endereço IPv4 do Pod’s para o endereço privado primário IPv4 da interface de rede elástica primária do nó em que o Pod está sendo executado, por padrão ^* ^.

nota

Para nós Windows, existem detalhes adicionais a serem considerados. Por padrão, o plug-in VPC CNI para Windows é definido com uma configuração de rede na qual o tráfego para um destino dentro da mesma VPC é excluído para SNAT. Isso significa que a comunicação da VPC interna tem a SNAT desabilitada e que o endereço IP alocado a um Pod é roteável dentro da VPC. Porém, o tráfego para um destino fora da VPC tem o IP de origem conectado Pod ao endereço IP primária da ENI da instância. Essa configuração padrão para o Windows garante que o pod possa acessar redes fora da sua VPC da mesma forma que a instância do host.

Devido a este comportamento:

  • Os Pods poderão se comunicar com os recursos da Internet somente se o nó em que estão sendo executados tiver um endereço IP público ou elástico atribuído a ele e se estiver em uma sub-rede pública. A tabela de rotas associada a uma sub-rede pública tem uma rota para um gateway da Internet. Convém implantar nós em sub-redes privadas, sempre que possível.

  • Para versões do plug-in anteriores a 1.8.0, os recursos que estão em redes ou VPCs conectados à VPC do cluster usando emparelhamento de VPC, uma VPC de trânsito ou AWS Direct Connect não podem iniciar a comunicação com o Pods por meio de interfaces de rede elásticas secundárias. Seus Pods podem iniciar a comunicação com esses recursos e receber respostas deles.

Se qualquer uma das declarações a seguir for verdadeira em seu ambiente, altere a configuração padrão com o comando a seguir.

  • Você tem recursos em redes ou VPCs que estão conectados à VPC do seu cluster usando peering de VPC, uma VPC de trânsito ou AWS Direct Connect que precisam iniciar a comunicação com seu Pods usando um endereço IPv4 e sua versão de plug-in é anterior a 1.8.0.

  • Os Pods estão em uma sub-rede privada e precisam se comunicar com a saída de Internet. A sub-rede tem uma rota para um gateway NAT.

kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true
nota

As variáveis de configuração CNI AWS_VPC_K8S_CNI_EXTERNALSNAT e AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS não são aplicáveis a nós Windows. A desativação do SNAT não tem suporte no Windows. Quanto à exclusão de uma lista de CIDRs IPv4 do SNAT, você pode definir isso especificando o parâmetro ExcludedSnatCIDRs no script de bootstrap Windows. Para obter mais informações sobre o uso desse parâmetro, consulte Parâmetros de configuração do script de bootstrap.

Redes do host

^*^se uma especificação Pod’s contiver hostNetwork=true (o padrão é false), seu endereço IP não será traduzido para um endereço diferente. Este é o caso dos Pods de kube-proxy e do Amazon VPC CNI plugin for Kubernetes, que são executados no seu cluster por padrão. Para esses Pods, o endereço IP é o mesmo que o endereço IP primário do nó e, portanto, o endereço IP do Pod’s não é convertido. Para obter mais informações sobre a configuração de hostNetwork do Pod’s, consulte PodSpec v1 core na referência de APIs do Kubernetes.