kubectl logs <pod-id>
pobiera najnowsze dzienniki z mojego wdrożenia - pracuję nad błędem i jestem zainteresowany poznaniem dzienników w czasie wykonywania - jak mogę uzyskać ciągły strumień dzienników?
edycja: poprawione pytanie na końcu.
Odpowiedzi:
kubectl logs -f <pod-id>
Możesz użyć -f
flagi:
-f, --follow=false: Specify if the logs should be streamed.
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs
kubectl logs --help
poprowadzi Cię:
Przykład:
# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1
Flagi:
-f, --follow[=false]: Specify if the logs should be streamed.
Możesz także dodać --since=10m
lub tak zacząć od tego względnego czasu temu.
Musiałem uzyskać dostęp do dzienników długo działającego kapsuły i -f
zacząłem przesyłać strumieniowo dzienniki sprzed kilku dni, co zajęłoby godziny, aby dotrzeć do miejsca, w którym potrzebowałem wyświetlić (zaledwie kilka ostatnich minut).
Jest --since=10m
flaga, ale wydawało mi się, że to nie działa.
Dziwne było to --tail=100
, gdzie 100
jest liczba ostatnich wierszy do wyświetlenia.
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
Jeśli chcesz uzyskać strumień logów z aplikacji multi pod, możesz użyć kubetail , na przykład:
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
Za pomocą tego polecenia kubetail śledzi dzienniki z aplikacji pod app2-v31-9pbpn i app2-v31-q74wg
Możesz śledzić dzienniki za pomocą -f
kubectl logs -f <pod_name>
Jeśli logi są zatrzymywane, najprawdopodobniej kapsuła ulega awarii, czy możesz sprawdzić, czy zasobnik faktycznie działa, czy nie? Sprawdź wiek może lub:
kubectl describe deploy/ds <deploy_or_ds_name>?
Możesz też sprawdzić dzienniki dotyczące kontenera wewnątrz kapsuły, ponieważ istnieje wiele kontenerów
kubectl logs -f <pod_name> -c <container_name>
Spróbuj tego,
kłody ogonowe ze strąków
kubectl --tail <"no of lines"> loguje <"pod_name">
Przykład :
kubectl --tail 100 logów app_pod
kubctl logs -f = true [nazwa-poda] -c [nazwa-kontenera]
Jeśli masz tylko jeden kontener nad kapsułą, nazwa kontenera nie jest konieczna, w przeciwnym razie użyj nazwy kontenera z opcją -c. -f ie follow jest domyślnie fałszywe. Jeśli nie ustawisz tego na true, otrzymasz migawkę dzienników kontenerów.