Журналирование с помощью kubectl logs
Получайте доступ к журналам контейнеров и анализируйте их напрямую в кластере Kubernetes с помощью kubectl.
«Журналирование с помощью kubectl logs» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем нужны журналы в Kubernetes
В Kubernetes важно понимать, что делают Ваши приложения. Журналы похожи на дневник приложения: в них записываются события, ошибки и обновления состояния.
Они необходимы для:
- Отладки: поиска источника проблем, когда что-то работает неправильно.
- Мониторинга: наблюдения за состоянием и производительностью приложения.
- Аудита: отслеживания действий и изменений с течением времени.
Журналы контейнеров: объяснение
Когда приложение в контейнере работает, оно обычно записывает вывод в потоки стандартного вывода (stdout) и стандартных ошибок (stderr). Kubernetes собирает эти потоки для каждого контейнера.
Затем эти потоки становятся доступными через API Kubernetes, поэтому Вы можете легко получить к ним доступ, не подключаясь по SSH к узлам или отдельным контейнерам.
Знакомство с kubectl logs
Команда kubectl logs — основной инструмент для доступа к журналам контейнеров, работающих в подах Kubernetes. Она проста в использовании и предоставляет несколько мощных параметров.
Самый базовый способ применения — указать имя пода, который Вы хотите проверить.
Создание пода, генерирующего журналы
Чтобы увидеть kubectl logs в действии, представим, что мы развернули простой под, который непрерывно выводит сообщения в стандартный вывод. Это имитирует реальное приложение, создающее записи в журнале.
Вот YAML такого пода (его можно применить с помощью команды kubectl apply -f):
apiVersion: v1
kind: Pod
metadata:
name: busybox-logger
spec:
containers:
- name: busybox-container
image: busybox
command: ['sh', '-c', 'while true; do echo "$(date) - Hello from BusyBox"; sleep 5; done']
restartPolicy: AlwaysПросмотр базовых журналов Pod
После запуска Pod busybox-logger (проверьте это с помощью kubectl get pods) Вы можете получить его журналы с помощью базовой команды kubectl logs.
Она покажет все записи журнала, сохранённые к этому моменту.
kubectl logs busybox-loggerПотоковая передача журналов в реальном времени
Для отладки в реальном времени часто требуется видеть журналы по мере их появления — аналогично команде tail -f в Linux. Флаг -f или --follow делает именно это.
Он непрерывно передаёт новые записи журнала из контейнера.
kubectl logs -f busybox-loggerЖурналы предыдущих контейнеров
Если контейнер внутри Вашего Pod аварийно завершает работу и перезапускается, kubectl logs по умолчанию показывает журналы текущего работающего экземпляра.
Чтобы просмотреть журналы предыдущего, завершённого экземпляра контейнера, используйте флаг --previous или -p. Это незаменимо для отладки причин, по которым контейнер мог завершить работу с ошибкой.
kubectl logs -p busybox-loggerЖурналы определённых контейнеров
Некоторые Pod могут запускать несколько контейнеров (например, основное приложение и дополнительный контейнер для ведения журналов или мониторинга). Если в Вашем Pod больше одного контейнера, необходимо указать, журналы какого контейнера Вы хотите просмотреть, с помощью флага -c или --container.
kubectl logs my-multi-container-pod -c my-sidecar-containerФильтрация и ограничение вывода журналов
Иногда Вам нужна только определённая часть журналов или только последние записи. Вы можете объединить kubectl logs со стандартными командами Linux или использовать встроенные флаги:
- Фильтрация с помощью
grep: Передайте вывод вgrep, чтобы найти определённые ключевые слова. - Ограничение количества строк с помощью
--tail: Отобразите только последние N строк журналов.
kubectl logs busybox-logger | grep "Hello"
kubectl logs busybox-logger --tail=5Задание на команду просмотра журналов
У Вас есть Pod с именем my-app-pod и двумя контейнерами: frontend и backend. Контейнер backend недавно аварийно завершил работу и перезапустился. Вы хотите просмотреть журналы предыдущего экземпляра контейнера backend.
Итоги: журналы и отладка
Поздравляем! Вы изучили основные способы доступа к журналам контейнеров и их анализа с помощью kubectl logs. Эта мощная команда незаменима для понимания работы приложений в Kubernetes и устранения неполадок.
Основные команды, которые следует запомнить:
kubectl logs <pod-name>: получение журналов базовым способом.kubectl logs -f <pod-name>: потоковая передача журналов в реальном времени.kubectl logs -p <pod-name>: просмотр журналов предыдущего экземпляра контейнера.kubectl logs -c <container> <pod-name>: просмотр журналов определённого контейнера.
Часто задаваемые вопросы
Урок «Журналирование с помощью kubectl logs» бесплатный?
Да — полный текст урока «Журналирование с помощью kubectl logs» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Журналирование с помощью kubectl logs»?
Получайте доступ к журналам контейнеров и анализируйте их напрямую в кластере Kubernetes с помощью kubectl. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Журналирование с помощью kubectl logs»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Журналирование с помощью kubectl logs
- Показатели с Prometheus и Grafana
- Проверки работоспособности: пробы активности и готовности
- Распределённая трассировка и события