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.
Resolução
Observação: para configurar o acesso ao endpoint do servidor da API Kubernetes, consulte Modificação do acesso ao endpoint do cluster.
Solucionar erros do comando kubectl em um cluster novo ou existente
Confirme se seu arquivo kubeconfig se conecta ao seu cluster
Conclua as etapas a seguir:
-
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.
-
Execute o comando a seguir para listar os contextos do cluster em seu arquivo kubeconfig:
kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
Exemplo de saída:
Cluster name Server "example-cluster-name" https://"example-cluster-endpoint".eks.amazonaws.com
-
Verifique se os nomes e endpoints do cluster em seu arquivo kubeconfig estão corretos. Se o nome ou endpoint de um cluster estiver incorreto, execute o seguinte comando para atualizar o contexto do cluster no arquivo kubeconfig:
aws eks update-kubeconfig --name example-cluster-name --region example-region
Observação: Substitua example-cluster-name pelo nome do cluster que você está atualizando e example-region pela sua região da AWS.
-
No seu dispositivo, execute o seguinte comando telnet na porta 443 para verificar a conectividade do endpoint do servidor de API:
telnet example-server-endpoint 443
Observação: Substitua example-server-endpoint pelo endpoint do seu servidor de API.
No exemplo de saída a seguir, a porta 433 pode se conectar ao endpoint ** do servidor D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com**:
$ 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 seu dispositivo não conseguir se conectar ao endpoint do servidor de API pela porta 433, conclua as etapas de resolução nas seções a seguir.
Verifique o resolvedor de DNS
Execute o comando a seguir no mesmo dispositivo em que os comandos kubectl falharam:
nslookup example-server-endpoint
Observação: Substitua example-server-endpoint pelo endpoint do seu servidor de API.
Verifique se você restringiu o acesso público ao endpoint do servidor de API
Execute uma das seguintes ações com base em seus requisitos:
- Se você restringiu o acesso público ao endpoint do servidor API com blocos CIDR, verifique se o endereço IP da sua máquina cliente está dentro dos intervalos CIDR permitidos.
- Se você precisar de acesso de fora da sua Amazon Virtual Private Cloud (Amazon VPC), use um endpoint público com restrições CIDR.
Certifique-se de que a combinação de acesso do endpoint do seu servidor de API atenda aos seus requisitos de acesso.
Observação: É uma prática recomendada definir o endpoint do servidor de API como privado e configurar o AWS VPN para acesso externo. Para mais informações, consulte Acessar um servidor de API somente privado.
Solucionar erros do comando kubectl em um cluster após o acesso ao endpoint mudar de público para privado
Realize as seguintes ações:
- Confirme se você usa um bastion host ou redes conectadas para acessar o endpoint da API Amazon EKS. As redes conectadas incluem VPCs emparelhadas, AWS Direct Connect e VPNs.
Observação: no modo de acesso privado, acesse o endpoint da API Amazon EKS somente de dentro da VPC do cluster.
- Verifique se os grupos de segurança ou as listas de controle de acesso à rede (ACLs de rede) bloqueiam solicitações para o servidor da API Kubernetes.
Observação: Se você usa uma VPC emparelhada, confirme se os grupos de segurança do ambiente de gerenciamento permitem acesso a partir da VPC emparelhada na porta 443.
Solucione problemas de um cluster que está preso no estado Falha quando não é possível alterar a configuração de acesso ao endpoint de pública para privada
Se houver um problema de permissão com o AWS Identity and Access Management (AWS IAM), seu cluster entrará no estado Falha.
Confirme se o perfil do IAM para o usuário está autorizada a executar a ação AssociateVpcWithHostedZone.
Se a ação não estiver bloqueada, verifique se a sua conta da AWS tem políticas de controle de serviços (SCPs) do AWS Organizations que bloqueiam as chamadas de API. Verifique se nenhuma negação implícita ou explícita bloqueia as permissões do usuário do IAM no nível organizacional ou da conta. Mesmo que o administrador da conta anexe a política do IAM AdministratorAccess com permissões */* ao usuário, a permissão ainda estará bloqueada pelas declarações Negar. Os SCPs do AWS Organizations substituem as permissões para entidades do IAM.