View a markdown version of this page

Fehlerbehebung beim Amazon EKS Hybrid Nodes Gateway - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung beim Amazon EKS Hybrid Nodes Gateway

Diese Seite enthält Anleitungen zur Diagnose und Lösung häufiger Probleme mit dem Amazon EKS Hybrid Nodes Gateway. Jeder Abschnitt beschreibt ein Symptom, mögliche Ursachen, Diagnoseschritte und Lösungen. Einzelheiten zum Betrieb finden Sie unterGateway-Betrieb von Amazon EKS Hybrid Nodes.

Pods auf Hybridknoten, die von VPC aus nicht erreichbar sind

Pods, die auf Hybridknoten ausgeführt werden, sind über Ressourcen in der VPC, wie EC2-Instances, Load Balancer oder die Kubernetes-Steuerebene, nicht erreichbar.

Mögliche Ursachen:

  • Einträge in der VPC-Routentabelle fehlen oder verweisen auf die falsche ENI.

  • Der Gateway-Leader-Pod läuft nicht oder hat die Einrichtung noch nicht abgeschlossen.

  • Cilium VTEP ist auf den Hybridknoten nicht aktiviert oder konfiguriert.

  • Source/destination check ist auf der Gateway-EC2-Instance aktiviert.

Diagnoseschritte:

  1. Überprüfen Sie die Einträge in der VPC-Routentabelle. Stellen Sie sicher, dass Routen für Ihre Hybrid-Pod-CIDRs existieren und auf die primäre ENI der aktiven Gateway-Instanz verweisen:

    aws ec2 describe-route-tables \ --route-table-ids ROUTE_TABLE_ID \ --query "RouteTables[].Routes[?DestinationCidrBlock=='[.replaceable]`POD_CIDR`']"

    Wenn Routen fehlen, überprüfen Sie die Gateway-Protokolle auf Fehler in der Routentabelle. Wenn Routen auf die falsche ENI verweisen, wurde ein Failover möglicherweise nicht erfolgreich abgeschlossen.

  2. Überprüfen Sie den Status des Gateway-Pods und die Wahl des Leiters. Vergewissern Sie sich, dass zwei Gateway-Pods laufen und einer den Leader-Lease besitzt:

    kubectl get pods -n eks-hybrid-nodes-gateway kubectl get lease -n eks-hybrid-nodes-gateway

    Wenn kein Pod den Lease besitzt, finden Sie weitere Informationen unterProbleme bei der Wahl von Führungskräften.

  3. Überprüfen Sie die Cilium VTEP-Konfiguration auf Hybridknoten. Stellen Sie sicher, dass die CiliumVTEPConfig Ressource vorhanden ist und die Knoten-IP des Leaders enthält:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    Die spec.endpoints[0].tunnelEndpoint sollte mit der IP-Adresse des Leader-Gateway-Knotens übereinstimmen. Wenn die Ressource fehlt oder eine veraltete IP hat, hat das Gateway die Leader-Einrichtung möglicherweise nicht abgeschlossen.

  4. Überprüfen Sie, source/destination ob. Stellen Sie sicher, dass die source/destination Prüfung auf den Gateway-EC2-Instances deaktiviert ist:

    aws ec2 describe-instance-attribute \ --instance-id GATEWAY_INSTANCE_ID \ --attribute sourceDestCheck

    Wenn ja sourceDestChecktrue, deaktivieren Sie es. Siehe Erste Schritte mit dem EKS Hybrid Nodes Gateway.

Webhook-Aufrufe an Hybridknoten schlagen fehl

Der Kubernetes-API-Server kann keine Webhook-Endpunkte erreichen, die auf Hybridknoten ausgeführt werden. Bei Webhook-Zulassungsanfragen kommt es zu einer Zeitüberschreitung oder es treten Verbindungsfehler auf.

Mögliche Ursachen:

  • Das Gateway leitet keinen Verkehr von der Steuerungsebene zu den Hybrid-Pods weiter.

  • Die CiliumVTEPConfig Ressource fehlt oder hat eine veraltete Endpunkt-IP.

