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

7 minuto de leitura
0

Meu grupo de nós gerenciados do Amazon Elastic Kubernetes Service (Amazon EKS) falhou na criação. Os nós não conseguem ingressar no cluster e recebi um erro semelhante ao seguinte: “As instâncias falharam ao ingressar no cluster do kubernetes”.

Breve descrição

Para resolver falhas na criação de grupos de nós gerenciados pelo Amazon EKS, siga estas etapas:

  • Use o runbook do AWS Systems Manager Automation para identificar problemas comuns.
  • Confirme os requisitos de tráfego do grupo de segurança do nó de processamento.
  • Verifique as permissões do Identity and Access Management (IAM) do nó de trabalho.
  • Confirme se a Amazon Virtual Private Cloud (Amazon VPC) do seu cluster tem suporte para um nome de host e resolução de DNS.
  • Atualize o aws-auth ConfigMap com o NodeInstanceRole de seus nós de processamento.
  • Defina as tags para seus nós de processamento.
  • Confirme se as sub-redes do Amazon VPC para o nó de processamento têm endereços IP disponíveis.
  • Confirme se os nós de processamento podem alcançar o endpoint do servidor de API do seu cluster.
  • Verifique se os endpoints da API Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Registry (Amazon ECR) e Amazon Simple Storage Service (Amazon S3) podem alcançar sua região da AWS.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está utilizando sua versão mais recente.

Use o runbook do Systems Manager Automation para identificar problemas comuns

Use o runbook AWSSupport-TroubleshootEKSWorkerNode para encontrar problemas comuns que impedem que os nós de processamento ingressem ao seu cluster.

**Importante:**para que a automação funcione, seus nós de processamento devem ter permissão para acessar o Systems Manager e fazer o Systems Manager ser executado. Para conceder permissão, anexe a política gerenciada pela AWS AmazonSSMManagedInstanceCore ao perfil do IAM que corresponde ao seu perfil de instância do EC2. Essa é a configuração padrão para grupos de nós gerenciados pelo EKS criados por meio do eksctl.

  1. Abra o runbook.
  2. Verifique se a região da AWS Console de Gerenciamento da AWS Management está definida como a mesma região do seu cluster.
    Observação: Consulte a seção Detalhes do documento do runbook para obter mais informações sobre o runbook.
  3. Na seção Parâmetros de entrada, especifique o nome do seu cluster no campo ClusterName e o ID da instância no campo WorkerID.
  4. (Opcional) No campo AutomationAssumeRole, especifique o perfil do IAM para permitir que o Systems Manager execute ações. Se não forem especificadas, as permissões do IAM da sua entidade IAM atual serão usadas para realizar as ações no runbook.
  5. Escolha Executar.
  6. Consulte a seção Saídas para ver por que seu nó de processamento não está ingressando no cluster e as etapas que você pode seguir para resolver isso.

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

Confirme se o grupo de segurança e o grupo de segurança do nó de processamento do seu plano de controle estão configurados com as configurações recomendadas para tráfego de entrada e saída. Por padrão, o Amazon EKS aplica o grupo de segurança do cluster às instâncias em seu grupo de nós para facilitar a comunicação entre os nós e o plano de controle. Se você especificar grupos de segurança personalizados no modelo de execução do seu grupo de nós gerenciados, o Amazon EKS não adicionará o grupo de segurança do cluster.

Verifique as permissões do IAM do nó de processamento

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

**Observação:**Você deve anexar a política gerenciada da Amazon AmazonEKS_CNI_Policy a um perfil do IAM. Você pode anexá-la à função de instância do nó. No entanto, é uma prática recomendada anexar a política a uma função associada à conta de serviço do Kubernetes aws-node no namespace kube-system. Para obter mais informações, consulte Como configurar o plugin CNI da Amazon VPC para Kubernetes para usar perfil do IAM para contas de serviço.

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

Depois de configurar o acesso privado para seu endpoint de cluster do EKS, você deve ativar um nome de host DNS e uma resolução de DNS para sua Amazon VPC. Quando você ativa o acesso privado ao endpoint, o Amazon EKS cria uma zona hospedada privada do Amazon Route 53 para você. Em seguida, o Amazon EKS a associa à Amazon VPC do seu cluster. Para mais informações, consulte Controle de acesso ao endpoint de cluster do Amazon EKS.

Atualize o aws-auth ConfigMap com o NodeInstanceRole de seus nós de processamento

Verifique se o aws-auth configMap está configurado corretamente com o perfil do IAM de seus nós de processamento, não com o perfil de instância.

Defina as tags para seus nós de processamento

Para a propriedade Tag dos seus nós de processamento, defina a chave como kubernetes.io/cluster/clusterName e defina o valor como de propriedade.

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

Se sua 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 Requisitos e considerações de VPC e sub-rede do Amazon EKS.

Confirme se seus nós de processamento do Amazon EKS podem alcançar o endpoint do servidor de API do seu cluster

Você pode executar nós de processamento em qualquer sub-rede em seu cluster VPC ou sub-rede emparelhada se houver uma rota de Internet por meio dos seguintes gateways:

  • NAT
  • Internet
  • Trânsito

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

Observação: para nós que estão em uma sub-rede privada impulsionada por um gateway NAT, é uma prática recomendada criar o 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 proxy para os seguintes serviços da AWS:

  • Amazon EC2
  • Amazon ECR
  • Amazon S3

Para verificar se o nó de processamento tem acesso ao servidor da API, conecte-se ao seu nó de processamento usando SSH e execute o seguinte comando netcat:

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 seu servidor de API.

Verifique os logs do kubelet enquanto ainda estiver acessando sua instância:

journalctl -f -u kubelet

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

sudo systemctl status kubelet

Colete os logs do Amazon EKS e os logs do sistema operacional para obter mais soluções de problemas.

Verifique se os endpoints da API Amazon EC2, Amazon ECR e Amazon S3 podem alcançar sua região da AWS

Use o SSH para se conectar a um dos nós de processamento e, em seguida, execute os seguintes comandos para cada serviço:

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

**Observação:**substitua a região pela região da AWS do seu nó de processamento.

Configure os dados de usuário de seu nó de processamento

Para modelos de execução de grupos de nós gerenciados com uma AMI especificada, você deve fornecer comandos de bootstrap para que os nós de processamento ingressem no seu cluster. O Amazon EKS não mescla os comandos de bootstrap padrão em seus dados de usuário. Para obter mais informações, consulte Apresentação do modelo de execução e do suporte personalizado à AMI nos Grupos de nós gerenciados do Amazon EKS e Como especificar uma AMI.

Exemplo de modelo de execução com comandos de bootstrap:

#!/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, se necessário.

Informações relacionadas

Solução de problemas do Amazon EKS

Como fazer meus nós de processamento ingressarem no meu cluster do Amazon EKS?