kubectl logs
можно просматривать журналы только одного модуля за раз. Однако вы можете использовать флаг -l
, чтобы использовать селектор (запрос метки) для фильтрации. Например:
kubectl logs -l app=nginx -l app=php
Используйте флаг -c
, если вам нужно просмотреть логи контейнера. Дополнительные поддерживаемые флаги и примеры можно найти здесь.
Когда вы сможете просматривать журналы из желаемых модулей / контейнеров, пора использовать grep
для фильтрации вывода. Например, я получил несколько логов из модуля:
~$ kubectl logs nginx-app-b8b875889-4nn52
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
и я хотел бы видеть только строки с конфигурацией слова, поэтому я выполняю:
$ kubectl logs nginx-app-b8b875889-4nn52 | grep configuration
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
или если я хочу подсчитать строки со словом info, чем:
$ kubectl logs nginx-app-b8b875889-4nn52 | grep info |wc -l
2
Более подробную информацию можно найти в руководстве по grep. Имейте в виду, что если вы не укажете такие аргументы, как --since=
или --tail=
и модуль, журналы которого вы пытаетесь просмотреть, работает в течение некоторого более длительного периода времени, результаты могут вводить в заблуждение.
Обычно я также предлагаю использовать сторонние инструменты, такие как Stern или Kubetail, которые более эффективны, чем простые kubectl logs
, но в вашем варианте использования сочетаются оба:
а также:
это путь.
РЕДАКТИРОВАТЬ:
Также убедитесь, что вы используете нужные ресурсы. Из вашего вопроса кажется, что вы запускаете kubectl logs deployment/my-app-deployment
, а затем kubectl logs my-pod-1 -c my-app-container
, что не соответствует развертыванию my-app-deployment
. Составьте список всех развертываний, модулей и меток, чтобы быть уверенным, что вы выбираете нужный ресурс. Использовать:
kubectl get deploy,pods --show-labels
person
Wytrzymały Wiktor
schedule
03.03.2021
kubectl logs -l app=my-app -c my-app-container --since=25m
? возвращает ли он ожидаемые журналы? - person Krishna Chaurasia   schedule 17.02.2021kubectl logs -l app=my-app --all-containers | grep "time" | wc
- person Krishna Chaurasia   schedule 17.02.2021DEBUG
, я нашел кое-что интересное.grep -i "DEBUG"
показывает больше записей, но когда я добавляюgrep "time" | wc -l
, всегда отображается 10 - person Sachith Muhandiram   schedule 17.02.2021kubectl logs
, и предоставляют больше возможностей, которые, как я вижу, могут удовлетворить ваш вариант использования. - person Wytrzymały Wiktor   schedule 19.02.2021