Diagnoseschritte:

  1. Stellen Sie sicher, dass die Steuerebene die Gateway-Knoten-IP erreichen kann. Die Kontrollebene sendet den Datenverkehr an die VPC-Routentabelle, die ihn an die ENI des Gateways weiterleitet. Vergewissern Sie sich anhand der Schritte unter, dass die Einträge in Pods auf Hybridknoten, die von VPC aus nicht erreichbar sind der VPC-Routentabelle korrekt sind.

  2. Überprüfen Sie die CiliumVTEPConfig-Ressource. Stellen Sie sicher, dass die Ressource existiert und mit der Knoten-IP des aktuellen Leaders tunnelEndpoint übereinstimmt:

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    Wenn der Tunnelendpunkt veraltet ist (verweist auf einen früheren Leader), hat das Gateway die Leader-Setup-Sequenz möglicherweise nicht abgeschlossen. Überprüfen Sie die Gateway-Protokolle auf Fehler beim CiliumVTEPConfig Upsert.

Aktualisierungen der VPC-Routetabellen schlagen fehl

Die Gateway-Protokolle zeigen Fehler im Zusammenhang mit VPC-Routentabellenoperationen, und Routen für Hybrid-Pod-CIDRs werden nicht erstellt oder aktualisiert.

Mögliche Ursachen:

  • Die IAM-Rolle des Gateways verfügt nicht über die erforderlichen EC2-Berechtigungen.

  • Die Routentabellen-IDs in der Konfiguration sind falsch oder die Routentabellen sind nicht vorhanden.

  • Das Gateway kann den EC2-API-Endpunkt nicht erreichen.

Diagnoseschritte:

  1. Überprüfen Sie die IAM-Berechtigungen. Das Gateway erfordert die folgenden IAM-Aktionen:

    • ec2:DescribeRouteTables

    • ec2:CreateRoute

    • ec2:ReplaceRoute

    • ec2:DescribeInstances

      Überprüfen Sie die IAM-Rolle, die dem Instanzprofil oder der Pod-Identitätskonfiguration des Gateway-Knotens zugewiesen ist.

  2. Überprüfen Sie die Routentabellen-IDs in der Konfiguration. Stellen Sie sicher, dass die ROUTE_TABLE_IDS Umgebungsvariable gültige Routentabellen-IDs in der Gateway-Bereitstellung enthält:

    kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].env}' | jq .

    Vergewissern Sie sich, dass die Routentabellen-IDs in Ihrer VPC vorhanden sind:

    aws ec2 describe-route-tables --route-table-ids ROUTE_TABLE_ID
  3. Überprüfen Sie die Gateway-Protokolle auf Fehler in der Routentabelle. Suchen Sie nach Fehlermeldungen im Zusammenhang mit Routentabellenoperationen:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD | grep -i "route table"

    Zu den häufigsten Fehlermeldungen gehören:

    • Failed to verify route table access— Das Gateway kann die Routentabelle nicht beschreiben. Überprüfen Sie die IAM-Berechtigungen und die Routentabellen-IDs.

    • Failed to update route tables— Das Gateway kann keine Routen erstellen oder ersetzen. Überprüfen Sie die IAM-Berechtigungen.

    • failed to access route table— Die Routentabellen-ID ist möglicherweise falsch oder die IAM-Rolle fehlt. ec2:DescribeRouteTables

Gateway-Pods können nicht gestartet werden oder sind fehlerhaft

Gateway-Pods befinden sich im Pending Status CrashLoopBackOffError, oder, oder der Integritätsendpunkt gibt einen Fehler zurück.

Mögliche Ursachen:

  • Erforderliche Umgebungsvariablen (VPC_CIDR,POD_CIDRS,ROUTE_TABLE_IDS) sind nicht festgelegt.

  • Die IP-Weiterleitung ist auf dem Gateway-Knoten nicht aktiviert.

  • Einschränkungen bezüglich der Knotenbezeichnung oder der Anti-Affinität verhindern die Planung.

