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.
Starten Sie das Minikube-Cluster
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.
Navigieren Sie in Ihr Arbeitsverzeichnis:
Öffnen Sie das Terminal und navigieren Sie in den Standard-Projektordner:
cd /home/labex/projectStarten 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.
Überprüfen Sie, ob Minikube läuft:
Überprüfen Sie den Status des Minikube-Clusters:
minikube status- Achten Sie darauf, dass Komponenten wie
kubeletundapiserveralsRunning(Läuft) aufgeführt sind. - Wenn der Cluster nicht läuft, führen Sie
minikube starterneut aus.
- Achten Sie darauf, dass Komponenten wie
Falls Sie Probleme beim Starten von Minikube haben, können Sie minikube delete verwenden, um die Umgebung bei Bedarf zurückzusetzen.
Entdecken Sie den kubectl logs-Befehl
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 Container-Logs
In diesem Schritt erfahren Sie, wie Sie die Protokolle (Logs) eines in einem Pod laufenden Containers anzeigen können.
Beginnen Sie mit der Erstellung eines Deployments mit einer Replik und einem Nginx-Container:
kubectl create deployment nginx --image=nginx --replicas=1Warten Sie, bis der Pod bereit ist:
kubectl wait --for=condition=Ready pod -l app=nginxVerwenden 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 Logs aus einem bestimmten Container 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.
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" EOFWarten Sie, bis der Pod bereit ist:
kubectl wait --for=condition=Ready pod nginx-busyboxVerwenden Sie den
kubectl logs-Befehl, um die Protokolle des BusyBox-Containers anzuzeigen:kubectl logs nginx-busybox -c busybox
Echtzeitverfolgung von Logs
In diesem Schritt erfahren Sie, wie Sie Protokolle (Logs) in Echtzeit verfolgen können, während sie generiert werden.
Verwenden Sie den
kubectl logs-Befehl mit der Option-f, um Protokolle in Echtzeit zu verfolgen:kubectl logs -f nginx-busyboxÖffnen Sie ein neues Terminal und erstellen Sie eine Shell im Nginx-Container:
kubectl exec -it nginx-busybox -c nginx -- /bin/shGenerieren Sie einige Protokolle, indem Sie einen Befehl innerhalb des Containers ausführen:
curl 127.0.0.1Wechseln Sie zurück zum ersten Terminal, in dem Sie die Protokolle verfolgen, und beobachten Sie, dass der neue Protokolleintrag angezeigt wird.
Anzeigen von Logs aus mehreren Containern
In diesem Schritt erfahren Sie, wie Sie die Protokolle (Logs) aus mehreren Containern anzeigen können, die in einem Pod laufen.
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 EOFWarten Sie, bis der Pod bereit ist:
kubectl wait --for=condition=Ready pod nginx-fluentdVerwenden 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.


