Pourquoi ne puis-je pas me connecter à d'autres services AWS depuis Amazon EKS ?

Lecture de 5 minute(s)
0

Je souhaite résoudre les erreurs que je reçois lorsque j'essaie de me connecter à d'autres services depuis Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Si vos pods ne parviennent pas à se connecter à d'autres services, il se peut que vous receviez une ou plusieurs des erreurs suivantes :

  • 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. L'agent n'est peut-être pas disponible.

Ces erreurs sont dues à des problèmes de connexion réseau qui peuvent être causés par une mauvaise configuration d'Amazon Virtual Private Cloud (Amazon VPC). Pour résoudre ces problèmes, vérifiez les groupes de sécurité et les listes de contrôle d'accès (ACL) au réseau associés aux éléments suivants :

  • Instances de composants master
  • Services auxquels les pods essaient de se connecter

Résolution

Des erreurs d'expiration du délai de connexion se produisent généralement lorsque les règles du groupe de sécurité ou les ACL du réseau refusent explicitement les autorisations requises.

Pour résoudre ces erreurs, vérifiez que votre environnement est configuré correctement en confirmant ce qui suit :

  • Vos groupes de sécurité répondent aux exigences d'Amazon EKS.
  • Vos groupes de sécurité pour les pods permettent aux pods de communiquer entre eux.
  • L'ACL du réseau ne rejette pas la connexion.
  • Votre sous-réseau dispose d'une route locale pour communiquer au sein de votre Amazon VPC.
  • Vos pods sont planifiés et sont à l'état RUNNING.
  • Vous disposez de la version la plus récente du plugin Amazon VPC de l'interface de conteneur réseau (CNI) pour Kubernetes.
  • Les sous-réseaux VPC de votre cluster disposent d'un point de terminaison d'interface VPC pour les services AWS auxquels vos pods doivent accéder.

Vos groupes de sécurité répondent aux exigences d'Amazon EKS

Assurez-vous que les règles entrantes et sortantes autorisent le trafic sur les protocoles et les ports que vos composants master utilisent pour communiquer avec d'autres services. Il est recommandé de permettre à tout le trafic de circuler entre votre cluster et vos nœuds, et d'autoriser tout le trafic sortant vers n'importe quelle destination. Vous n'avez pas besoin de modifier les règles des groupes de sécurité chaque fois qu'un nouveau pod avec un nouveau port est créé. Pour en savoir plus, reportez-vous aux Considérations et exigences relatives aux groupes de sécurité Amazon EKS.

Vos groupes de sécurité pour les pods permettent aux pods de communiquer entre eux

Si vous utilisez des groupes de sécurité pour les pods ou la mise en réseau personnalisée, vous pouvez associer n'importe quel groupe de sécurité à vos pods. Dans ce cas, vérifiez que les groupes de sécurité autorisent les pods à communiquer entre eux.

L'ACL réseau ne rejette pas la connexion

  • Vérifiez que le trafic entre votre cluster Amazon EKS et le CIDR VPC circule librement sur votre ACL du réseau.
  • Envisagez de configurer des ACL du réseau avec des règles similaires à celles de vos groupes de sécurité.

Votre sous-réseau dispose d'une route locale pour communiquer au sein de votre VPC

Vérifiez que vos sous-réseaux sont réglés sur la route par défaut pour la communication au sein du VPC. Pour des informations détaillées, reportez-vous aux Considérations et exigences relatives aux sous-réseaux et au VPC Amazon EKS.

Vos pods sont planifiés et sont à l'état RUNNING

Vérifiez que vos pods sont planifiés et sont à l'état RUNNING (EN COURS D'EXÉCUTION). Pour résoudre les problèmes liés à l'état de votre pod, reportez-vous à Comment résoudre les problèmes liés à l'état du pod dans Amazon EKS ?

Vous disposez de la version la plus récente du plugin CNI Amazon VPC pour Kubernetes

Si vous n'exécutez pas la version la plus récente du plugin CNI Amazon VPC pour Kubernetes, envisagez de passer à la dernière version.

Si les problèmes persistent, reportez-vous à Comment résoudre les problèmes liés aux plugins kubelet ou CNI pour Amazon EKS ?

Les sous-réseaux VPC de votre cluster doivent disposer d'un point de terminaison d'interface d'un VPC pour les services AWS auxquels vos pods doivent accéder.

Le tableau suivant répertorie certains des services et points de terminaison couramment utilisés :

ServicePoint de terminaison
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
Service de jetons de sécurité AWS (AWS STS) (obligatoire lorsque vous utilisez des rôles IAM pour des comptes de service)com.amazonaws.region-code.sts
AWS App Mesh Le contrôleur App Mesh pour Kubernetes n'est pas pris en charge. Pour plus d'informations, reportez-vous à la section App Mesh Controller (Contrôleur App Mesh) sur le site Web de GitHub. L'autoscaler de cluster est pris en charge. Lorsque vous déployez des pods d'autoscaler de cluster, vérifiez que la ligne de commande inclut --aws-use-static-instance-list=true. Pour plus d'informations, reportez-vous à la section Use Static Instance List (Utiliser la liste d'instances statiques) sur le site Web de GitHub. Le composant master VPC doit également inclure le point de terminaison du VPC AWS STS et le point de terminaison Amazon EC2 Auto Scaling.com.amazonaws.region-code.appmesh-envoy-management

Pour obtenir la liste complète des points de terminaison, reportez-vous aux Services AWS s'intégrant à AWS PrivateLink.

Vérifiez que le groupe de sécurité du point de terminaison du VPC possède des règles entrantes qui autorisent le trafic en provenance des composants master.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an