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

11 minuto de leitura
0

Meus nós de processamento não ingressam no meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrição

Para fazer com que seus nós de processamento ingressem no seu cluster do Amazon EKS, conclua as seguintes etapas:

  • Use o runbook do AWS Systems Manager Automation para identificar problemas comuns.
  • Confirme se você tem suporte de DNS para sua Amazon Virtual Private Cloud (Amazon VPC).
  • Confirme se os nós de processamento do seu perfil de instância têm as permissões corretas.
  • Configure os dados do usuário para seus nós de processamento.
  • Verifique se a rede está configurada corretamente para as suas sub-redes da Amazon VPC.
  • Verifique se seus nós de processamento estão na mesma VPC do seu cluster do EKS.
  • Atualize o ConfigMap aws-auth com o NodeInstanceRole dos seus nós de processamento.
  • Atenda aos requisitos de grupo de segurança de seus nós de processamento.
  • Defina as etiquetas para seus nós de processamento.
  • Confirme se os seus nós de processamento podem acessar o endpoint do servidor de APIs do seu cluster do EKS.
  • Confirme se o perfil de cluster está configurado corretamente para o seu cluster do EKS.
  • Para regiões da AWS que oferecem suporte a endpoints do AWS Security Token Service (AWS STS), confirme se o endpoint regional do AWS STS está ativado.
  • Certifique-se de que a AMI esteja configurada para funcionar com o Amazon EKS e inclua os componentes necessários.
  • Use SSH para se conectar à instância do Amazon Elastic Compute Cloud (Amazon EC2) do seu nó de processamento e, em seguida, procure erros nos logs do atendente kubelet.
  • Use o script do coletor de logs do Amazon EKS para solucionar erros.

Importante: as etapas a seguir não incluem configurações necessárias para registrar nós de processamento em ambientes nos quais os seguintes critérios não são atendidos:

  • Na VPC do seu cluster, o parâmetro de configuração domain-name-servers está definido como AmazonProvidedDNS. Para mais informações, consulte DHCP options sets (Conjuntos de opções de DHCP).
  • Você está usando uma imagem de máquina da Amazon (AMI) Linux otimizada para o Amazon EKS para iniciar seus nós de processamento.
    Observação: a AMI Linux otimizada para Amazon EKS fornece todas as configurações necessárias, incluindo um script de bootstrap /etc/eks/bootstrap.sh, para registrar nós de processamento no seu cluster.

Resolução

Usar o runbook de automação do Systems Manager para identificar problemas comuns

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

Importante: para que a automação funcione, seus nós de processamento devem ter permissão para acessar o Systems Manager e ter o Systems Manager em execução. Para conceder essa permissão, anexe a política AmazonSSMManagedInstanceCore ao perfil do AWS Identity and Access Management (IAM). Esse é o perfil do IAM que corresponde ao seu perfil de instância do Amazon EC2. Essa é a configuração padrão para grupos de nós gerenciados pelo Amazon EKS que você cria por meio de eksctl. Use o seguinte formato para o nome do seu cluster: [-a-zA-Z0-9]{1,100}$.

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

Confirmar se você tem suporte de DNS para sua Amazon VPC

Confirme se a Amazon VPC do seu cluster do EKS tem as opções DNS hostnames (Nomes de hosts DNS) e DNS resolution (Resolução de DNS) ativadas.

Para verificar esses atributos e ativá-los, conclua as seguintes etapas:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, escolha Your VPCs (Suas VPCs).
  3. Selecione a VPC que você deseja editar.
  4. Na guia Details (Detalhes), verifique se as opções Nomes de hosts DNS e Resolução de DNS estão ativadas.
  5. Se não estiverem ativadas, selecione Enable (Habilitar) para ambos os atributos.
  6. Escolha Save changes (Salvar alterações).

Para mais informações, consulte View and update DNS attributes for your VPC (Visualizar e atualizar atributos DNS para sua VPC).

Confirmar se os nós de processamento do seu perfil de instância têm as permissões corretas

Anexe as seguintes políticas gerenciadas pela AWS ao perfil associado aos nós de processamento do seu perfil de instância:

  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonEC2ContainerRegistryReadOnly

