Verwalten und Beheben von Problemen mit Kubernetes-Protokollen
Kubernetes ist eine Open-Source-Software, die es uns ermöglicht, containerisierte Anwendungen über Knotensysteme hinweg zu verwalten. Wenn es um die Verwaltung eines Kubernetes-Clusters geht, besteht einer der wichtigsten Aspekte der Verwaltung darin, die Protokolle ständig im Auge zu behalten. Diese Protokolle geben uns wertvolle Informationen über die Leistung und den allgemeinen Zustand unseres Kubernetes-Clusters. In diesem Tutorial erfahren Sie, wie Sie Kubernetes-Protokolle auf einem Linux-System verwalten und Fehler beheben.
In diesem Tutorial lernen Sie:
- So überprüfen Sie Protokolle mit dem Befehl
kubectl - So überprüfen Sie Protokolle mit Docker
- So überprüfen Sie das Verzeichnis
/var/logs
Überprüfen von Protokollen mit kubectl
Die Verwendung des Befehls kubectl auf Ihrem Master-Knoten sollte der erste Ort sein, an dem Sie nach relevanten Protokollen für die Pods und Container in Ihrem Kubernetes-Cluster suchen. Hier sind einige Befehlsbeispiele:
Rufen Sie die Protokolle für einen Pod mit dem Namen
nginxab:kubectl logs nginx-
Wenn auf dem betreffenden Pod mehrere Container ausgeführt werden, können wir mit der Option
--all-containers=trueProtokolle für alle seine Container abrufen:kubectl logs nginx --all-containers=true Um Streaming-Protokolle anzuzeigen (ähnlich wie beim
Linux-Befehl tail -f), können wir die Option-fanhängen.kubectl logs -f nginxUm die Protokolle eines bestimmten Containers auf einem Knoten anzuzeigen, verwenden Sie die Option
-cund geben Sie den Containernamen an. So sehen Sie beispielsweise die Protokolle für den Container nginx1 auf worker2:kubectl logs -c nginx1 worker2So zeigen Sie die 30 letzten Zeilen der Protokollausgabe von einem Pod mit dem Namen
nginxan:kubectl logs --tail=30 nginxUm weitere Beispiele und Befehlszeilenoptionen anzuzeigen, verwenden Sie die Option
-hfürkubectl:kubectl logs -h
Überprüfen von Protokollen mit Docker
Wir können die Logs auch mit unserer Container-Runtime überprüfen. In den meisten Fällen handelt es sich dabei wahrscheinlich um Docker, obwohl dies von Ihrer Umgebung abhängt. Dies ist ein guter zusätzlicher Schritt, um mehr Protokolle für einzelne Container anzuzeigen, insbesondere wenn der Befehl kubectl aufgrund eines Kubernetes-Fehlers nicht funktioniert.
Überprüfen Sie zunächst die Container-IDs in Docker:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
705a163eaac3 gcr.io/k8s-minikube/kicbase:v0.0.37 "/usr/local/bin/entr…" 3 hours ago Up 3 hours
truncated...
Verwenden Sie dann den Befehl docker logs zusammen mit der Container-ID, auf die Sie die Protokolle überprüfen möchten:
docker logs 705a163eaac3
Überprüfen des Verzeichnisses /var/logs
Einige Kubernetes-Implementierungen wie kubeadm erstellen auch Protokolle unter dem typischen Linux-Verzeichnis /var/log. Wir können sie sehen mit:
ls /var/log/pods
kube-flannel_kube-flannel-ds-9wdfm_9f1d0211
kube-system_coredns-787d4945fb-2nwxh_1f01271c
kube-system_coredns-787d4945fb-6sh26_2203c902
kube-system_etcd-kubernetes-master_884126e4a26b
kube-system_kube-apiserver-kubernetes-master_c6ea17320e910d
kube-system_kube-controller-manager-kubernetes-master_0dfeb
kube-system_kube-proxy-mgbwz_6a15d06d-0191-4ec1
kube-system_kube-scheduler-kubernetes-master_6b19524e5ea8b
Navigieren Sie in eines dieser Verzeichnisse, um die relevanten Protokolldateien und deren Einträge anzuzeigen. Diese Methode ermöglicht es uns, Protokolle speziell über Kubernetes-Coredns, API-Server usw., Scheduler, Controller-Manager, Proxy und Pod-Netzwerk anzuzeigen (in unserem Beispiel ist dies Flanell).
Kubernetes-Protokolle können leicht überwältigend werden, was die Fehlerbehebung erschwert. Sehen Sie sich unser Tutorial zu Advanced Logging and Auditing unter Linux an, um mehr über Tools zu erfahren, mit denen Kubernetes-Protokolle an einem zentralen Ort gesammelt und kompiliert werden können.
Abschließende Gedanken
In diesem Tutorial haben wir gesehen, wie Sie Kubernetes-Protokolle auf einem Linux-System verwalten und Fehler beheben können. Dazu gehörten die Verwendung des Befehls kubectl logs, die Überprüfung der Containerlaufzeitprotokolle (in diesem Fall Docker) und die Überprüfung der Linux-Protokolldateien selbst. Da sich Protokolle an mehreren Orten befinden, ist es eine gute Idee, ein Tool eines Drittanbieters zu verwenden, das uns helfen kann, die Daten zu sammeln und zu visualisieren, wie im obigen Tutorial-Link erwähnt.
