журналы kubectl - постоянно


99
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: да, это модель с «коляской»
grokpot

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, поэтому я не могу полностью
отдать им должное,

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 <"количество строк"> журналы <"pod_name">

Пример :

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


0

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

Если у вас только один контейнер над модулем, имя контейнера не требуется, иначе используйте имя контейнера с параметром -c. -f ie follow по умолчанию ложно. Если вы не установите для него значение true, вы получите снимок журналов вашего контейнера.


0

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

kubectl logs -f <pod_name>

Если журналы остановлены, скорее всего, модуль дает сбой, можете ли вы проверить, действительно ли модуль работает или нет? Проверить возраст, возможно, или:

kubectl describe deploy/ds <deploy_or_ds_name>?

Или вы также можете проверить журналы на наличие контейнера внутри модуля, если есть несколько контейнеров.

kubectl -f <pod_name> -c <container_name> 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.