Para anexar políticas a perfis, consulte Adding IAM identity permissions (console) (Adicionar permissões de identidade do IAM (console)).

Configurar os dados do usuário para seus nós de processamento

Observação: se você usar o AWS CloudFormation para iniciar seus nós de processamento, não precisará configurar os dados do usuário para esses nós. Em vez disso, siga as instruções para iniciar nós autogerenciados do Amazon Linux no Console de Gerenciamento da AWS.

Se você iniciar seus nós de processamento usando grupos de nós gerenciados, não precisará configurar dados de usuários com as AMIs do Amazon Linux otimizadas para o Amazon EKS. Você deverá configurar os dados do usuário somente se usar AMIs personalizadas para iniciar seus nós de processamento por meio de grupos de nós gerenciados.

Se estiver usando grupos de nós gerenciados pela Amazon com o modelo de lançamento personalizado, especifique os dados corretos do usuário nesse modelo de lançamento. Se o cluster do Amazon EKS for um cluster totalmente privado que usa endpoints de VPC para fazer conexões, especifique o seguinte nos dados do usuário:

  • certificate-authority
  • api-server-endpoint
  • IP do cluster de DNS

Se necessário, forneça dados do usuário para transmitir argumentos ao arquivo bootstrap.sh incluído com uma AMI Linux/Bottlerocket otimizada para o Amazon EKS.

Para configurar dados de usuários para seus nós de processamento, especifique esses dados ao iniciar suas instâncias do Amazon EC2.

Por exemplo, se você usa uma ferramenta de terceiros, como o Terraform, atualize o campo User data (Dados do usuário) para iniciar seus nós de processamento do EKS:

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

Importante:

  • substitua ${ClusterName} pelo nome do seu cluster do EKS.
  • Substitua ${BootstrapArguments} por valores adicionais de bootstrap ou deixe essa propriedade em branco.

Verificar se a rede está configurada corretamente para as suas sub-redes da Amazon VPC

  • Se você usa um gateway da Internet, certifique-se de que ele esteja conectado à tabela de rotas corretamente, sem buraco negro.
  • Se você usa um gateway NAT, certifique-se de que ele esteja configurado corretamente em uma sub-rede pública. Além disso, verifique se a tabela de rotas não contém um buraco negro.
  • Se você usa endpoints privados de VPC para um cluster totalmente privado, certifique-se de ter os seguintes endpoints:
    com.amazonaws.region.ec2 (endpoint de interface)
    com.amazonaws.region.ecr.api (endpoint de interface)
    com.amazonaws.region.ecr.dkr (endpoint de interface)
    com.amazonaws.region.s3 (endpoint de gateway)
    com.amazonaws.region.sts (endpoint de interface)
  • Os pods que você configura com perfis do IAM para contas de serviço adquirem credenciais de uma chamada de API do AWS Security Token Service (AWS STS). Se não houver acesso externo à Internet, você deverá criar e usar um endpoint de VPC do AWS STS na sua VPC.
  • O grupo de segurança do endpoint de VPC deve ter uma regra de entrada que permita o tráfego da porta 443. Para mais informações, consulte Control traffic to resources using security groups (Controlar o tráfego para recursos usando grupos de segurança).
  • Certifique-se de que a política anexada ao endpoint de VPC tenha as permissões necessárias.

Observação: se você estiver usando qualquer outro serviço da AWS, deverá criar esses endpoints. Para alguns serviços e endpoints comumente usados, consulte Requisitos de clusters privados. Além disso, você pode criar um serviço de endpoint com base no seu caso de uso.

Verifique se os seus nós de processamento estão na mesma Amazon VPC do seu cluster do EKS

  1. Abra o console do Amazon EKS.
  2. Escolha Clusters e depois selecione seu cluster.
  3. Na seção Redes, identifique as sub-redes associadas ao seu cluster.

Observação: você pode configurar diferentes sub-redes nas quais iniciar seus nós de processamento. Essas sub-redes devem existir na mesma Amazon VPC e estar devidamente marcadas. O Amazon EKS gerencia etiquetas automaticamente somente para sub-redes que você configura durante a criação do cluster. Portanto, certifique-se de marcar as sub-redes adequadamente.

