Como escolho sub-redes de endereço IP específicas para pods no meu cluster do Amazon EKS?
Quero usar sub-redes personalizadas ou intervalos de endereços IP para meus pods no Amazon Elastic Kubernetes Service (Amazon EKS).
Resolução
Para alocar endereços IP de pod de sub-redes diferentes das sub-redes dos seus nós de processamento, use redes personalizadas.
Ativar a rede personalizada
Antes de configurar a rede personalizada, revise os seguintes comportamentos padrão:
- Os nós e pods usam endereços IP dos mesmos intervalos CIDR em seu cluster do Amazon Virtual Private Cloud (VPC). Para adicionar mais intervalos CIDR de endereços IP à Amazon VPC, consulte Como faço para usar vários intervalos CIDR com o Amazon EKS?.
- O Amazon EKS atribui endereços IP do pod a partir da sub-rede do nó de processamento.
- Não é possível controlar qual sub-rede atribui endereços IP aos pods.
- Quando nenhum endereço IP está disponível na sub-rede de um nó, os novos pods não são iniciados, mesmo quando outras sub-redes têm endereços disponíveis.
- Todo o tráfego de pods para endereços IP fora da Amazon VPC para seu bloco CIDR de cluster do Amazon EKS usa a interface principal e o endereço IP do nó. O tráfego usa grupos de segurança e uma sub-rede da interface de rede elástica primária do nó. Ele não usa a sub-rede e os grupos de segurança que você definiu nos objetos ENIConfig.
- Se você usa grupos de segurança para pods, os pods usam o grupo de segurança que você especificou em sua SecurityGroupPolicy. Os pods não usam o grupo de segurança que você especificou nos objetos ENIConfig.
Observação: para mais informações sobre o roteamento de tráfego de pods, consulte Habilitar o acesso de saída à internet para pods.
Ative a rede personalizada no plug-in Container Network Interface da Amazon VPC (CNI da Amazon VPC) para Kubernetes. Use a versão do plug-in CNI da Amazon VPC que corresponda à sua versão do Kubernetes. Para acessar o plug-in, consulte amazon-vpc-cni-k8s no site do GitHub.
Execute o comando a seguir para verificar a versão em sua Amazon VPC para seu cluster do Amazon EKS:
kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
Se você não tiver a versão correta do plug-in, atualize a CNI da Amazon VPC.
Execute o comando a seguir para ativar a rede personalizada:
kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true
A CNI de VPC v1.18 e versões posteriores oferecem suporte à descoberta automática de sub-redes e à alocação dinâmica de endereços com base no uso do endereço IP nas sub-redes disponíveis. Para mais informações, consulte Amazon VPC CNI introduces enhanced subnet discovery (A CNI da Amazon VPC introduz descoberta avançada de sub-redes).
Também é possível usar o plug-in CNI da Amazon VPC para:
- Especificar as sub-redes da Amazon VPC a serem usadas em seus pods.
- Definir grupos de segurança separados para seus pods.
Crie objetos ENIConfig
Antes de criar seus objetos ENIConfig, revise os seguintes comportamentos padrão:
- cada objeto ENIConfig define uma sub-rede e uma lista de grupos de segurança.
- É possível atribuir somente um objeto ENIConfig a cada nó. No entanto, é possível atribuir o mesmo objeto ENIConfig a vários nós.
- Quando você atribui um objeto ENIConfig a um nó, os pods programados para o nó usam a sub-rede e os grupos de segurança no objeto ENIConfig.
- O nome do seu objeto ENIConfig deve ser o nome da sua zona de disponibilidade.
Execute o comando a seguir para criar seus objetos ENIConfig:
cat EOF | kubectl apply -f - apiVersion: crd.k8s.amazonaws.com/v1alpha1 kind: ENIConfig metadata: name: example-availability-zone spec: securityGroups: - example-security-group-id subnet: example-subnet-id EOF
Observação: substitua example-availability-zone pela sua zona de disponibilidade. Substitua example-security-group-id pelo ID do seu grupo de segurança. Substitua example-subnet-id pelo ID da sua sub-rede.
Atribuir objetos ENIConfig
Para atribuir um objeto ENIConfig a uma zona de disponibilidade, atribua automaticamente objetos ENIConfig aos seus nós. Para associar vários objetos ENIConfig à mesma zona de disponibilidade, atribua manualmente objetos ENIConfig aos seus nós.
Atribuir objetos ENIConfig automaticamente
Execute o seguinte comando:
kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=topology.kubernetes.io/zone
Associar manualmente objetos ENIConfig
Importante: certifique-se de que o nó e a sub-rede no objeto ENIConfig associado estejam na mesma zona de disponibilidade.
Execute o seguinte comando:
kubectl annotate node example-node-name k8s.amazonaws.com/eniConfig=example-availability-zone
Observação: substitua example-node-name pelo identificador completo do seu nó. Substitua example-availability-zone pelo nome da zona de disponibilidade que você usou ao criar seu objeto ENIConfig.
Iniciar novos nós
Para alocar interfaces de rede secundárias e endereços IP das sub-redes de ENIConfig, você deve iniciar novos nós. Os nós atuais continuam usando sua configuração de rede original até que você os substitua.
Conclua as etapas a seguir:
- Verifique se você usa um ID personalizado da imagem de máquina da Amazon (AMI) com seu grupo de nós gerenciado por grupo de nós autogerenciado.
- Se você usar um ID de AMI personalizado, determine o máximo de pods para cada valor de nó. Você deve adicionar o parâmetro --cni-custom-networking-enabled ao executar o script max-pods-calculator.sh.
Observação: se você não usa um modelo de lançamento ou ID de AMI, o Amazon EKS define automaticamente o número máximo de pods. - Atualize o script de dados do usuário em seus novos nós para usar o número máximo de pods com base no seu sistema operacional (SO):
Amazon Linux 2, Bottlerocket, Ubuntu 20.04 e versões posteriores, Windows Server 2019 e versões posteriores#!/bin/bash /etc/eks/bootstrap.sh example-cluster-name --use-max-pods false --kubelet-extra-args '--max-pods=example-max-pods'
Observação: nos comandos anteriores, substitua example-cluster-name pelo nome do seu cluster EKS. Substitua example-max-pods pelo valor máximo de pods por nó.--user-data '#!/bin/bash /etc/eks/nodeadm init \ --container-runtime containerd \ --cluster-name example-cluster-name \ --max-pods example-max-pods'
Para mais informações sobre bootstrap, consulte awslabs/amazon-eks-ami no site do GitHub. Para obter mais informações sobre nodeadm, consulte Atualização do Amazon Linux 2 para o Amazon Linux 2023.
Amazon Linux 2023 (AL2023) - Recrie seus pods para usar sua nova configuração de rede personalizada.
- Tópicos
- Containers
- Idioma
- Português

Conteúdo relevante
feita há 8 meses
feita há 10 meses
AWS OFICIALAtualizada há 3 anos