Diagnoseschritte:

  1. Überprüfen Sie die Pod-Protokolle. Sehen Sie sich die Protokolle für den ausgefallenen Pod an, um den Fehler zu identifizieren:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD
  2. Überprüfen Sie die erforderlichen Umgebungsvariablen. Das Gateway benötigt NODE_IPVPC_CIDR, undPOD_CIDRS. Wenn welche fehlen, wird das Gateway sofort beendet. Überprüfen Sie die Pod-Spezifikation:

    kubectl get pod -n eks-hybrid-nodes-gateway LEADER_POD -o jsonpath='{.spec.containers[0].env}' | jq .
    • NODE_IPwird automatisch status.hostIP in der Pod-Spezifikation festgelegt. Wenn es leer ist, ist der Pod möglicherweise noch nicht für einen Knoten geplant.

    • VPC_CIDRund POD_CIDRS stammen aus den Helm-Werten. Stellen Sie sicher, dass sie richtig eingestellt sind.

  3. Überprüfen Sie die IP-Weiterleitung. Das Gateway überprüft beim Start, ob die IP-Weiterleitung aktiviert ist, und wird beendet, falls dies nicht der Fall ist. Suchen Sie IP forwarding is not enabled in den Pod-Logs nach der Fehlermeldung. Aktivieren Sie die IP-Weiterleitung auf dem Knoten:

    # Check current setting cat /proc/sys/net/ipv4/ip_forward # Enable if not set sudo sysctl -w net.ipv4.ip_forward=1

    Für eine persistente Einstellung konfigurieren Sie die IP-Weiterleitung über das Kubelet oder fügen Sie net.ipv4.ip_forward=1 zu hinzu. /etc/sysctl.d/

  4. Überprüfen Sie die Knotenbezeichnung und die Einschränkungen bei der Terminplanung. Die Gateway-Pods benötigen Knoten mit der hybrid-gateway-node=true Bezeichnung. Pod-Anti-Affinität stellt sicher, dass jeder Pod auf einem separaten Knoten ausgeführt wird. Falls dies bei Pods der Fall istPending, überprüfen Sie, ob Probleme bei der Planung vorliegen:

    kubectl describe pod -n eks-hybrid-nodes-gateway LEADER_POD

    Suchen Sie nach Ereignissen, die auf unzureichende Knoten, fehlende Labels oder Anti-Affinitätskonflikte hinweisen.

Probleme bei der Wahl von Führungskräften

Die Gateway-Pods laufen, aber kein Pod erwirbt den Leader-Leasing, oder es kommt häufig zu Führungswechseln.

Mögliche Ursachen:

  • RBAC-Berechtigungen für Lease-Objekte fehlen.

  • Die Netzwerkkonnektivität zwischen Gateway-Pods und dem Kubernetes-API-Server ist unzuverlässig.

  • Die Parameter für die Wahl des Leiters sind falsch konfiguriert.

