Um die Ursache von Problemen mit Google Kubernetes Engine (GKE) zu ermitteln, müssen Sie oft den Live-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 die Ursache eines Problems ermitteln.
Diese Informationen sind wichtig für Plattformadministratoren und ‑betreiber, die detaillierte Cluster-Integritätsprüfungen durchführen, Ressourcen verwalten und Infrastrukturprobleme auf granularer Ebene beheben müssen. Außerdem ist es für Anwendungsentwickler unerlässlich, das Anwendungsverhalten zu debuggen, Pod-Logs und -Ereignisse zu prüfen und den genauen Status ihrer Bereitstellungen in der Kubernetes-Umgebung zu verifizieren. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Hinweis
Führen Sie vor dem Start die folgenden Aufgaben aus:
- Installieren Sie kubectl.
Konfigurieren Sie das
kubectl-Befehlszeilentool für die Kommunikation mit Ihrem Cluster:gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATIONErsetzen Sie Folgendes:
CLUSTER_NAME: Der Name Ihres Clusters.LOCATION: der Compute Engine-Standort der Steuerungsebene Ihres Clusters. Geben Sie eine Region für regionale Cluster oder eine Zone für zonale Cluster an.
Prüfen Sie Ihre Berechtigungen. Mit dem Befehl
kubectl auth can-ikö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 nodeshaben, führen Sie den Befehlkubectl auth can-i get nodesaus.Wenn Sie die erforderlichen Berechtigungen haben, gibt der Befehl
yeszurück. Andernfalls gibt ernozurü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 können Sie sich einen Überblick über die Vorgänge in Ihrem Cluster verschaffen. 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 nodesDie 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.1785003Bei jedem anderen Status als
Readyist eine zusätzliche Untersuchung erforderlich.So prüfen Sie, ob Ihre Pods fehlerfrei sind:
kubectl get pods --all-namespacesDie 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 4d23hBei jedem anderen Status als
Runningist eine zusätzliche Untersuchung erforderlich. Hier sind einige häufige Status, die angezeigt werden können: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 erkannt haben, müssen Sie weitere Details abrufen. Ein Beispiel für ein Problem ist ein Pod, der nicht den Status Running hat. Verwenden Sie den Befehl kubectl describe, um weitere Details zu erhalten.
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, wie der Namespace lautet, sehen Sie sich die SpalteNamespacein der Ausgabe des Befehlskubectl get podsan.
Die Ausgabe des Befehls kubectl describe enthält detaillierte Informationen zu Ihrer Ressource. Hier sind einige der hilfreichsten Abschnitte, die Sie sich bei der Fehlerbehebung für einen Pod ansehen 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 Werte 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 AbschnittEventsfinden Sie oft direkte Hinweise darauf, warum ein Pod fehlschlägt.
Wie beim Befehl kubectl get können Sie mit dem Befehl kubectl describe mehr über verschiedene Arten von Ressourcen erfahren. Eine vollständige Liste der Ressourcen, die Sie sich ansehen 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).
Im Beispielszenario zur Fehlerbehebung werden diese Konzepte in die Praxis umgesetzt.
Informationen 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, finden Sie unter Support erhalten weitere Hilfe, einschließlich Ratschlägen zu den folgenden Themen:
- Sie können eine Supportanfrage stellen, indem Sie sich an Cloud Customer Care wenden.
- Support von der Community erhalten, indem Sie Fragen auf Stack Overflow stellen und mit dem Tag
google-kubernetes-enginenach ähnlichen Problemen suchen. Sie können auch dem#kubernetes-engine-Slack-Kanal beitreten, um weiteren Community-Support zu erhalten. - Probleme oder Feature Requests über den öffentlichen Issue Tracker melden.