Para mais informações, consulte Subnet requirements and considerations (Requisitos e considerações de sub-redes).

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

Verifique se o ConfigMap aws-auth está configurado corretamente com o perfil do IAM do seu nó de processamento e não com o perfil da instância.

Para verificar o arquivo ConfigMap aws-auth, execute o seguinte comando:

kubectl describe configmap -n kube-system aws-auth

Se o ConfigMap aws-auth não estiver configurado corretamente, você verá o seguinte erro:

571 reflector.go:153\] k8s.io/kubernetes/pkg/kubelet/kubelet.go:458 : Failed to list \*v1.Node: Unauthorized

Atender aos requisitos de grupo de segurança de seus nós de processamento

Confirme se o grupo de segurança e o grupo de segurança de nós de processamento do seu ambiente de gerenciamento estão definidos com configurações que são as práticas recomendadas para tráfego de entrada e saída. Além disso, confirme se as suas regras personalizadas de ACL de rede estão configuradas para permitir tráfego de e para 0.0.0.0/0 para as portas 80, 443 e 1025-65535.

Definir as etiquetas para seus nós de processamento

Para a propriedade Tag dos seus nós de processamento, defina Key como kubernetes.io/cluster/clusterName e Value como owned.

Para mais informações, consulte VPC requirements and considerations (Requisitos e considerações de VPCs).

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

Considere os pontos a seguir:

  • Você pode iniciar nós de processamento em uma sub-rede associada a uma tabela de rotas que roteia para o endpoint de API por meio de um gateway NAT ou da Internet.
  • Se você iniciar seus nós de processamento em uma rede privada restrita, confirme se esses nós podem acessar o endpoint do servidor de APIs do EKS.
  • Se você iniciar nós de processamento com uma Amazon VPC que usa um DNS personalizado em vez de AmazonProvidedDNS, talvez eles não resolvam o endpoint. Um endpoint não resolvido acontece quando o acesso público ao endpoint é desativado e somente o acesso privado é ativado. Para mais informações, consulte Turning on DNS resolution for Amazon EKS cluster endpoints (Ativar a resolução de DNS para endpoints de cluster do Amazon EKS).

Confirmar se o perfil de cluster está configurado corretamente para o seu cluster

Seu cluster deve ter o perfil de cluster com a permissão mínima AmazonEKSClusterPolicy. Além disso, a relação de confiança do seu cluster deve permitir o serviço eks.amazonaws.com para sts:AssumeRole.

Exemplo:

{
  "Version": "2012-10-17",
  "Statement": \[
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  \]
}

Para mais informações, consulte perfil do IAM do cluster do Amazon EKS.

Confirmar se os endpoints regionais do STS estão ativados

Se o cluster estiver em uma região com suporte para endpoints do STS, ative o endpoint regional do STS para autenticar o kubelet. O kubelet pode então criar o objeto de nó.

Certificar-se de que a AMI esteja configurada para funcionar com o EKS e inclua os componentes necessários

Se a AMI usada para nós de processamento não for a AMI do Amazon Linux otimizada para o Amazon EKS, confirme se os seguintes componentes do Kubernetes estão em estado ativo:

  • kubelet
  • AWS IAM Authenticator
  • Docker (Amazon EKS versão 1.23 e anteriores)
  • containerd

Conectar-se à sua instância de nó de processamento do EKS com SSH e verificar os logs de agente kubelet

O agente kubelet está configurado como um serviço systemd.

1.Para validar seus logs do kubelet, execute o seguinte comando:

journalctl -f -u kubelet

2.Para resolver qualquer problema, consulte o guia de solução de problemas do Amazon EKS para conhecer os erros comuns.

Usar o script do coletor de logs do Amazon EKS para solucionar erros

Você pode usar os arquivos de log e os logs do sistema operacional para solucionar os problemas no seu Amazon EKS.

Use o SSH para se conectar ao nó de processamento problemático e execute o seguinte script:

curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/log-collector-script/linux/eks-log-collector.sh

sudo bash eks-log-collector.sh

Informações relacionadas

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

AWS OFICIAL
AWS OFICIALAtualizada há um ano