Clusterstatus mit kubectl untersuchen


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 von kubectl-Befehlen haben. Wenn Sie beispielsweise prüfen möchten, ob Sie die Berechtigung zum Ausführen von kubectl get nodes haben, führen Sie den Befehl kubectl auth can-i get nodes aus.

    Wenn Sie die erforderlichen Berechtigungen haben, gibt der Befehl yes zurück. Andernfalls gibt der Befehl no 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:

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

  2. 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 Spalte Namespace in der Ausgabe des Befehls kubectl 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 Abschnitt Events 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