Auf dieser Seite wird beschrieben, wie Sie Probleme im Zusammenhang mit dem Load-Balancing in Google Kubernetes Engine-Clustern (GKE) mithilfe von Dienst-, Ingress- oder Gateway-Ressourcen beheben.
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 des Ingress 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.