New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Wie behebe ich Verbindungstimeouts, wenn ich eine Verbindung zu meinem Service herstelle, der in Amazon EKS gehostet wird?
Ich erhalte Verbindungstimeouts, wenn ich eine Verbindung zu meinem Service herstelle, der in meinem Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster gehostet wird.
Kurzbeschreibung
Die häufigsten Probleme mit der Serviceverbindung treten auf, weil die Sicherheitsgruppe oder Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) den Datenverkehr von den Pod-Endpunkten einschränkt.
Um dieses Problem zu beheben, überprüfen Sie die Sicherheitsgruppen und Netzwerk-ACLs, die Ihren Worker-Knoten-Instances und dem Load Balancer zugeordnet sind. Wenn Sie einen Network Load Balancer verwenden, stellen Sie sicher, dass für Ihren Service die richtigen Labels für Ihre Pods ausgewählt wurden.
**Hinweis:**Die folgenden Lösungen gelten für Services, auf die nicht zugegriffen werden kann. Weitere Informationen zu den Kubernetes-Servicetypen finden Sie unter Wie mache ich die Kubernetes-Services verfügbar, die auf meinem Amazon-EKS-Cluster laufen?
Behebung
Überprüfen Ihrer Sicherheitsgruppe und Netzwerk-ACLs
Cluster-IP
Der Cluster-IP-Servicetyp wird für die Kommunikation zwischen Microservices verwendet, die im selben Amazon-EKS-Cluster ausgeführt werden. Stellen Sie sicher, dass die Sicherheitsgruppe für die Instance des Ziel-Pods über eine Regel für eingehenden Datenverkehr verfügt, die der Pod-Instance des Clients die Kommunikation ermöglicht.
In den meisten Fällen gibt es eine self-Regel, die die gesamte Kommunikation über alle Ports in den Arbeitsknoten-Sicherheitsgruppen zulässt. Wenn Sie mehrere Knotengruppen verwenden, von denen jede ihre eigene Sicherheitsgruppe hat, lassen Sie die gesamte Kommunikation zwischen den Sicherheitsgruppen zu. Dadurch können die Microservices, die über die mehreren Knoten laufen, problemlos kommunizieren.
Weitere Informationen finden Sie unter Anforderungen und Überlegungen zur Amazon-EKS-Sicherheitsgruppe.
Knotenport
Die Sicherheitsgruppe des Worker-Knotens muss eingehenden Datenverkehr auf dem in der Servicedefinition NodePort angegebenen Port zulassen. Wenn er nicht in der Servicedefinition angegeben ist, entspricht der Wert des Port-Parameters dem Parameter targetPort. Der Port ist auf allen Knoten im Amazon-EKS-Cluster verfügbar.
Überprüfen Sie die Netzwerk-ACLs, die mit den Worker-Knoten-Subnetzen verknüpft sind. Stellen Sie sicher, dass Ihre Client-IP-Adresse auf der Zulassungsliste über dem Port steht, den der Service verwendet.
Wenn Sie über das Internet auf den Kubernetes-Service zugreifen, vergewissern Sie sich, dass Ihre Knoten eine öffentliche IP-Adresse haben. Um auf den Service zuzugreifen, müssen Sie die Kombination aus öffentlicher IP-Adresse und Port des Knotens verwenden.
Load Balancer-Modul
Vergewissern Sie sich, dass Folgendes zutrifft:
- Die Load-Balancer-Sicherheitsgruppe erlaubt eingehende Listener-Ports.
- Die Load-Balancer-Sicherheitsgruppe lässt ausgehenden Verkehr auf dem Ziel-Traffic-Port zu.
- Die Worker-Knoten-Sicherheitsgruppe ermöglicht eingehenden Datenverkehr von der Load-Balancer-Sicherheitsgruppe über den Port, auf dem der Anwendungscontainer ausgeführt wird.
- Wenn Sie einen Network Load Balancer ohne Sicherheitsgruppenzuordnung verwenden, der die Client-IP-Erhaltung verwendet, lassen die Worker-Knoten den Client-Datenverkehr zu.
- Der Worker-Knoten lässt Datenverkehr zu, der dem targetPort entspricht, wenn er sich von dem Port unterscheidet, der im Service zugeordnet ist.
- Die Netzwerk-ACLs ermöglichen es Ihrer Client-IP-Adresse, den Load Balancer am Listener-Port zu erreichen.
- Wenn Sie über das Internet auf den Load Balancer zugreifen, haben Sie einen mit dem Internet verbundenen Load Balancer erstellt.
Bestätigen, dass Ihr Service die Pod-Endpunkte richtig ausgewählt hat
Wenn Ihre Pods nicht als Backends für den Service registriert sind, kann es sein, dass Sie einen Timeout-Fehler erhalten. Dies kann passieren, wenn Sie über einen Browser auf den Service zugreifen. Oder es kann passieren, wenn Sie den Befehl curl podIP:podPort ausführen.
Überprüfen Sie die Labels für die Pods und stellen Sie sicher, dass der Service über die entsprechenden Label-Selektoren verfügt. Weitere Informationen finden Sie unter Labels und Selektoren auf der Kubernetes-Website.
Führen Sie die folgenden Befehle aus, um zu überprüfen, ob Ihr Kubernetes-Service korrekt ausgewählt und Ihre Pods registriert wurden.
Befehl:
kubectl get pods -o wide
Beispielausgabe:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-6799fc88d8-2rtn8 1/1 Running 0 3h4m 172.31.33.214 ip-172-31-33-109.us-west-2.compute.internal none none
Befehl:
kubectl describe svc your_service_name -n your_namespace
Hinweis: Ersetzen Sie your_service_name durch Ihren Dienstnamen und your_namespace durch Ihren Namespace.
Beispielausgabe:
Events: noneSession Affinity: none Endpoints: 172.31.33.214:80 ....
In der Beispielausgabe ist 172.31.33.214 die Pod-IP-Adresse, die vom Befehl kubectl get pods -o wide zurückgegeben wird. Die IP-Adresse 172.31.33.214 dient auch als Backend für einen Service, der in einem Amazon-EKS-Cluster ausgeführt wird.

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 3 Monaten