Como soluciono problemas com o endpoint do servidor de API do meu cluster Amazon EKS?

5 minuto de leitura
0

Não consigo executar comandos kubectl. Além disso, alterei a configuração de acesso ao endpoint de público para privado no meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS). Agora, meu cluster está preso no estado Falha.

Breve descrição

Se você tiver problemas com o endpoint do servidor da API Kubernetes, conclua as etapas em uma das seções a seguir:

  • Você não pode executar comandos kubectl no cluster novo ou existente
  • Você não pode executar comandos kubectl no cluster depois de alterar o acesso ao endpoint de público para privado
  • Seu cluster está preso no estado Falha e você não pode alterar a configuração de acesso ao endpoint de público para privado

Observação: para configurar o acesso ao endpoint do servidor da API Kubernetes, consulte Modificação do acesso ao endpoint do cluster.

Resolução

Você não pode executar comandos kubectl no cluster novo ou existente

1.    Confirme se você está usando os arquivos kubeconfig corretos para se conectar ao seu cluster. Para mais informações, consulte Como organizar o acesso ao cluster usando arquivos kubeconfig (do site do Kubernetes).

2.    Verifique se há vários contextos em cada cluster em seus arquivos kubeconfig.

Exemplo de saída:

kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
Cluster name    Server
new200.us-east-2.eksctl.io       https://D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com

Se os arquivos kubeconfig existentes não tiverem os detalhes corretos do cluster, use o comando a seguir para criar um com os detalhes corretos:

aws eks update-kubeconfig --name cluster name --region region

**Observação:**Substitua o nome do cluster pelo nome do seu cluster e a região pela sua região da AWS.

3.    Use o telnet na porta 443 para validar a conectividade do endpoint do servidor de API a partir do seu dispositivo.

Exemplo de saída:

echo exit | telnet D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com 443
Trying 18.224.160.210...
Connected to D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com.
Escape character is '^]'.
Connection closed by foreign host.

Se o telnet não estiver funcionando, use as seguintes etapas para solucionar o problema:

Verifique o resolvedor de DNS

Se o servidor da API não estiver resolvendo, há um problema com o resolvedor de DNS.

Execute o comando a seguir no mesmo dispositivo em que os comandos kubectl falharam:

nslookup APISERVER endpoint

**Observação:**Substitua o endpoint APISERVER pelo seu endpoint APISERVER.

Verifique se você restringiu o acesso público ao endpoint do servidor de API

Se você especificou blocos CIDR para limitar o acesso ao endpoint público do servidor de API, é recomendável também ativar o acesso ao endpoint privado.

4.    Verifique o comportamento de acesso ao endpoint do servidor de API. Consulte Modificação do acesso ao endpoint do cluster.

Você não pode executar comandos kubectl no cluster depois de alterar o acesso ao endpoint de público para privado

1.    Confirme se você está usando um host bastion ou redes conectadas, como VPCs emparelhados, AWS Direct Connect ou VPNs, para acessar o endpoint da API Amazon EKS.

**Observação:**no modo de acesso privado, acesse o endpoint da API Amazon EKS somente de dentro da VPC do cluster.

2.    Verifique se grupos de segurança ou listas de controle de acesso à rede estão bloqueando as chamadas de API.

Se você acessar seu cluster por meio de uma VPC emparelhada, confirme se os grupos de segurança do plano de controle permitem o acesso da VPC emparelhada aos grupos de segurança do plano de controle na porta 443. Além disso, verifique se as VPCs emparelhadas têm a porta 53 aberta entre si. A porta 53 é usada para resolução de DNS.

Seu cluster está preso no estado Falha e você não pode alterar a configuração de acesso ao endpoint de público para privado

Seu cluster pode estar no estado Falha devido a um problema de permissões com o AWS Identity and Access Management (IAM).

1.    Confirme se o perfil do IAM para o usuário está autorizada a executar a açãoAssociateVpcWithHostedZone.

**Observação:**se a ação não estiver bloqueada, verifique se a conta do usuário tem políticas do AWS Organizations que estão bloqueando as chamadas de API e causando a falha do cluster.

2.    Confirme se a permissão do usuário do IAM não está implícita ou explicitamente bloqueada em nenhum nível acima da conta.

Observação: s permissão do usuário do IAM é bloqueada implicitamente se não estiver incluída na declaração de política Permitir. É explicitamente bloqueado se estiver incluído na declaração de política Negar. A permissão é bloqueada mesmo se o administrador da conta anexar a política do IAM AdministratorAccess com permissões */* ao usuário. As permissões das políticas do AWS Organizations substituem as permissões para entidades do IAM.


Informações relacionadas

Requisitos e considerações do grupo de segurança Amazon EKS

Resolução de DNS para clusters EKS usando endpoints privados

O Amazon EKS permite restrições de acesso à rede para endpoints públicos do cluster Kubernetes

Controle de acesso ao endpoint do cluster Amazon EKS

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos