Probleme mit dem Load-Balancing in Google Kubernetes Engine (GKE) können zu Dienstunterbrechungen wie HTTP-502-Fehlern führen oder den Zugriff auf Anwendungen verhindern.
In diesem Dokument erfahren Sie, wie Sie 502-Fehler von externen Ingress-Ressourcen beheben und wie Sie Load-Balancer-Logs und Diagnosetools wie check-gke-ingress verwenden, um Probleme zu identifizieren.
Diese Informationen sind wichtig für Plattformadministratoren und ‑operatoren sowie für Anwendungsentwickler, die in GKE Dienste mit Lastenausgleich konfigurieren und verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Cloud de Confiance by S3NS Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Externer Ingress erzeugt HTTP-502-Fehler
Folgen Sie der nachstehenden Anleitung, um HTTP-502-Fehler mit externen Ingress-Ressourcen zu beheben:
- Aktivieren Sie Logs für jeden Backend-Dienst, der jedem GKE-Dienst zugeordnet ist, auf den der Ingress verweist.
- Verwenden Sie Statusdetails, um Ursachen für HTTP-502-Antworten zu identifizieren. Statusdetails, die angeben, dass die HTTP-502-Antwort vom Backend stammt, erfordern eine Fehlerbehebung innerhalb der Bereitstellungs-Pods, nicht im Load-Balancer.
Nicht verwaltete Instanzgruppen
Es können HTTP-502-Fehler mit externen Ingress-Ressourcen auftreten, wenn Ihr externes Ingress nicht verwaltete Instanzgruppen-Back-Ends verwendet. Dieses Problem tritt auf, wenn alle der folgenden Bedingungen erfüllt sind:
- Der Cluster hat eine große Gesamtzahl von Knoten unter allen Knotenpools.
- Die Bereitstellungs-Pods für einen oder mehrere Services, auf die vom Ingress verwiesen wird, befinden sich nur auf wenigen Knoten.
- Dienste, auf die vom Ingress verwiesen wird, verwenden
externalTrafficPolicy: Local.
So ermitteln Sie, ob Ihr externes Ingress nicht verwaltete Instanzgruppen-Back-Ends verwendet:
Rufen Sie in der Cloud de Confiance Console die Seite Ingress auf.
Klicken Sie auf den Namen Ihres externen Ingress.
Klicken Sie auf den Namen des Load-Balancers. Die Seite Details zum Load-Balancing wird angezeigt.
Prüfen Sie in der Tabelle im Abschnitt Backend-Dienste, ob Ihr externes Ingress NEGs oder Instanzgruppen verwendet.
Verwenden Sie eine der folgenden Lösungen, um dieses Problem zu beheben.
- Verwenden Sie einen VPC-nativen Cluster.
- Verwenden Sie
externalTrafficPolicy: Clusterfür jeden Service, auf den der externe Ingress verweist. Bei dieser Lösung gehen die ursprüngliche Client-IP-Adresse in den Quellen des Pakets verloren. - Verwenden Sie die Annotation
node.kubernetes.io/exclude-from-external-load-balancers=true. Fügen Sie den Knoten oder Knotenpools, die keinen Bereitstellungs-Pod ausführen, die Annotation für einen Dienst hinzu, auf den von einem externen Ingress- oderLoadBalancer-Dienst in Ihrem Cluster verwiesen wird.
Load-Balancer-Logs zur Fehlerbehebung verwenden
Sie können Logs von internen Passthrough-Netzwerk-Load-Balancers und Logs von externen Passthrough-Netzwerk-Load-Balancer dazu verwenden, Probleme mit Load-Balancern zu beheben und Traffic von Load-Balancern mit GKE-Ressourcen zu korrelieren.
Logs werden pro Verbindung zusammengefasst und nahezu in Echtzeit exportiert. Logs werden sowohl für eingehenden als auch für ausgehenden Traffic für jeden GKE-Knoten generiert, der am Datenpfad eines LoadBalancer-Dienstes beteiligt ist. Logeinträge umfassen zusätzliche Felder für GKE-Ressourcen, z. B.:
- Clustername
- Clusterstandort
- Dienstname
- Dienst-Namespace
- Pod-Name
- Pod-Namespace
Diagnosetools zur Fehlerbehebung verwenden
Das Diagnosetool check-gke-ingress untersucht Ingress-Ressourcen auf häufige Fehlkonfigurationen. Sie können das check-gke-ingress-Tool auf folgende Weise verwenden:
- Führen Sie das
gcpdiag-Befehlszeilentool in Ihrem Cluster aus. Die Ergebnisse der Aufnahme werden im Abschnittgke/ERR/2023_004der Prüfregel angezeigt. - Verwenden Sie das
check-gke-ingress-Tool allein oder als kubectl-Plug-in. Folgen Sie dazu der Anleitung unter check-gke-ingress.