Как просмотреть логи подов в Kubernetes?

«Как просмотреть логи подов в Kubernetes?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kubernetes для просмотра логов используется команда kubectl logs. Это основной инструмент для отладки работы контейнеров.

Базовые команды:

  • Просмотр логов пода:

    kubectl logs <pod-name> -n <namespace>

    Если под находится в namespace default, флаг -n можно опустить.

  • Просмотр логов конкретного контейнера (если в поде несколько контейнеров):

    kubectl logs <pod-name> -c <container-name> -n <namespace>
  • Потоковый вывод логов (follow):

    kubectl logs -f <pod-name> -n <namespace>
  • Просмотр логов предыдущего экземпляра пода (например, после сбоя и перезапуска):

    kubectl logs --previous <pod-name> -n <namespace>
  • Просмотр логов за последний определенный период:

    kubectl logs --since=1h <pod-name> -n <namespace>  # Логи за последний час

Практический workflow:

# 1. Найти нужный под
kubectl get pods -n my-app-namespace

# 2. Просмотреть его логи
kubectl logs my-app-deployment-7cbbf6b9f8-abc12 -n my-app-namespace

# 3. Если под постоянно перезапускается (CrashLoopBackOff), посмотреть логи упавшего экземпляра
kubectl logs --previous my-app-deployment-7cbbf6b9f8-abc12 -n my-app-namespace

# 4. Следить за логами в реальном времени при деплое
kubectl logs -f my-app-deployment-7cbbf6b9f8-abc12 -n my-app-namespace

Альтернативы и дополнения:

  • Сторонние инструменты (Lens, k9s): Предоставляют удобный GUI для просмотра логов.
  • Централизованное логирование: Для продакшн-среды обязательно настраивается стек (например, EFK: Elasticsearch, Fluentd/Fluent Bit, Kibana или Loki/Grafana) для агрегации, хранения и анализа логов со всех узлов и подов.