¿Por qué no puedo conectarme desde Amazon EKS a otros servicios de AWS?

6 minutos de lectura
0

Quiero solucionar errores al intentar conectarme desde Amazon Elastic Kubernetes Service (Amazon EKS) a otros servicios.

Descripción breve

Si sus pods no pueden conectarse a otros servicios, es posible que recibas uno o más de los siguientes errores:

  • RequestError: send request failed\\ncaused by: Post \\\"https://ec2.us-west-2.amazonaws.com/\\\": dial tcp <IP address>: i/o timeout\"\ (Error en el envío de la solicitud\\ncausado por: Publicación \\\"https://ec2.us-west-2.amazonaws.com/\\\": marque tcp <dirección IP>: i/o tiempo de espera\")
  • Couldn't connect to host, port: imap.mail.<region>.awsapps.com,<port>; timeout -1 (No se pudo conectar al host, puerto: imap.mail.<región>.awsapps.com,<puerto>; tiempo de espera -1)
  • java.net .SocketTimeoutException: connect timed out (Se agotó el tiempo de espera de la conexión)
  • Connection could not be created to jdbc:postgresql://<hostname>.<region>.rds.amazonaws.com:5432/ (No se pudo crear la conexión con jdbc:postgresql://<nombre de host>.<región>.rds.amazonaws.com: 5432/)
  • <URL>.<region>.rds.amazonaws.com (<IPaddress>:3306): Operation timed out (<URL>.<región>.rds.amazonaws.com [<IPaddress>:3306]: se agotó el tiempo de espera de la operación)
  • 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*** (Error: java.sql.sqlNonTransientConnectionException: no se pudo conectar con la dirección =[host=<nombre de host>.<región>.rds.amazonaws.com][puerto=3306][tipo=master]: el socket no se puede conectar con el host:<nombre de host>.<región>.rds.amazonaws.com , puerto:3306. Se agotó el tiempo de espera de conexión***)
  • 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.apache.kafka.clients.NetworkClient - [ID de cliente del productor=productor-1] Conexión al nodo -1 [<nombre de host>.c3.kafka.<región>.amazonaws.com/<dirección IP>:9092] no se pudo establecer). Es posible que el agente no esté disponible.

Estos errores se producen a causa de problemas de conexión a la red que pueden deberse a una configuración incorrecta de Amazon Virtual Private Cloud (Amazon VPC). Para resolver estos problemas, compruebe los grupos de seguridad y las listas de control de acceso (ACL) a la red que están asociados a lo siguiente:

  • Instancias de nodos de trabajo
  • Servicios a los que los pods intentan conectarse

Resolución

Por lo general, se producen errores de tiempo de espera de conexión cuando las reglas del grupo de seguridad o las ACL de red deniegan explícitamente los permisos necesarios.

Para resolver estos errores, confirme lo siguiente para comprobar que el entorno esté configurado correctamente:

  • Sus grupos de seguridad cumplen con los requisitos de Amazon EKS.
  • Sus grupos de seguridad para pods permiten que los pods se comuniquen entre sí.
  • La ACL de red no deniega la conexión.
  • Su subred tiene una ruta local para comunicarse dentro de su Amazon VPC.
  • Sus pods están programados y en estado DE EJECUCIÓN.
  • Dispone de la última versión disponible del complemento Amazon VPC Container Network Interface (CNI) para Kubernetes.
  • Las subredes de VPC de su clúster tienen un punto de conexión de la interfaz de VPC para los servicios de AWS a los que sus pods necesitan acceder.

Sus grupos de seguridad cumplen con los requisitos de Amazon EKS

Asegúrese de que las reglas de entrada y salida permitan el tráfico en los protocolos y puertos que los nodos de trabajo utilizan para comunicarse con otros servicios. Se recomienda permitir que todo el tráfico fluya entre el clúster y los nodos y permitir que todo el tráfico saliente llegue a cualquier destino. No es necesario cambiar las reglas del grupo de seguridad cada vez que se crea un nuevo pod con un puerto nuevo. Para obtener más información, consulte los requisitos y consideraciones sobre los grupos de seguridad de Amazon EKS.

Sus grupos de seguridad para pods permiten que los pods se comuniquen entre sí

Si utiliza grupos de seguridad para pods o redes personalizadas, puede adjuntar cualquier grupo de seguridad a los pods. En este caso, confirme que los grupos de seguridad permiten la comunicación entre los pods.

La ACL de red no deniega la conexión

  • Confirme que el tráfico entre el clúster de Amazon EKS y el CIDR de VPC fluya libremente en la ACL de red.
  • Considere la posibilidad de configurar las ACL de red con reglas similares a las de los grupos de seguridad.

Su subred tiene una ruta local para comunicarse dentro de la VPC

Confirme que las subredes tienen la ruta de comunicación predeterminada dentro de la VPC. Para obtener más información, consulte los requisitos y consideraciones sobre la VPC y las subredes de Amazon EKS.

Los pods están programados y en estado RUNNING (En ejecución)

Confirme que los pods estén programados y en estado RUNNING (En ejecución). Para solucionar problemas de estado de los pods, consulte ¿Cómo puedo solucionar problemas de estado de los pods en Amazon EKS?

Dispone de la última versión disponible del complemento Amazon VPC CNI para Kubernetes.

Si no utiliza la última versión disponible del complemento Amazon VPC CNI para Kubernetes, considere la posibilidad de actualizar a la versión más reciente.

Si sigue teniendo problemas, consulte ¿Cómo resuelvo los problemas del complemento CNI o Kubelet para Amazon EKS?

Las subredes de VPC de su clúster tienen que tener una interfaz del punto de conexión de VPC para los servicios a los que sus pods necesitan acceder

En la siguiente tabla se enumeran algunos servicios y puntos de conexión que se utilizan con frecuencia:

ServicioPunto de conexión
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) (obligatorio cuando se utilizan roles de IAM para cuentas de servicio)com.amazonaws.region-code.sts
AWS App Mesh No se admite el controlador de App Mesh para Kubernetes. Para obtener más información, consulte Controlador de App Mesh en el sitio web de GitHub. Se admite Cluster Autoscaler. Al implementar los pods de Cluster Autoscaler, asegúrese de que la línea de comandos incluya --aws-use-static-instance-list=true. Para obtener más información, consulte Usar una lista de instancias estática en el sitio web de GitHub. La VPC del nodo de trabajo también debe incluir el punto de conexión de VPC de AWS STS y el punto de conexión de Amazon EC2 Auto Scaling.com.amazonaws.region-code.appmesh-envoy-management

Para obtener una lista completa de los puntos de conexión, consulte los servicios de AWS que se integran con AWS PrivateLink.

Asegúrese de que el grupo de seguridad del punto de conexión de VPC tenga reglas de entrada que permitan el tráfico desde los nodos de trabajo.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año