SNAT para Pods - Amazon EKS

SNAT para Pods

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 Endereços IPv6 para clusters, Pods e services.

Por padrão, cada Pod no cluster recebe um endereço IPv4 privado de um bloco de Encaminhamento Entre Domínios Sem Classificação (CIDR) associado à VPC na qual o Pod está implantado. Pods na mesma VPC se comunicam uns com os outros utilizando esses endereços IP privados como endpoints. Quando um Pod se comunica com qualquer endereço IPv4 que não está dentro de um bloco CIDR associado à VPC, o plug-in CNI da Amazon VPC (para Linux ou Windows) converte endereço IPv4 do Pod's no endereço IPv4 privado da interface de rede elástica primária do nó no qual o Pod está em execução, por padrão *.

nota

Para nós Windows, existem detalhes adicionais a serem considerados. Por padrão, o plug-in CNI da VPC CNI para Windows é definido com uma configuração de rede em que 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 de plug-in anteriores a 1.8.0, os recursos que estão em redes ou VPCs conectadas à sua VPC do cluster usando emparelhamento de VPC, uma VPC em trânsito ou o AWS Direct Connect não poderão iniciar a comunicação com os Pods por interfaces de rede elástica 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 à sua VPC do cluster usando emparelhamento de VPC, uma VPC em trânsito ou o AWS Direct Connect que precisam iniciar a comunicação com seus Pods usando um endereço IPv4 e sua versão de plug-in deve ser anterior à 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.

*Se a especificação de Pod's contiver hostNetwork=true (o padrão é false), seu endereço IP não será convertido em um endereço diferente. Este é o caso dos Pods Kubernetes de kube-proxy e do Amazon VPC CNI plugin for , 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.