Por que não consigo me conectar ao meu cluster do Amazon EKS?
Criei um cluster do Amazon Elastic Kubernetes Service (Amazon EKS), mas não consigo me conectar a ele.
Breve descrição
Talvez você não consiga se conectar ao seu cluster do Amazon EKS por um dos seguintes motivos:
- Você não criou o arquivo kubeconfig para o seu cluster.
- Não é possível conectar-se ao endpoint do servidor de APIs do Amazon EKS.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Você não criou o arquivo kubeconfig
Depois de criar seu cluster do Amazon EKS, configure seu arquivo kubeconfig para que seja possível usar a linha de comandos kubectl para se conectar ao seu cluster. O arquivo kubeconfig contém sua configuração de cluster do Kubernetes.
Com base no seu sistema operacional (SO), é possível encontrar seu arquivo kubeconfig nos seguintes locais:
- Para Linux ou macOS, acesse $HOME/.kube/config.
- Para Windows, acesse %USERPROFILE%\.kube\config.
Para usar um local de arquivo diferente, execute uma das seguintes ações:
- Defina a variável de ambiente KUBECONFIG para apontar para o novo local.
- Use a sinalização --kubeconfig ao executar os comandos kubectl para especificar um caminho de arquivo personalizado.
Se um arquivo kubeconfig já existir no local padrão, o Amazon EKS mesclará novas configurações com o arquivo existente. É possível usar o comando kubectl config para gerenciar seus contextos de cluster. Para obter mais informações, consulte kubectl config no site do Kubernetes.
Não é possível conectar-se ao endpoint do servidor de APIs do Amazon EKS
Para solucionar esse problema, conclua as seguintes etapas:
-
Para verificar se é possível se conectar à URL do servidor de API do Amazon EKS, execute o seguinte comando com maior detalhamento:
kubectl get svc --v=9A saída do comando mostra informações detalhadas da conexão, incluindo a URL do servidor de API que sua conexão usa. Verifique os endereços IP listados para HTTP Trace: Pesquisa de DNS.
Exemplo de saída:I0110 16:43:36.920095 48173 loader.go:373] Config loaded from file: /Users/abs/.kube/configI0110 16:43:36.936844 48173 round_trippers.go:466] curl -v -XGET -H "Accept: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1;g=meta.k8s.io,application/json" -H "User-Agent: kubectl/v1.26.0 (darwin/arm64) kubernetes/b46a3f8" 'https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com//api/v1/namespaces/default/services?limit=500' I0110 16:43:37.362185 48173 round_trippers.go:495] HTTP Trace: DNS Lookup for S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/ resolved to [{18.119.155.77 } {3.136.153.3 }] I0110 16:43:37.402538 48173 round_trippers.go:510] HTTP Trace: Dial to tcp:18.119.155.77:443 succeed I0110 16:43:37.500276 48173 round_trippers.go:553] GET https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com//api/v1/namespaces/default/services?limit=500 200 OK in 563 milliseconds I0110 16:43:37.500302 48173 round_trippers.go:570] HTTP Statistics: DNSLookup 1 ms Dial 40 ms TLSHandshake 44 ms ServerProcessing 52 ms Duration 563 ms I0110 16:43:37.500308 48173 round_trippers.go:577] Response Headers: I0110 16:43:37.500316 48173 round_trippers.go:580] Audit-Id: 37c17136-7fa7-40e9-8fe6-b24426e81564 I0110 16:43:37.500323 48173 round_trippers.go:580] Cache-Control: no-cache, private I0110 16:43:37.500329 48173 round_trippers.go:580] Content-Type: application/json I0110 16:43:37.500334 48173 round_trippers.go:580] X-Kubernetes-Pf-Flowschema-Uid: 508eb99e-d99b-44db-8ade-838c99fe8e9f I0110 16:43:37.500340 48173 round_trippers.go:580] X-Kubernetes-Pf-Prioritylevel-Uid: d324d3db-05ce-441b-a0ff-c31cbe8f696c I0110 16:43:37.500345 48173 round_trippers.go:580] Date: Tue, 10 Jan 2023 21:43:37 GMT -
Para verificar se o servidor de API do Amazon EKS está acessível publicamente, execute o seguinte comando describe-cluster da AWS CLI:
aws eks describe-cluster --name cluster_name --region example_region --query cluster.resourcesVpcConfigObservação: Substitua cluster_name pelo nome do seu cluster e example_region pela sua região da AWS.
Exemplo de saída:{ "subnetIds": [ "subnet-abc1", "subnet-abc2", "subnet-abc3", "subnet-abc4", "subnet-abc5", "subnet-abc6" ], "securityGroupIds": [ "sg-abc7" ], "clusterSecurityGroupId": "sg-abc7", "vpcId": "vpc-abc9", "endpointPublicAccess": true, "endpointPrivateAccess": false, "publicAccessCidrs": [ "0.0.0.0/0" ] }Para permitir o acesso público, certifique-se de que endpointPublicAccess seja verdadeiro. Para manter o acesso privado, certifique-se de que endpointPublicAccess seja falso. Se endpointPublicAccess for falso, vá para a etapa 9. Se o endpointPublicAccess for verdadeiro, é uma prática recomendada de segurança limitar o endpointPublicAccess a intervalos específicos de endereços IP. Conclua as etapas 3 a 8 para adicionar seus endereços IP permitidos à lista de permissões publicAccessCidrs.
-
Abra o console do Amazon EKS.
-
Selecione Clusters e selecione o cluster que você deseja atualizar.
-
Selecione a guia Rede e depois clique em Gerenciar redes.
-
Selecione Público.
-
Em Configurações avançadas, em bloco CIDR, insira o intervalo de CIDR público que você deseja adicionar à lista de permissões.
Importante: Inclua o endereço IP do gateway NAT que os nós de processamento em suas sub-redes privadas usam para acessar a internet. Além disso, inclua os endereços IP de todos os componentes de rede do dispositivo NAT. -
Selecione Salvar alterações.
-
Se você configurou o servidor de API do cluster no modo somente privado, verifique se a solicitação kubectl vem da rede do cluster. Se sua solicitação kubectl for de fora da sua Amazon Virtual Private Cloud (Amazon VPC), você receberá o seguinte erro de tempo limite ao executar o comando get svc:
$ kubectl get svc --v=9I0110 17:15:58.889798 50514 loader.go:373] Config loaded from file: /Users/example-user/.kube/config I0110 17:15:58.896715 50514 round_trippers.go:466] curl -v -XGET -H "Accept: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1;g=meta.k8s.io,application/json" -H "User-Agent: kubectl/v1.26.0 (darwin/arm64) kubernetes/b46a3f8" 'https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/api/v1/namespaces/default/services?limit=500' I0110 17:15:59.374499 50514 round_trippers.go:495] HTTP Trace: DNS Lookup for S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com resolved to [{192.168.126.17 } {192.168.144.26 }] I0110 17:16:14.285027 50514 round_trippers.go:508] HTTP Trace: Dial to tcp:192.168.126.17:443 failed: dial tcp 192.168.126.17:443: i/o timeout I0110 17:16:29.191768 50514 round_trippers.go:508] HTTP Trace: Dial to tcp:192.168.144.26:443 failed: dial tcp 192.168.144.26:443: i/o timeout I0110 17:16:29.196959 50514 round_trippers.go:553] GET https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/api/v1/namespaces/default/services?limit=500 in 30300 milliseconds I0110 17:16:29.197724 50514 round_trippers.go:570] HTTP Statistics: DNSLookup 183 ms Dial 14906 ms TLSHandshake 0 ms Duration 30300 ms I0110 17:16:29.197768 50514 round_trippers.go:577] Response Headers: I0110 17:16:29.199254 50514 helpers.go:264] Connection error: Get https://S123GBNS3HJUFN467UFGH6782JHCH2891.yl4.us-east-2.eks.amazonaws.com/api/v1/namespaces/default/services?limit=500: dial tcp 192.168.126.17:443: i/o timeout Unable to connect to the server: dial tcp 192.168.126.17:443: i/o timeout -
Atualize o grupo de segurança do cluster para adicionar o endereço IP de origem ou o intervalo CIDR à sua lista de permissões. Isso permite que o cliente kubectl se conecte ao endpoint do servidor de API do Amazon EKS de dentro da VPC do cluster.
Informações relacionadas
Solucionar problemas com clusters e nós do Amazon EKS
Como resolvo o erro quando me conecto ao servidor de APIs do Amazon EKS?"You must be logged in to the server (Unauthorized)"
De-mystifying cluster networking for Amazon EKS worker nodes [Desmistificando a rede de clusters para nós de processamento do Amazon EKS]
Como faço para bloquear o acesso à API de endereços IP específicos no meu cluster do Amazon EKS?
- Tópicos
- Containers
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há 2 meses
- feita há 9 meses
AWS OFICIALAtualizada há 5 meses
AWS OFICIALAtualizada há 3 anos
AWS OFICIALAtualizada há 7 meses