Warum kann ich von Amazon EKS keine Verbindung zu anderen AWS-Services herstellen?

Lesedauer: 5 Minute
0

Ich möchte Fehler beheben, wenn ich versuche, eine Verbindung von Amazon Elastic Kubernetes Service (Amazon EKS) zu anderen Services herzustellen.

Kurzbeschreibung

Wenn Ihre Pods keine Verbindung zu anderen Services herstellen können, erhalten Sie möglicherweise einen oder mehrere der folgenden Fehler:

  • RequestError: Die Sendeanfrage ist fehlgeschlagen\\nverursacht durch: Post \\\"https://ec2.us-west-2.amazonaws.com/\\\": dial tcp <IP address>: i/o timeout\"\
  • Es konnte keine Verbindung zum Host hergestellt werden, Port: imap.mail.<region>.awsapps.com,<port>; timeout -1
  • java.net .SocketTimeoutException: Zeitlimit für Verbindung überschritten
  • Es konnte keine Verbindung zu jdbc:postgresql://<hostname> hergestellt werden.<region>.rds.amazonaws.com:5432/
  • <URL>.<region>.rds.amazonaws.com (<IPaddress>3306): Zeitlimit für Vorgang überschritten
  • Fehler:java.sql.SQLNonTransientConnectionException: Es konnte keine Verbindung zur Adresse=( host=<hostname>hergestellt werden.<region>.rds.amazonaws.com) (port=3306) (type=master): Socket kann keine Verbindung zum Host herstellen:<hostname>. <region>.rds.amazonaws.com, Port:3306. Zeitlimit für Verbindung überschritten***
  • o.apache.kafka.clients.NetworkClient -[Producer clientId=producer-1] Verbindung zu Knoten -1 (<hostname>.c3.kafka.<region>.amazonaws.com/:9092<IPaddress>) konnte nicht ermittelt werden. Der Broker ist möglicherweise nicht verfügbar.

Diese Fehler werden aufgrund von Netzwerkverbindungsproblemen angezeigt, die möglicherweise durch eine falsche Konfiguration von Amazon Virtual Private Cloud (Amazon VPC) verursacht werden. Um diese Probleme zu beheben, überprüfen Sie die Sicherheitsgruppen und Netzwerkzugriffskontrolllisten (ACLs), die den folgenden Elementen zugeordnet sind:

  • Worker-Knoten-Instances
  • Services, zu denen die Pods versuchen, eine Verbindung herzustellen

Lösung

In der Regel erhalten Sie Timeout-Fehler für Verbindungen, wenn die Sicherheitsgruppenregeln oder Netzwerk-ACLs die erforderlichen Berechtigungen explizit verweigern.

Um diese Fehler zu beheben, überprüfen Sie, ob Ihre Umgebung korrekt eingerichtet ist, indem Sie Folgendes überprüfen:

  • Ihre Sicherheitsgruppen erfüllen die Amazon-EKS-Anforderungen.
  • Ihre Sicherheitsgruppen für Pods ermöglichen es Pods, miteinander zu kommunizieren.
  • Die Netzwerk-ACL verweigert die Verbindung nicht.
  • Ihr Subnetz verfügt über eine lokale Route für die Kommunikation innerhalb Ihrer Amazon VPC.
  • Ihre Pods sind geplant und haben den Status WIRD AUSGEFÜHRT.
  • Sie haben die neueste verfügbare Version des Amazon-VPC-Container-Network-Interface-Plug-ins (CNI) für Kubernetes.
  • Die VPC-Subnetze Ihres Clusters verfügen über einen VPC-Schnittstellenendpunkt für AWS-Services, auf die Ihre Pods zugreifen müssen.

Ihre Sicherheitsgruppen erfüllen die Amazon-EKS-Anforderungen

Stellen Sie sicher, dass die Regeln für eingehenden und ausgehenden Datenverkehr den Datenverkehr auf Protokollen und Ports zulassen, die Ihre Worker-Knoten für die Kommunikation mit anderen Services verwenden. Es hat sich bewährt, den gesamten Datenverkehr zwischen Ihrem Cluster und den Knoten fließen zu lassen und den gesamten ausgehenden Verkehr an ein beliebiges Ziel zuzulassen. Sie müssen die Sicherheitsgruppenregeln nicht jedes Mal ändern, wenn ein neuer Pod mit einem neuen Port erstellt wird. Weitere Informationen finden Sie unter Anforderungen und Überlegungen für Amazon-EKS-Sicherheitsgruppen.

Ihre Sicherheitsgruppen für Pods ermöglichen es Pods, miteinander zu kommunizieren

Wenn Sie Sicherheitsgruppen für Pods oder benutzerdefinierte Netzwerke verwenden, können Sie Ihren Pods jede Sicherheitsgruppe zuordnen. Stellen Sie in diesem Fall sicher, dass die Sicherheitsgruppen die Kommunikation zwischen den Pods zulassen.

Die Netzwerk-ACL verweigert die Verbindung nicht

  • Stellen Sie sicher, dass der Datenverkehr zwischen Ihrem Amazon-EKS-Cluster und VPC CIDR auf Ihrer Netzwerk-ACL ungehindert fließt.
  • Erwägen Sie die Einrichtung von Netzwerk-ACLs mit Regeln, die denen in Ihren Sicherheitsgruppen ähneln.

Ihr Subnetz verfügt über eine lokale Route für die Kommunikation innerhalb Ihrer VPC

Vergewissern Sie sich, dass Ihre Subnetze die Standardroute für die Kommunikation innerhalb Ihrer VPC haben. Weitere Informationen finden Sie unter Amazon-EKS-VPC- und Subnetzanforderungen und Überlegungen.

Ihre Pods sind geplant und befinden sich im Status WIRD AUSGEFÜHRT

Vergewissern Sie sich, dass Ihre Pods geplant sind und sich im Status WIRD AUSGEFÜHRT befinden. Informationen zur Fehlerbehebung bei Ihrem Pod-Status finden Sie unter Wie kann ich Probleme mit dem Pod-Status in Amazon EKS beheben?

Sie haben die neueste verfügbare Version des Amazon-VPC-CNI-Plug-ins für Kubernetes

Wenn Sie nicht die neueste verfügbare Version des Amazon-VPC-CNI-Plug-ins für Kubernetes ausführen, sollten Sie erwägen, auf die neueste Version zu aktualisieren.

Wenn weiterhin Probleme auftreten, lesen Sie unter Wie behebe ich Probleme mit Kubelet- oder CNI-Plug-ins für Amazon EKS?

Die VPC-Subnetze Ihres Clusters müssen über eine VPC-Endpunktschnittstelle für Services verfügen, auf die Ihre Pods zugreifen müssen

Einige häufig verwendete Services und Endpunkte sind in der folgenden Tabelle aufgeführt:

ServiceEndpunkt
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) (erforderlich, wenn Sie IAM-Rollen für Servicekonten verwenden)com.amazonaws.region-code.sts
AWS App Mesh Der App-Mesh-Controller für Kubernetes wird nicht unterstützt. Weitere Informationen finden Sie unter App Mesh Controller auf der GitHub-Website. Cluster Autoscaler wird unterstützt. Stellen Sie bei der Bereitstellung von Cluster-Autoscaler-Pods sicher, dass die Befehlszeile --aws-use-static-instance-list=true enthält. Weitere Informationen finden Sie unter Statische Instanceliste verwenden auf der GitHub-Website. Die Worker-Knoten-VPC muss auch den AWS-STS-VPC-Endpunkt und den Amazon-EC2-Auto-Scaling-Endpunkt enthalten.com.amazonaws.region-code.appmesh-envoy-management

Eine vollständige Liste der Endpunkte finden Sie unter AWS-Services, die in AWS PrivateLink integriert sind.

Stellen Sie sicher, dass die Sicherheitsgruppe für den VPC-Endpunkt über eingehende Regeln verfügt, die Datenverkehr von Worker-Knoten zulassen.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr