журнали kubectl - безперервно


100
kubectl logs <pod-id>

отримує останні журнали з мого розгортання - я працюю над помилкою та зацікавлений знати журнали під час виконання - як я можу отримати безперервний потік журналів?

редагувати: виправлене запитання в кінці.

Відповіді:


176
kubectl logs -f <pod-id>

Ви можете використовувати -fпрапор:

-f, --follow=false: Specify if the logs should be streamed.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs


як щодо журналів для обслуговування чи чогось іншого, крім стручків?
Олександр Міллс,

4
це працює протягом короткого часу, потім журнали зупиняються. Мені потрібно ctrl-c, щоб вийти з kubectl, а потім перезапустити їх. Це показує більше журналів після, але знову зупиняється. Хтось знає, чому журнали зупиняються у випадкових місцях, коли вони, очевидно, все ще генеруються стручком?
pferrel

20

kubectl logs --help допоможе вам:

Приклад:

# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

Прапори:

-f, --follow[=false]: Specify if the logs should be streamed.

Ви також можете додати --since=10mабо почати з того відносного часу тому.


чи може бути в контейнері більше одного контейнера?
Олександр Міллс

@AlexanderMills так, це шаблон "коляски"
грокпот

6

Мені потрібно було отримати доступ до журналів давно запущеного стручка, і я -fпочав передавати журнали ще кілька днів тому, що зайняло би години, щоб дістатися туди, де мені потрібно було переглянути (лише останні пару хвилин або близько того).

Є --since=10mпрапор, але це, здається, не спрацювало для мене.

Що дивувало --tail=100, де 100кількість останніх рядків для відображення?


4

зачекайте, поки кубики закрутяться, потім рухайтесь далі ...

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

"успішно!" можливо, доведеться змінити залежно від стручка.
ddtraveller

Я взяв ці перші дві частини з кількох інших дописів stackoverflow, тому не можу взяти кредит за ці цілі, але комбіноване, сподіваюся, буде добре служити іншим ...
ddtraveller

4

Якщо ви хочете отримати потік журналів із програми з декількома підсистемами , ви можете використовувати kubetail , наприклад:

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

З цією командою, kubetail є хвостосховище колоди з - під app2-v31-9pbpn і app2-V31-q74wg


1

Спробуйте це,

хвостові колоди з стручків

kubectl --tail <"no of lines"> журнали <"ім'я_поділка">

Приклад :

kubectl --tail 100 журналів app_pod


1

Ви можете стежити за журналами за допомогою -f

kubectl logs -f <pod_name>

Якщо журнали зупинені, швидше за все, модуль аварійно завершує роботу, чи можете ви перевірити, чи працює він насправді чи ні? Перевірте вік, можливо, або:

kubectl describe deploy/ds <deploy_or_ds_name>?

Або ви також можете перевірити журнали на наявність контейнера всередині капсули, оскільки є кілька контейнерів

kubectl -f <pod_name> -c <container_name> 

0

журнали kubctl -f = true [ім'я-ім'я] -c [ім'я контейнера]

Якщо у вас є лише один контейнер над модулем, ім'я контейнера не потрібно, інакше використовуйте ім'я контейнера з опцією -c. -f тобто слід за замовчуванням хибний. Якщо ви не встановите значення true, ви отримаєте знімок журналів контейнерів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.