Kubernetes Logs-Befehl

KubernetesKubernetesBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab erfahren Sie, wie Sie den Kubernetes-Befehl logs verwenden, um die Protokolle (Logs) von Pods anzuzeigen, die in einem Kubernetes-Cluster ausgeführt werden. Sie beginnen mit einfachen Beispielen und arbeiten sich schrittweise zu komplexeren Szenarien vor.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("Delete") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/exec("Exec") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") subgraph Lab Skills kubernetes/get -.-> lab-8099{{"Kubernetes Logs-Befehl"}} kubernetes/delete -.-> lab-8099{{"Kubernetes Logs-Befehl"}} kubernetes/describe -.-> lab-8099{{"Kubernetes Logs-Befehl"}} kubernetes/exec -.-> lab-8099{{"Kubernetes Logs-Befehl"}} kubernetes/logs -.-> lab-8099{{"Kubernetes Logs-Befehl"}} end

Starten des Minikube-Clusters

Bevor Sie Ressourcen erstellen können, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichte Kubernetes-Umgebung, die auf Ihrem lokalen Rechner läuft.

  1. Navigieren Sie in Ihr Arbeitsverzeichnis:

    Öffnen Sie das Terminal und navigieren Sie in den Standard-Projektordner:

    cd /home/labex/project
  2. Starten Sie Minikube:

    Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:

    minikube start
    • Dieser Befehl richtet einen Ein-Knoten-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
    • Je nach Leistung Ihres Systems kann es einige Minuten dauern, bis Minikube gestartet ist.
  3. Überprüfen Sie, ob Minikube läuft:

    Überprüfen Sie den Status des Minikube-Clusters:

    minikube status
    • Achten Sie darauf, dass Komponenten wie kubelet und apiserver als Running (Läuft) aufgeführt sind.
    • Wenn der Cluster nicht läuft, führen Sie minikube start erneut aus.

Falls Sie Probleme beim Starten von Minikube haben, können Sie minikube delete verwenden, um die Umgebung bei Bedarf zurückzusetzen.

Erkundung des kubectl logs-Befehls

Der kubectl logs-Befehl wird verwendet, um die Protokolle (Logs) eines Containers in einem Pod oder einer angegebenen Ressource auszugeben. Er unterstützt Momentaufnahmen von Protokollen, Streaming, Filterung und verschiedene andere Optionen für eine effiziente Protokollverwaltung.

Führen Sie den folgenden Befehl aus, um die verfügbaren Optionen für kubectl logs anzuzeigen:

kubectl logs -h

Sie werden die folgende Ausgabe sehen:

Gibt die Protokolle für einen Container in einem Pod oder einer angegebenen Ressource aus. Wenn der Pod nur einen Container hat, ist der Containername optional.

Beispiele:
  ## Gibt Momentaufnahmen der Protokolle aus dem Pod nginx mit nur einem Container zurück
  kubectl logs nginx

  ## Gibt Momentaufnahmen der Protokolle aus dem Pod nginx mit mehreren Containern zurück
  kubectl logs nginx --all-containers=true

  ## Gibt Momentaufnahmen der Protokolle aus allen Containern in Pods zurück, die durch das Label app=nginx definiert sind
  kubectl logs -l app=nginx --all-containers=true

  ## Gibt eine Momentaufnahme der Protokolle des zuvor beendeten ruby-Containers aus dem Pod web-1 zurück
  kubectl logs -p -c ruby web-1

  ## Beginnt mit dem Streamen der Protokolle des ruby-Containers im Pod web-1
  kubectl logs -f -c ruby web-1

  ## Beginnt mit dem Streamen der Protokolle aus allen Containern in Pods, die durch das Label app=nginx definiert sind
  kubectl logs -f -l app=nginx --all-containers=true

  ## Zeigt nur die neuesten 20 Zeilen der Ausgabe im Pod nginx an
  kubectl logs --tail=20 nginx

  ## Zeigt alle Protokolle aus dem Pod nginx an, die in der letzten Stunde geschrieben wurden
  kubectl logs --since=1h nginx

  ## Zeigt Protokolle von einem Kubelet mit einem abgelaufenen Serverzertifikat an
  kubectl logs --insecure-skip-tls-verify-backend nginx

  ## Gibt Momentaufnahmen der Protokolle aus dem ersten Container eines Jobs namens hello zurück
  kubectl logs job/hello

  ## Gibt Momentaufnahmen der Protokolle aus dem Container nginx-1 einer Deployment namens nginx zurück
  kubectl logs deployment/nginx -c nginx-1