Diagnoseschritte:

  1. Überprüfen Sie das Lease-Objekt. Stellen Sie sicher, dass der Leasingvertrag existiert, und überprüfen Sie seinen aktuellen Inhaber:

    kubectl get lease -n eks-hybrid-nodes-gateway hybrid-gateway-leader -o yaml

    Das spec.holderIdentity Feld zeigt den aktuellen Anführer. spec.renewTimeZeigt an, wann der Mietvertrag zuletzt verlängert wurde. Wenn renewTime es veraltet ist, hat der Leader möglicherweise die Verbindung zum API-Server verloren.

  2. Überprüfen Sie die RBAC-Berechtigungen. Das Gateway-Dienstkonto benötigt Berechtigungen zum Abrufen, Erstellen und Aktualisieren von Lease-Objekten im Gateway-Namespace. Überprüfen Sie die Rolle und RoleBinding:

    kubectl get role -n eks-hybrid-nodes-gateway kubectl get rolebinding -n eks-hybrid-nodes-gateway

    Die Rolle sollte getcreate, und update Verben für die leases Ressource in der coordination.k8s.io API-Gruppe enthalten.

  3. Überprüfen Sie die Pod-Logs auf Leasing-Fehler. Suchen Sie in den Pod-Logs nach Fehlern bei der Wahl von Führungskräften:

    kubectl logs -n eks-hybrid-nodes-gateway LEADER_POD | grep -i "leader\|lease"

    Häufige Probleme sind unter anderem:

    • Failed to acquire lease— Der Pod kann das Lease-Objekt nicht erstellen oder aktualisieren. Überprüfen Sie die RBAC-Berechtigungen.

    • Häufig, Leadership ended gefolgt von Leader setup complete Nachrichten — Der Leader verliert den Mietvertrag und erwirbt ihn erneut. Dies kann auf eine Netzwerkinstabilität zwischen dem Pod und dem API-Server hinweisen. Erwägen Sie eine Erhöhung--leader-election-lease-duration.

  4. Überprüfen Sie die Parameter für die Wahl des Führers. Überprüfen Sie die konfigurierten Werte:

    kubectl get deployment eks-hybrid-nodes-gateway -n eks-hybrid-nodes-gateway -o jsonpath='{.spec.template.spec.containers[0].args}'

    Stellen Sie sicher--leader-election-renew-deadline, dass es weniger als ist--leader-election-lease-duration. Wenn die Frist für die Verlängerung die Leasingdauer überschreitet, verliert der Leader das Leasing, bevor es verlängert werden kann. Weitere Informationen finden Sie unter Abstimmung der Wahl der Spitzenpolitiker.

Häufige Fehlermeldungen

In der folgenden Tabelle sind die Fehlermeldungen, die Sie möglicherweise in den Gateway-Pod-Logs sehen, sowie deren Lösungen aufgeführt.

Fehlermeldung Ursache Auflösung

IP forwarding is not enabled

Der Kernel-Parameter net.ipv4.ip_forward ist 1 auf dem Gateway-Knoten nicht auf gesetzt.

Aktivieren Sie die IP-Weiterleitung über die Kubelet-Konfiguration oder durch Ausführen. sysctl -w net.ipv4.ip_forward=1

Failed to setup VXLAN

Das Gateway kann die VXLAN-Netzwerkschnittstelle nicht erstellen. Dies tritt normalerweise auf, wenn der Pod nicht über die erforderlichen Funktionen verfügt. NET_ADMIN

Vergewissern Sie sich, dass die Bereitstellungsspezifikation Folgendes umfasst:NET_ADMIN. securityContext.capabilities.add Vergewissern Sie sich, dass das Helm-Diagramm korrekt bereitgestellt wurde.

Failed to verify route table access

Das Gateway kann beim Start keine oder mehrere VPC-Routentabellen beschreiben.

Stellen Sie sicher, dass die IAM-Rolle über die ec2:DescribeRouteTables erforderlichen Berechtigungen verfügt und dass die Routentabellen-IDs in der Konfiguration korrekt sind.

Failed to update route tables

Das Gateway kann keine Routen in den VPC-Routentabellen erstellen oder ersetzen.

Stellen Sie sicher, dass die IAM-Rolle über die erforderlichen Berechtigungen verfügtec2:CreateRoute. ec2:ReplaceRoute

Failed to create route table manager

Das Gateway kann den AWS EC2-Client nicht initialisieren oder die primäre ENI der Instance abrufen.

Stellen Sie sicher, dass die IAM-Rolle über die erforderlichen ec2:DescribeInstances Berechtigungen verfügt und dass auf den Instance-Metadatendienst (IMDS) zugegriffen werden kann.

NODE_IP is required

Die NODE_IP Umgebungsvariable oder das --node-ip Flag ist nicht gesetzt.

Stellen Sie sicher, dass die Pod-Spezifikationssätze NODE_IP a status.hostIP fieldRef verwenden. Vergewissern Sie sich, dass das Helm-Diagramm korrekt bereitgestellt wurde.

Invalid NODE_IP

Der angegebene Wert für NODE_IP ist keine gültige IP-Adresse.

Überprüfen Sie den Wert der NODE_IP Umgebungsvariablen in der Pod-Spezifikation.

pod-cidrs and vpc-cidr are required

