Um die Ursache von Problemen mit Google Kubernetes Engine (GKE) zu ermitteln, müssen Sie oft den aktuellen Status, die Konfiguration und die Ereignisse Ihrer Kubernetes-Ressourcen im Detail untersuchen. Um über oberflächliche Symptome hinauszugehen, benötigen Sie Tools, mit denen Sie die Steuerungsebene des Clusters direkt abfragen und mit ihr interagieren können.
Auf dieser Seite finden Sie wichtige kubectl
-Befehle, mit denen Sie den Live-Status Ihres Clusters untersuchen können. Wenn Sie diese Befehle kennen, können Sie detaillierte Informationen direkt von der Kubernetes-Steuerungsebene abrufen und so besser nachvollziehen, warum ein Problem auftritt.
Diese Informationen sind wichtig für Plattformadministratoren und ‑operatoren, die detaillierte Cluster-Systemdiagnosen durchführen, Ressourcen verwalten und Infrastrukturprobleme auf granularer Ebene beheben müssen. Außerdem ist es für Anwendungsentwickler unerlässlich, das Verhalten von Anwendungen zu debuggen, Pod-Logs und -Ereignisse zu prüfen und den genauen Status ihrer Bereitstellungen in der Kubernetes-Umgebung zu überprüfen. Weitere Informationen zu den gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Installieren Sie kubectl.
Konfigurieren Sie das
kubectl
-Befehlszeilentool für die Kommunikation mit Ihrem Cluster:gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Der Name Ihres Clusters.LOCATION
: der Compute Engine-Standort der Steuerungsebene Ihres Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.
Prüfen Sie Ihre Berechtigungen. Mit dem Befehl
kubectl auth can-i
können Sie prüfen, ob Sie die erforderlichen Berechtigungen zum Ausführen vonkubectl
-Befehlen haben. Wenn Sie beispielsweise prüfen möchten, ob Sie die Berechtigung zum Ausführen vonkubectl get nodes
haben, führen Sie den Befehlkubectl auth can-i get nodes
aus.Wenn Sie die erforderlichen Berechtigungen haben, gibt der Befehl
yes
zurück. Andernfalls gibt der Befehlno
zurück.Wenn Sie keine Berechtigung zum Ausführen eines
kubectl
-Befehls haben, wird möglicherweise eine Fehlermeldung wie die folgende angezeigt:Error from server (Forbidden): pods "POD_NAME" is forbidden: User "USERNAME@DOMAIN.com" cannot list resource "pods" in API group "" in the namespace "default"
Wenn Sie nicht die erforderlichen Berechtigungen haben, bitten Sie Ihren Clusteradministrator, Ihnen die erforderlichen Rollen zuzuweisen.
Übersicht über laufende Prozesse
Mit dem Befehl kubectl get
erhalten Sie einen Gesamtüberblick über die Vorgänge in Ihrem Cluster. Mit den folgenden Befehlen können Sie den Status von zwei der wichtigsten Clusterkomponenten, Knoten und Pods, aufrufen:
So prüfen Sie, ob Ihre Knoten fehlerfrei sind:
kubectl get nodes
Die Ausgabe sieht etwa so aus:
NAME STATUS ROLES AGE VERSION gke-cs-cluster-default-pool-8b8a777f-224a Ready <none> 4d23h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-egb2 Ready <none> 4d22h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-p5bn Ready <none> 4d22h v1.32.3-gke.1785003
Bei allen anderen Status als
Ready
ist eine zusätzliche Untersuchung erforderlich.So prüfen Sie, ob Ihre Pods fehlerfrei sind:
kubectl get pods --all-namespaces
Die Ausgabe sieht etwa so aus:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system netd-6nbsq 3/3 Running 0 4d23h kube-system netd-g7tpl 3/3 Running 0 4d23h
Bei allen anderen Status als
Running
ist eine zusätzliche Untersuchung erforderlich. Im Folgenden finden Sie einige häufige Status:Running
: Ein fehlerfreier, laufender Zustand.Pending
: Der Pod wartet darauf, auf einem Knoten geplant zu werden.CrashLoopBackOff
: Die Container im Pod stürzen in einer Schleife immer wieder ab, weil die App gestartet wird, mit einem Fehler beendet wird und dann von Kubernetes neu gestartet wird.ImagePullBackOff
: Der Pod kann das Container-Image nicht abrufen.
Die vorherigen Befehle sind nur zwei Beispiele dafür, wie Sie den Befehl kubectl
get
verwenden können. Sie können den Befehl auch verwenden, um mehr über viele Arten von Kubernetes-Ressourcen zu erfahren. Eine vollständige Liste der Ressourcen, die Sie untersuchen können, finden Sie in der Kubernetes-Dokumentation unter kubectl get.
Weitere Informationen zu bestimmten Ressourcen
Nachdem Sie ein Problem identifiziert haben, müssen Sie weitere Details dazu abrufen. Ein Beispiel für ein Problem ist ein Pod, der nicht den Status Running
hat. Weitere Details erhalten Sie mit dem Befehl kubectl describe
.
Führen Sie beispielsweise den folgenden Befehl aus, um einen bestimmten Pod zu beschreiben:
kubectl describe pod POD_NAME -n NAMESPACE_NAME
Ersetzen Sie Folgendes:
POD_NAME
: Der Name des Pods, bei dem Probleme auftreten.NAMESPACE_NAME
: der Namespace, in dem sich der Pod befindet. Wenn Sie sich nicht sicher sind, welcher Namespace verwendet wird, sehen Sie sich die SpalteNamespace
in der Ausgabe des Befehlskubectl get pods
an.
Die Ausgabe des Befehls kubectl describe
enthält detaillierte Informationen zu Ihrer Ressource. Hier sind einige der hilfreichsten Abschnitte, die Sie bei der Fehlerbehebung eines Pods überprüfen sollten:
Status
: Der aktuelle Status des Pods.Conditions
: Der allgemeine Zustand und die Bereitschaft des Pods.Restart Count
: Wie oft die Container im Pod neu gestartet wurden. Hohe Zahlen können Anlass zur Sorge geben.Events
: Ein Log wichtiger Ereignisse, die für diesen Pod aufgetreten sind, z. B. die Planung auf einem Knoten, das Herunterladen des Container-Images und ob Fehler aufgetreten sind. Im AbschnittEvents
finden Sie oft die direkten Hinweise darauf, warum ein Pod fehlschlägt.
Wie beim Befehl kubectl get
können Sie mit dem Befehl kubectl describe
weitere Informationen zu mehreren Ressourcentypen abrufen. Eine vollständige Liste der Ressourcen, die Sie untersuchen können, finden Sie in der Kubernetes-Dokumentation unter kubectl describe.
Nächste Schritte
Lesen Sie Verlaufsanalyse mit Cloud Logging durchführen (nächste Seite in dieser Reihe).
Hinweise zur Behebung bestimmter Probleme finden Sie in den Anleitungen zur Fehlerbehebung für GKE.
Wenn Sie in der Dokumentation keine Lösung für Ihr Problem finden, lesen Sie den Abschnitt Support erhalten. Dort finden Sie weitere Hilfe, z. B. zu den folgenden Themen:
- Sie können eine Supportanfrage erstellen, indem Sie sich an den Cloud Customer Care wenden.
- Support von der Community erhalten, indem Sie Fragen auf Stack Overflow stellen und mit dem Tag
google-kubernetes-engine
nach ähnlichen Problemen suchen. Sie können auch dem#kubernetes-engine
-Slack-Kanal beitreten, um weiteren Community-Support zu erhalten. - Sie können Fehler melden oder Funktionsanfragen stellen, indem Sie die öffentliche Problemverfolgung verwenden.