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 unter, 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 bietet 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 zur Bedienung 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 von Ressourcen in der VPC wie EC2-Instances, Load Balancers oder der Kubernetes-Steuerungsebene aus nicht erreichbar.

Mögliche Ursachen:

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

  • Der Gateway-Leader-Pod läuft nicht oder die Einrichtung wurde 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-Routing-Tabelle. Stellen Sie sicher, dass Routen für Ihre Hybrid-Pod-CIDRs existieren und auf die primäre ENI der aktiven Gateway-Instance verweisen:

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

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

  2. Prüfen Sie den Gateway-Pod-Status 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 Leasingvertrag erfüllt, finden Sie weitere Informationen unterFragen zur Wahl des Vorsitzenden.

  3. Überprüfen Sie die Cilium VTEP-Konfiguration auf Hybridknoten. Stellen Sie sicher, dass die CiliumVTEPConfig Ressource existiert 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-Adresse hat, hat das Gateway das Leader-Setup möglicherweise nicht abgeschlossen.

  4. Überprüfen Sie das source/destination Häkchen. 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 sie. Siehe Erste Schritte mit dem EKS Hybrid Nodes Gateway.

Webhook-Aufrufe an Hybridknoten schlagen fehl

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

Mögliche Ursachen:

  • Das Gateway leitet den Datenverkehr nicht 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 Steuerungsebene die IP-Adresse des Gateway-Knotens erreichen kann. Die Steuerungsebene sendet den Datenverkehr an die VPC-Routing-Tabelle, die ihn an die ENI des Gateways weiterleitet. Bestätigen Sie anhand der Schritte unter, ob die Einträge in der VPC-Routing-Tabelle korrekt sind. Pods auf Hybridknoten, die von VPC aus nicht erreichbar sind

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

    kubectl get ciliumvtepconfig hybrid-gateway -o yaml

    Wenn der Tunnelendpunkt veraltet ist (er zeigt 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.

Die Aktualisierung der VPC-Routing-Tabelle schlägt fehl

In den Gateway-Protokollen werden Fehler im Zusammenhang mit den Vorgängen der VPC-Routing-Tabelle angezeigt, 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 Routing-Tabellen-IDs in der Konfiguration sind falsch oder die Routing-Tabellen 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 zugeordnet ist.

  2. Überprüfen Sie die Routing-Tabellen-IDs in der Konfiguration. Stellen Sie sicher, dass die ROUTE_TABLE_IDS Umgebungsvariable gültige Routing-Tabellen-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 Routing-Tabellen-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 Routing-Tabellenfehler. Suchen Sie nach Fehlermeldungen im Zusammenhang mit Routingtabellenoperationen:

    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 Routing-Tabelle nicht beschreiben. Überprüfen Sie die IAM-Berechtigungen und Routing-Tabellen-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 ID der Routing-Tabelle 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 in CrashLoopBackOff oder im Pending Status, oder der Integritätsendpunkt gibt einen Fehler zurück. Error

Mögliche Ursachen:

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

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

  • Einschränkungen bei 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 fehlgeschlagenen 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 auf einem 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, wenn dies nicht der Fall ist. Suchen Sie IP forwarding is not enabled in den Pod-Protokollen 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 sie hinzu. /etc/sysctl.d/

  4. Überprüfen Sie die Knotenbezeichnung und die Zeitplanungsbeschränkungen. Die Gateway-Pods benötigen Knoten mit dem hybrid-gateway-node=true Label. Die Pod-Anti-Affinität stellt sicher, dass jeder Pod auf einem separaten Knoten ausgeführt wird. Wenn dies bei Pods der Fall Pending ist, überprüfen Sie, ob Planungsprobleme vorliegen:

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

    Achten Sie auf Ereignisse, die auf unzureichende Nodes, fehlende Labels oder Anti-Affinitätskonflikte hinweisen.

Fragen zur Wahl des Vorsitzenden

Die Gateway-Pods laufen, aber kein Pod erhält den Leader-Lease, 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 Führers sind falsch konfiguriert.

Diagnoseschritte:

  1. Überprüfen Sie das Lease-Objekt. Stellen Sie sicher, dass der Mietvertrag 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 die update Verben für die leases Ressource in der coordination.k8s.io API-Gruppe enthalten.

  3. Überprüfe die Pod-Logs auf Leasingfehler. Suchen Sie in den Pod-Protokollen nach Fehlern bei der Wahl des Führers:

    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 weniger als ist--leader-election-lease-duration. Wenn die Verlängerungsfrist die Mietdauer überschreitet, verliert der Leader den Mietvertrag, bevor er verlängert werden kann. Weitere Informationen finden Sie unter Abstimmung der Wahl der Spitzenpolitiker.

Häufige Fehlermeldungen

In der folgenden Tabelle sind Fehlermeldungen, die möglicherweise in den Gateway-Pod-Protokollen angezeigt werden, und 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 eingestellt.

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 in der Regel auf, wenn dem Pod die entsprechenden Funktionen fehlen. NET_ADMIN

Stellen Sie sicher, dass die Bereitstellungsspezifikation NET_ADMIN in securityContext.capabilities.add Folgendes enthält. 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-Routing-Tabellen beschreiben.

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

Failed to update route tables

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

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

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 entsprechenden 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.

Überprüfen Sie, ob die Pod-Spezifikationssätze status.hostIP mithilfe NODE_IP von a fieldRef verwendet werden. Stellen Sie sicher, dass das Helm-Diagramm korrekt bereitgestellt ist.

Invalid NODE_IP

Der angegebene Wert 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 or 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 Analysieren keine gültigen Routentabellen-IDs.

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

Failed to auto-detect AWS region

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

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

Failed to auto-detect AWS instance ID

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

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

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 von Cilium IPAM zugewiesenen Pod-CIDRs 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 zum Verwalten von CiliumVTEPConfig Ressourcen verfügt.

Unable to create manager

Der Controller-Runtime-Manager konnte nicht initialisiert werden.

Überprüfen Sie die Pod-Logs auf zusätzlichen 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 in der Regel ein interner Fehler. Überprüfe die vollständigen Pod-Logs auf zusätzlichen Kontext und melde das Problem im GitHub Repository.

Unable to create Node controller

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

Überprüfen Sie die Pod-Logs auf zusätzlichen 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-Protokolle 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üf-Bind-Adressen.

failed to access route table <id>

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

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