Die VPC_CIDR Umgebungsvariable POD_CIDRS oder ist leer.

Stellen Sie die Werte podCIDRs und vpcCIDR Helm während der Installation ein.

No valid route table IDs provided

Der ROUTE_TABLE_IDS Wert wurde gesetzt, enthält aber nach dem Parsen keine gültigen Routentabellen-IDs.

Überprüfen Sie den routeTableIDs Helm-Wert auf Formatierungsfehler. Routentabellen-IDs sollten durch Kommas getrennt sein (z. B.rtb-abc123,rtb-def456).

Failed to auto-detect AWS region

Das Gateway kann die AWS Region nicht aus den Metadaten der EC2-Instanz abrufen.

Stellen Sie sicher, dass auf den Instance-Metadatendienst (IMDS) zugegriffen werden kann. Alternativ können Sie das --aws-region Flag oder die AWS_REGION Umgebungsvariable explizit setzen.

Failed to auto-detect AWS instance ID

Das Gateway kann die Instanz-ID nicht aus den EC2-Instanz-Metadaten abrufen.

Stellen Sie sicher, dass auf den Instance-Metadatendienst (IMDS) zugegriffen werden kann. Alternativ können Sie das --aws-instance-id Flag oder die AWS_INSTANCE_ID Umgebungsvariable explizit setzen.

CiliumNode has no internal IP

Das CiliumNode Objekt eines Hybridknotens hat in seiner Spezifikation keine interne IP-Adresse.

Stellen Sie sicher, dass der Hybridknoten korrekt registriert ist und der Cilium-Agent läuft. Überprüfen Sie die CiliumNode Ressource für den Knoten.

CiliumNode <name> has no pod CIDRs allocated

Dem CiliumNode Objekt eines Hybridknotens wurden keine Pod-CIDRs von Cilium IPAM zugewiesen.

Stellen Sie sicher, dass Cilium IPAM auf dem Hybridknoten korrekt konfiguriert ist. Überprüfen Sie die CiliumNode Ressource auf den IPAM-Status des Knotens.

Failed to upsert CiliumVTEPConfig

Das Gateway kann die CiliumVTEPConfig benutzerdefinierte Ressource nicht erstellen oder aktualisieren.

Stellen Sie sicher, dass die CRD im Cluster installiert ist und das Gateway-Dienstkonto über Berechtigungen zur Verwaltung von CiliumVTEPConfig Ressourcen verfügt.

Unable to create manager

Der Controller-Runtime-Manager konnte nicht initialisiert werden.

Suchen Sie in den Pod-Logs nach zusätzlichem Kontext. Zu den häufigsten Ursachen gehören eine ungültige kubeconfig oder die Unfähigkeit, den Kubernetes-API-Server zu erreichen.

Failed to add gateway setup

Das vom Leader gewählte Runnable konnte nicht beim Controller-Manager registriert werden.

Dies ist normalerweise ein interner Fehler. Suchen Sie in den vollständigen Pod-Logs nach zusätzlichem Kontext und melden Sie das Problem im GitHub Repository.

Unable to create Node controller

Der CiliumNode Reconciler konnte nicht beim Controller-Manager registriert werden.

Suchen Sie in den Pod-Logs nach zusätzlichem Kontext. Stellen Sie sicher, dass die CiliumNode CRD im Cluster installiert ist.

Problem running manager

Der Controller-Manager wurde unerwartet beendet.

Überprüfen Sie die Pod-Logs auf den zugrunde liegenden Fehler. Zu den häufigsten Ursachen gehören der Verlust der Konnektivität zum Kubernetes-API-Server oder ein Portkonflikt bei den Metriken oder Integritätsprüfadressen.

failed to access route table <id>

Das Gateway kann während der Überprüfung der Startüberprüfung keine bestimmte VPC-Routentabelle beschreiben.

Stellen Sie sicher, dass die IAM-Rolle über die erforderlichen ec2:DescribeRouteTables Berechtigungen verfügt und dass die Routentabellen-ID korrekt ist. Die Routing-Tabelle muss in derselben Region wie die Gateway-Instanz existieren.