GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So zeigen Sie Kubernetes-Pod-Protokolle mit Kubectl an

Das Anzeigen von Pod-Protokollen ist oft der erste Schritt bei der Diagnose eines Problems mit den Workloads Ihres Clusters. So verwenden Sie Kubectl, um Protokolle per Livestream auf Ihr Terminal zu übertragen, sodass Sie die Ausgabe Ihrer Anwendung überprüfen können.

Erste Schritte

Stellen Sie sicher, dass Kubectl installiert und mit Ihrem Cluster verbunden ist. Sie können eine Kubeconfig-Datei angeben, indem Sie KUBECONFIG festlegen Umgebungsvariable in Ihrer Shell:

export KUBECONFIG=~/.kube/my-cluster.yaml

Verwenden Sie dann Kubectl, um Ihre Pods aufzulisten:

kubectl get pods

Denken Sie daran, den --namespace hinzuzufügen kennzeichnen, wenn Ihre Pods außerhalb des Standard-Namespaces leben:

kubectl --namespace my-namespace get pods

Das Hinzufügen eines temporären Alias ​​zu Ihrer Shell ist eine gute Möglichkeit, diesen Schritt zu verkürzen und Ihnen dabei zu helfen, mehrere Befehle für denselben Namespace auszuführen:

alias k="kubectl --namespace my-namespace"

k get pods

Auf Pod-Protokolle zugreifen

Die kubectl logs Mit dem Befehl können Sie die Protokolle untersuchen, die von einem benannten Pod erstellt wurden:

kubectl logs pod-name

Die vorhandenen Protokolle des Pods werden an Ihr Terminal gesendet. Wenn die Pods aus mehr als einem Container bestehen, müssen Sie auch den Namen des Containers angeben, den Sie untersuchen möchten:

kubectl logs pod-name container-name

Alternativ setzen Sie --all-containers -Flag, um Protokollzeilen einzuschließen, die von einem der Container im Pod erstellt wurden. Beachten Sie, dass Sie eine ausführliche und sich wiederholende Ausgabe sehen könnten, wenn dieses Flag für einen ausgelasteten Pod verwendet wird:

kubectl logs pod-name --all-containers

Sie können die Protokolle auch von einer Reihe von Pods mit einem bestimmten Label abrufen. Auf diese Weise können Sie Protokolle von verschiedenen Pods aggregieren, vorausgesetzt, sie haben alle dasselbe Label:

kubectl logs -l my-label=my-value --all-containers

Kontinuierlich gestreamte Protokolle

Die einfachen logs Der Befehl gibt die aktuell gespeicherten Pod-Protokolle aus und wird dann beendet. Fügen Sie das -f hinzu (--follow )-Flag an den Befehl, um den Protokollen zu folgen und sie live auf Ihr Terminal zu streamen.

Kubectl gibt jede neue Protokollzeile in Ihr Terminal aus, bis Sie den Befehl mit Strg+C stoppen. Dies entspricht der Verwendung von tail -f mit einer lokalen Protokolldatei in einer nicht containerisierten Umgebung.

Ältere Protokolle anzeigen

kubectl logs enthält keine Protokollzeilen, die von alten Containern erstellt wurden, die einst Pod-Mitglieder waren, aber inzwischen ersetzt wurden. Auf diese Protokolle kann durch Hinzufügen des -p zugegriffen werden (--previous )-Flag.

Kubectl zeigt dann das gesamte gespeicherte Protokoll für den Pod an, einschließlich Zeilen, die von inzwischen beendeten Containern ausgegeben wurden.

Aktuelle Protokolle abrufen

Manchmal müssen Sie nicht den gesamten Protokollstream sehen. Kubectl unterstützt ein --since Flag, das nach einer bestimmten Zeit ausgegebene Protokollzeilen auftaucht:

kubectl logs pod-name --since=2h

Dieser Befehl zeigt die Protokollausgabe von pod-name die innerhalb der letzten zwei Stunden produziert wurde. Eine andere Variante, --since-time , unterstützt eine RFC3339-konforme Zeitstempelzeichenfolge anstelle des oben gezeigten relativen Zeitausdrucks.