Anzeigen von Containerprotokollen

In diesem Schritt erfahren Sie, wie Sie die Protokolle (Logs) eines in einem Pod laufenden Containers anzeigen können.

  1. Beginnen Sie mit der Erstellung eines Deployments mit einer Replik und einem Nginx-Container:

    kubectl create deployment nginx --image=nginx --replicas=1
  2. Warten Sie, bis der Pod bereit ist:

    kubectl wait --for=condition=Ready pod -l app=nginx
  3. Verwenden Sie den kubectl logs-Befehl, um die Protokolle des Nginx-Containers anzuzeigen:

    kubectl logs POD_NAME

Ersetzen Sie POD_NAME durch den Namen des in Schritt 1 erstellten Pods. Sie können den POD_NAME mit dem Befehl kubectl get pod -l app=nginx abrufen.

Anzeigen von Protokollen eines bestimmten Containers in einem Pod

In diesem Schritt erfahren Sie, wie Sie die Protokolle (Logs) eines bestimmten Containers anzeigen können, der in einem Pod läuft.

  1. Erstellen Sie einen Pod mit zwei Containern: Nginx und BusyBox:

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-busybox
    spec:
      containers:
      - name: nginx
        image: nginx
      - name: busybox
        image: busybox
        command:
          - sleep
          - "3600"
    EOF
  2. Warten Sie, bis der Pod bereit ist:

    kubectl wait --for=condition=Ready pod nginx-busybox
  3. Verwenden Sie den kubectl logs-Befehl, um die Protokolle des BusyBox-Containers anzuzeigen:

    kubectl logs nginx-busybox -c busybox

Echtzeitverfolgung von Protokollen

In diesem Schritt erfahren Sie, wie Sie Protokolle (Logs) in Echtzeit verfolgen können, während sie generiert werden.

  1. Verwenden Sie den kubectl logs-Befehl mit der Option -f, um Protokolle in Echtzeit zu verfolgen:

    kubectl logs -f nginx-busybox
  2. Öffnen Sie ein neues Terminal und erstellen Sie eine Shell im Nginx-Container:

    kubectl exec -it nginx-busybox -c nginx -- /bin/sh
  3. Generieren Sie einige Protokolle, indem Sie einen Befehl innerhalb des Containers ausführen:

    curl 127.0.0.1
  4. Wechseln Sie zurück zum ersten Terminal, in dem Sie die Protokolle verfolgen, und beobachten Sie, dass der neue Protokolleintrag angezeigt wird.

Anzeigen von Protokollen aus mehreren Containern

In diesem Schritt erfahren Sie, wie Sie die Protokolle (Logs) aus mehreren Containern anzeigen können, die in einem Pod laufen.

  1. Erstellen Sie einen Pod mit zwei Containern: Nginx und Fluentd:

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-fluentd
    spec:
      containers:
      - name: nginx
        image: nginx
      - name: fluentd
        image: fluentd
    EOF
  2. Warten Sie, bis der Pod bereit ist:

    kubectl wait --for=condition=Ready pod nginx-fluentd
  3. Verwenden Sie den kubectl logs-Befehl, um die Protokolle aus beiden Containern anzuzeigen:

    kubectl logs nginx-fluentd -c nginx
    kubectl logs nginx-fluentd -c fluentd

Zusammenfassung

Herzlichen Glückwunsch, Sie haben das Lab zu Kubernetes-Log-Befehlen erfolgreich abgeschlossen! In diesem Lab haben Sie gelernt, wie Sie die Protokolle (Logs) von Containern, die in einem Pod laufen, mit dem kubectl logs-Befehl anzeigen können. Sie haben auch gelernt, wie Sie die Protokolle von bestimmten Containern und mehreren Containern anzeigen, Protokolle in Echtzeit verfolgen und Protokolle von innerhalb eines Containers generieren können. Diese Fähigkeiten sind für die Fehlerbehebung in einem Kubernetes-Cluster unerlässlich.