Por que não consigo conectar o Amazon EKS a outros serviços da AWS?

5 minuto de leitura
0

Quero solucionar erros ao tentar conectar o Amazon Elastic Kubernetes Service (Amazon EKS) a outros serviços.

Breve descrição

Se seus pods não conseguirem se conectar a outros serviços, você pode receber um ou mais dos seguintes erros:

  • RequestError: send request failed\\ncaused by: Post \\\"https://ec2.us-west-2.amazonaws.com/\\\": dial tcp <IP address>: i/o timeout\"\
  • Couldn't connect to host, port: imap.mail.<region>.awsapps.com,<port>; timeout -1
  • java.net .SocketTimeoutException: connect timed out
  • Connection could not be created to jdbc:postgresql://<hostname>.<region>.rds.amazonaws.com:5432/
  • <URL>.<region>.rds.amazonaws.com (<IPaddress>:3306): Operation timed out
  • Error : java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=<hostname>.<region>.rds.amazonaws.com)(port=3306)(type=master) : Socket fail to connect to host:<hostname>.<region>.rds.amazonaws.com , port:3306. connect timed out***
  • o.apache.kafka.clients.NetworkClient -[Producer clientId=producer-1] Connection to node -1 (<hostname>.c3.kafka.<region>.amazonaws.com/<IPaddress>:9092) could not be established. O agente pode não estar disponível.

Esses erros surgem devido a problemas de conexão de rede que podem ser causados por uma configuração incorreta do Amazon Virtual Private Cloud (Amazon VPC). Para resolver esses problemas, verifique os grupos de segurança e as listas de controle de acesso (ACLs) de rede associados a:

  • Instâncias do nó de processamento
  • Serviços aos quais os pods estão tentando se conectar

Resolução

Em geral, você recebe erros de tempo-limite de conexão quando as regras do grupo de segurança ou as ACLs de rede negam explicitamente as permissões necessárias.

Para resolvê-los, verifique se o ambiente está configurado corretamente confirmando que:

  • Seus grupos de segurança atendem aos requisitos do Amazon EKS.
  • Seus grupos de segurança para pods permitem que os pods se comuniquem entre si.
  • A rede ACL não nega a conexão.
  • Sua sub-rede tem uma rota local para comunicação dentro do Amazon VPC.
  • Seus pods estão programados e no estado RUNNING (em execução).
  • Você tem a versão mais recente disponível do plug-in do Amazon VPC Container Network Interface (CNI) para Kubernetes.
  • As sub-redes VPC do seu cluster têm um endpoint de interface da VPC para serviços da AWS que seus pods precisam acessar.

Seus grupos de segurança atendem aos requisitos do Amazon EKS

Verifique se as regras de entrada e saída permitem tráfego em protocolos e portas que seus nós de trabalho usam para se comunicar com outros serviços. É uma prática recomendada permitir que todo o tráfego flua entre o cluster e os nós e permitir que todo o tráfego de saída chegue a qualquer destino. Você não precisa alterar as regras do grupo de segurança sempre que um novo pod com uma nova porta for criado. Para obter mais informações, consulte Requisitos e considerações sobre o grupo de segurança do Amazon EKS.

Seus grupos de segurança para pods permitem que os pods se comuniquem entre si

Se você usa grupos de segurança para pods ou redes personalizadas, pode anexar qualquer grupo de segurança aos seus pods. Nesse caso, confirme se os grupos de segurança permitem a comunicação entre os pods.

A rede ACL não nega a conexão

  • Confirme se o tráfego entre seu cluster do Amazon EKS e a VPC CIDR flui livremente na sua rede ACL.
  • Considere configurar as ACLs de rede com regras semelhantes às dos seus grupos de segurança.

Sua sub-rede tem uma rota local para comunicação dentro do Amazon VPC

Confirme que suas sub-redes têm a rota padrão para comunicação dentro da sua VPC. Para obter mais informações, consulte Requisitos e considerações sobre a VPC e a sub-rede do Amazon EKS.

Seus pods estão programados e no estado RUNNING (em execução)

Confirme se seus pods estão programados e no estado RUNNING (em execução). Para solucionar o status do seu pod, consulte Como soluciono o problema de status do pod no Amazon EKS?

Você tem a versão mais recente disponível do plug-in do Amazon VPC CNI para Kubernetes

Se você não estiver executando a versão mais recente disponível do plug-in do Amazon VPC CNI para Kubernetes, considere atualizar para a versão mais recente.

Se você ainda tiver problemas, consulte Como faço para solucionar problemas do kubelet ou do plug-in CNI para o Amazon EKS?

As sub-redes VPC do seu cluster devem ter um endpoint de interface da VPC que seus pods precisam acessar

Alguns serviços e endpoints comumente usados estão listados a seguir:

ServiçoEndpoint
Amazon Elastic Compute Cloud (Amazon EC2)com.amazonaws.region-code.ec2
Amazon Elastic Container Registry (Amazon ECR)com.amazonaws.region-code.ecr.api com.amazonaws.region-code.ecr.dkr com.amazonaws.region-code.s3
Elastic Load Balancing (ELB)com.amazonaws.region-code.elasticloadbalancing
AWS X-Raycom.amazonaws.region-code.xray
Amazon CloudWatchcom.amazonaws.region-code.logs
AWS Security Token Service (AWS STS) (necessário quando você usa perfis do IAM para contas de serviço)com.amazonaws.region-code.sts
AWS App Mesh O controlador App Mesh para Kubernetes não é compatível. Para obter mais informações, consulte App Mesh controller no site do GitHub. Cluster Autoscaler compatível. Ao implantar os pods do Cluster Autoscaler, verifique se a linha de comando inclui --aws-use-static-instance-list=true. Para obter mais informações, consulte Use Static Instance List no site do GitHub. A VPC do nó de processamento também deve incluir o endpoint da VPC AWS STS e o endpoint do Amazon EC2 Auto Scaling.com.amazonaws.region-code.appmesh-envoy-management

Para obter uma lista completa dos endpoints, consulte os serviços da AWS que se integram ao AWS PrivateLink.

Verifique se o grupo de segurança do endpoint da VPC tem regras de entrada que permitem o tráfego dos nós de processamento.


AWS OFICIAL
AWS OFICIALAtualizada há um ano