Der --tail flag ist eine weitere Option zum Kondensieren von Protokollen. Dies begrenzt die Anzahl der angezeigten Zeilen und vermeidet ein vollständiges Terminal, wenn Sie nur sehr aktuelle Ausgaben sehen müssen:

# Shows the last 10 lines of the log
kubectl logs pod-name --tail=10

Kubectl zeigt standardmäßig keine Zeilenzeitstempel an, da viele Anwendungen sie bereits in ihre Protokollausgabe aufnehmen. Fügen Sie --timestamps hinzu Flag, damit Kubectl Zeitstempel am Anfang von Zeilen hinzufügt, wenn Ihre Arbeitslast sie nicht bereitstellt.

Sie können die geprüften Pod- und Containernamen auch Protokollzeilen voranstellen. Diese Funktionalität wird mit dem --prefix aktiviert Flagge. Es kann mit --timestamps kombiniert werden um die Zeit anzuzeigen, zu der jede Zeile erstellt wurde, und die Quelle, aus der sie stammt.

Zugriff auf Protokolle von anderen Ressourcentypen

kubectl logs arbeitet zusätzlich zu Pods mit Deployment- und Job-Ressourcen:

kubectl logs job/my-job
kubectl logs deployment/my-deployment

Sie erhalten die Protokolle aus dem ersten Container innerhalb des Jobs oder der Bereitstellung. Verwenden Sie --all-containers Flag, um Protokolle anzuzeigen, die von einem der übereinstimmenden Container erstellt wurden. Sie können alle oben beschriebenen Flags verwenden, unabhängig davon, ob Sie einen Pod, eine Bereitstellung oder einen Job anzeigen.

Erweiterte Protokollverwaltung

Kubectl bietet keine Möglichkeit zum Filtern, Suchen oder Transformieren Ihrer Protokolle. Am besten leiten Sie die kubectl logs weiter Ausgabe in etablierte Terminal-Tools wie awk , grep oder sed zu diesem Zweck.

kubectl logs my-pod | grep search-expression

Verwenden Sie auf ähnliche Weise die vorhandenen Umleitungsfunktionen in Ihrer Shell, um Protokolle in einer Datei zu speichern:

kubectl logs my-pod > my-pod-logs.txt

Zusammenfassung

Mit Kubectl können Sie auf Protokolle Ihrer Ressourcen zugreifen, entweder auf Containerbasis oder aggregiert. Sie können eine Momentaufnahme der aktuell gesammelten Protokolle anzeigen, kontinuierlich neue Zeilen an Ihr Terminal streamen und auf historische Zeilen zugreifen, die von beendeten Containern ausgegeben wurden.

Der Befehl verfügt über einige eingeschränkte Anpassungsoptionen, darunter eine Begrenzung der Zeilenanzahl und eine vereinfachte Datumsfilterung. Wenn eine anspruchsvollere Analyse erforderlich ist, leiten Sie die Ausgabe in Unix-Terminalbefehle weiter, um Ihre Protokolle schnell zu analysieren und die Ursachen von Fehlern in Ihren Anwendungen zu finden.

Kubectl sammelt Protokolle aus den Standardausgabe- und Fehlerströmen Ihrer Container. Es ist wichtig sicherzustellen, dass Sie die Ausgabe in diese Streams korrekt schreiben, da ein falsch konfigurierter Container zu einer leeren Ausgabe führt, wenn Sie kubectl logs ausführen .


Docker
  1. So zeigen Sie Apache-Zugriffs- und Fehlerprotokolle an

  2. So installieren Sie Kubernetes mit Minikube unter Ubuntu 20.04

  3. So kopieren Sie Dateien zwischen Kubernetes-Pods und Ihrem Computer

  4. So zeigen Sie die vergangene Leistung mit sar in Linux an

  5. Wie betrete ich einen Pod als Root?

So installieren Sie Kubernetes mit Minikube unter Ubuntu 18.04 LTS

So stellen Sie eine Multi-Tier-Anwendung mit Kubernetes bereit

So richten Sie Kubernetes 1.5 mit kubeadm unter CentOS ein

So zeigen Sie Linux-Systemstatistiken mit Saidar an

So stellen Sie Docker Compose Stacks mit Kompose in Kubernetes bereit

So zeigen Sie cPanel-Fehlerprotokolle an