Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Configurar o plug-in CNI da Amazon VPC para Kubernetes de grupos de segurança para pods do Amazon EKS
Caso use pods com instâncias do Amazon EC2, é necessário configurar o plug-in CNI da Amazon VPC para grupos de segurança do Kubernetes.
Caso use apenas pods do Fargate e não tenha nenhum nó do Amazon EC2 no cluster, consulte Usar uma política para grupos de segurança para um pod do Amazon EKS.
-
Verifique a versão atual do plug-in CNI da Amazon VPC para Kubernetes com o seguinte comando:
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3Veja um exemplo de saída abaixo.
v1.7.6Se a versão do plug-in CNI da Amazon VPC para Kubernetes for anterior à
1.7.7, atualize o plug-in para a versão1.7.7ou mais recente. Para obter mais informações, consulte Atribuir IPs a pods com a CNI da Amazon VPC. -
Adicione a política do IAM gerenciada pelo AmazonEKSVPCResourceController
ao perfil de cluster que está associado ao seu cluster do Amazon EKS. A política permite que a função gerencie interfaces de rede, seus endereços IP privados e seu anexo e desprendimento de e para instâncias de rede. -
Recupere o nome do perfil do IAM do cluster e armazene-o em uma variável. Substitua
my-clusterpelo nome do cluster.cluster_role=$(aws eks describe-cluster --name my-cluster --query cluster.roleArn --output text | cut -d / -f 2) -
Anexe a política ao perfil.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSVPCResourceController --role-name $cluster_role
-
-
Habilite o complemento CNI da Amazon VPC para gerenciar interfaces de rede para pods, definindo a variável
ENABLE_POD_ENIcomotrueno DaemonSetaws-node. Depois que essa configuração estiver definida comotrue, para cada nó no cluster, o complemento cria um recurso personalizadocninode. O controlador de recursos da VPC cria e anexa uma interface de rede especial chamada Interface de rede com a descriçãoaws-k8s-trunk-eni.kubectl set env daemonset aws-node -n kube-system ENABLE_POD_ENI=truenota
A interface de rede de tronco está incluída no número máximo de interfaces de rede suportadas pelo tipo de instância. Para obter uma lista do número máximo de interfaces de rede com suporte por cada tipo de instância, consulte IP addresses per network interface per instance type (Endereços IP por interface de rede por tipo de instância) no Guia do usuário do Amazon EC2. Se o nó já tiver o número máximo de interfaces de rede padrão anexadas a ele, o controlador de recursos da VPC reservará um espaço. Você terá que reduzir a escala verticalmente dos pods em execução o suficiente para que o controlador desconecte e exclua uma interface de rede padrão, crie a interface de rede tronco e anexe-a à instância.
-
Você pode ver quais de seus nós possuem um recurso personalizado do
CNINodecom o comando a seguir. SeNo resources foundfor retornado, aguarde alguns segundos e tente de novo. A etapa anterior requer a reinicialização do plug-in CNI da Amazon VPC para pods do Kubernetes, o que leva alguns segundos.kubectl get cninode -A NAME FEATURES ip-192-168-64-141.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}] ip-192-168-7-203.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}]Se você estiver usando versões do VPC CNI anteriores a
1.15, rótulos de nós foram usados em vez do recursoCNINodepersonalizado. Você pode ver quais do seus nós têm o rótulo de nóaws-k8s-trunk-enidefinido comotruecom o comando a seguir. SeNo resources foundfor retornado, aguarde alguns segundos e tente de novo. A etapa anterior requer a reinicialização do plug-in CNI da Amazon VPC para pods do Kubernetes, o que leva alguns segundos.kubectl get nodes -o wide -l vpc.amazonaws.com/has-trunk-attached=trueDepois que a interface de rede tronco for criada, os pods receberão endereços IP secundários das interfaces de rede tronco ou padrão. A interface de tronco é excluída automaticamente se o nó for excluído.
Quando você implanta um grupo de segurança para um pod em uma etapa posterior, o controlador de recursos da VPC cria uma interface de rede especial denominada interface de rede de ramificação, com uma descrição de
aws-k8s-branch-eni, e associa os grupos de segurança a ela. As interfaces de rede da ramificação são criadas como um adicional para as interfaces de rede padrão e de tronco conectadas ao nó.Se você estiver usando uma investigação de atividade ou de preparação, também precisará desabilitar o TCP early demux, de modo que o
kubeletpossa se conectar aos pods em interfaces de rede de ramificação usando o TCP. Para desativar o TCP early demux, execute o seguinte comando:kubectl patch daemonset aws-node -n kube-system \ -p '{"spec": {"template": {"spec": {"initContainers": [{"env":[{"name":"DISABLE_TCP_EARLY_DEMUX","value":"true"}],"name":"aws-vpc-cni-init"}]}}}}'nota
Se você estiver usando o plug-in CNI
1.11.0ou mais recente da Amazon VPC para o complemento do Kubernetes e definirPOD_SECURITY_GROUP_ENFORCING_MODE=standard, conforme descrito na próxima etapa, não será necessário executar o comando anterior. -
Se o cluster usar
NodeLocal DNSCache, ou caso deseje usar a política de rede do Calico com os pods que têm seus próprios grupos de segurança, ou caso tenha serviços do Kubernetes do tipoNodePorteLoadBalancerque usam destinos de instâncias com umaexternalTrafficPolicydefinida comoLocalpara os pods aos quais deseja atribuir grupos de segurança, você deverá estar usando a versão1.11.0ou mais recente do complemento do plug-in CNI da Amazon VPC para Kubernetes e habilitar a seguinte configuração:kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standardIMPORTANTE: as regras do grupo de segurança dos pods não são aplicadas ao tráfego entre os pods ou entre os pods e serviços, como
kubeletounodeLocalDNS, que estão no mesmo nó. Os pods que usam grupos de segurança diferentes no mesmo nó não podem se comunicar porque estão configurados em sub-redes diferentes, e o roteamento está desativado entre essas sub-redes. O tráfego de saída dos pods para endereços fora da VPC é o endereço de rede convertido no endereço IP da interface de rede primária da instância (a menos que você também tenha definidoAWS_VPC_K8S_CNI_EXTERNALSNAT=true). Para esse tráfego, as regras nos grupos de segurança da interface de rede primária são usadas, e não as regras nos grupos de segurança do pod. ** Para que essa configuração seja aplicada a pods existentes, é necessário reiniciar os pods ou os nós em que esses pods estejam sendo executados. -
Para saber como usar uma política de grupos de segurança no pod, consulte Usar uma política para grupos de segurança para um pod do Amazon EKS.