kubectl logs <pod-id>
erhält die neuesten Protokolle von meiner Bereitstellung - Ich arbeite an einem Fehler und bin daran interessiert, die Protokolle zur Laufzeit zu kennen.
edit: korrigierte Frage am Ende.
kubectl logs -f <pod-id>
Sie können das Flag -f
verwenden:
-f, --follow=false: Specify if the logs should be streamed.
kubectl logs --help
führt Sie weiter:
Beispiel:
# Begin streaming the logs of the Ruby container in pod web-1
kubectl logs -f -c Ruby web-1
Flaggen:
-f, --follow[=false]: Specify if the logs should be streamed.
Sie können auch --since=10m
hinzufügen oder von dieser relativen Zeit beginnen.
k8s_pod=some_pod
kubectl get pods -w $k8s_pod | while read LOGLINE
do
[[ "${LOGLINE}" == *"Running"* ]] && pkill -P $$ kubectl
done
for line in $(kubectl get pods | \
grep $k8s_pod | awk '{print $1}'); do
kubectl logs -f $line | tee logfile
done
tail logfile | grep successful!
RESULT=$?
exit $RESULT
Ich musste auf die Protokolle eines Pods mit langer Laufzeit zugreifen, und -f
begann vor einigen Tagen mit dem Streaming von Protokollen. Es hätte Stunden gedauert, bis ich dort angekommen wäre, wo ich sie sehen musste (nur die letzten paar Minuten oder so).
Es gibt ein --since=10m
Flag, aber das schien bei mir nicht zu funktionieren.
Was Wunder gewirkt hat, war --tail=100
, wobei 100
die Anzahl der zuletzt anzuzeigenden Zeilen ist.
Wenn Sie den Protokolldatenstrom von einer Multi-Pod-App abrufen möchten, können Sie kubetail verwenden. Beispiel:
kubectl get pods
NAME READY STATUS RESTARTS AGE
app2-v31-9pbpn 1/1 Running 0 1d
app2-v31-q74wg 1/1 Running 0 1d
kubetail app2
Mit diesem Befehl erstellt kubetail ein Tailing der Protokolle von pod app2-v31-9pbpn und app2-v31-q74wg