0Pricing
DevOps Bootcamp · Урок

Журналирование с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. Журналирование с помощью kubectl logs
  2. Показатели с Prometheus и Grafana
  3. Проверки работоспособности: пробы активности и готовности
  4. Распределённая трассировка и события
← Назад к DevOps Bootcamp