Como solucionar falhas de criação de grupos de nós gerenciados do Amazon EKS?

Data da última atualização: 11/05/2022

Falha ao criar meu grupo de nós gerenciados do Amazon Elastic Kubernetes Service (Amazon EKS). Os nós não conseguem ingressar no cluster, e recebi um erro semelhante ao seguinte:

"As instâncias falharam ao ingressar no cluster Kubernetes".

Resolução

Siga estas instruções de solução de problemas para resolver a falha na criação do grupo de nós gerenciados do Amazon EKS.

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Confirmar se os nós de processamento do Amazon EKS conseguem acessar o endpoint do servidor de APIs do seu cluster

É possível iniciar nós de processamento do Amazon EKS em uma sub-rede associada a uma tabela de rotas para o endpoint da API por meio de um gateway NAT ou de um gateway da Internet.

Se os seus nós de processamento forem iniciados em uma rede privada restrita, confirme se eles conseguem acessar o endpoint do servidor de APIs do Amazon EKS. Para obter mais informações, consulte os requisitos para executar o Amazon EKS em um cluster privado sem acesso de saída à Internet.

Observação: se o seus nós estiverem em uma sub-rede privada apoiada por um gateway NAT, uma prática recomendada é a criação do gateway NAT em uma sub-rede pública.

Se você não estiver usando endpoints do AWS PrivateLink, verifique o acesso aos endpoints da API por meio de um servidor de proxy para os seguintes serviços da AWS:

  • Amazon Elastic Compute Cloud (Amazon EC2)
  • Amazon Elastic Container Registry (Amazon ECR)
  • Amazon Simple Storage Service (Amazon S3)

Para verificar se o nó de processamento tem acesso ao servidor de API, execute o seguinte comando netcat no nó de processamento:

nc -vz 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com 443

Observação: substitua 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com pelo endpoint do servidor de APIs.

Conecte-se à sua instância do Amazon EC2 do nó de processamento do Amazon EKS usando SSH. Em seguida, execute o seguinte comando para verificar os logs do kubelet:

journalctl -f -u kubelet

Se os logs do kubelet não fornecerem informações sobre a origem do problema, execute o seguinte comando para verificar o status do kubelet no nó de processamento:

sudo systemctl status kubelet

Coletar os logs do Amazon EKS e os logs do sistema operacional para solucionar problemas adicionais.

Verificar se os endpoints de API do Amazon EC2, Amazon ECR e Simple Storage Service (Amazon S3) estão acessíveis

Usar o SSH para se conectar a um dos nós de processamento.

Para verificar se os endpoints de API do Amazon EC2, Amazon ECR Simple Storage Service (Amazon S3) da sua Região da AWS estão acessíveis, execute o seguinte comando:

$ nc -vz ec2.<region>.amazonaws.com 443
$ nc -vz ecr.<region>.amazonaws.com 443
$ nc -vz s3.<region>.amazonaws.com 443

Observação: substitua <region> pela Região da AWS do nó de processamento.

Configurar os dados do usuário do seu nó de processamento

A AMI personalizada nos modelos de inicialização deve usar a invocação de bootstrap do Amazon EKS com os dados do usuário do modelo de inicialização. O Amazon EKS não mescla as informações de bootstrap padrão nos dados do usuário. Para obter mais informações, consulte Apresentação do template de inicialização e suporte para AMIs personalizadas em grupos de nós gerenciados do Amazon EKS.

Para configurar os dados do usuário do seu nó de processamento, você pode especificar esses dados ao iniciar suas instâncias do Amazon EC2.

Atualize o campo de dados do usuário dos nós de processamento semelhantes aos seguintes:

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}

Observação: substitua ${ClusterName} pelo nome do seu cluster do Amazon EKS. Substitua ${BootstrapArguments} por valores adicionais de bootstrap ou deixe o valor em branco.

Confirme se a Amazon VPC para seu cluster do Amazon EKS tem suporte para um nome de host DNS e resolução DNS

É necessário habilitar os nomes de host DNS e a resolução DNS com nós de processamento após alterar o acesso do endpoint ao cluster de público para privado. Ao habilitar o acesso privado de endpoint ao seu cluster, o Amazon EKS cria uma zona hospedada privada do Route 53 em seu nome. Em seguida, o Amazon EKS o associa à Amazon Virtual Private Cloud (Amazon VPC) do seu cluster.
VPC.

Para obter mais informações, consulte Controle de acesso ao endpoint do cluster do Amazon EKS.

Verifique as permissões do nó de processamento

Certifique-se de que a função da instância do IAM associada ao nó de processamento tenha as políticas AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly vinculadas.

Observação: a política gerenciada da Amazon AmazonEKS_CNI_Policy deve ser vinculada à função da instância do nó ou a uma função diferente mapeada para a conta de serviço do Kubernetes do nó da AWS. É uma prática recomendada atribuir a política à função associada à conta de serviço do Kubernetes em vez de atribuí-la à função.

Confirmar requisitos de tráfego do grupo de segurança do nó de processamento

Confirme se o grupo de segurança do seu plano de controle e o grupo de segurança do nó de processamento estão definidos com as configurações recomendadas para tráfego de entrada e saída.

Confirmar se as sub-redes da Amazon VPC para o nó de processamento têm endereços IP disponíveis

Se a Amazon VPC estiver ficando sem endereços IP, você poderá associar um CIDR secundário à sua Amazon VPC existente. Para obter mais informações, consulte Aumentar os endereços IP disponíveis para a sua Amazon VPC.