Для чего нужна команда describe в Kubernetes?

«Для чего нужна команда describe в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Команда kubectl describe — это основной инструмент для получения детализированной информации о состоянии и конфигурации любого ресурса в кластере. В отличие от kubectl get, который показывает сводку, describe агрегирует данные из разных источников, предоставляя полную картину для отладки.

Пример использования:

kubectl describe pod/my-app-pod -n production

Типичный вывод включает:

  • Состояние (Status): Текущая фаза пода (Pending, Running, Succeeded, Failed, Unknown).
  • События (Events): Хронология ключевых событий жизненного цикла (например, Scheduled, Pulled, Created, Started). Это первое, что я смотрю при проблемах с запуском.
  • Контейнеры: Состояние каждого контейнера (Ready, Restart Count), его образ и порты.
  • Условия (Conditions): Детализированные статусы, такие как PodScheduled, Initialized, ContainersReady, Ready.
  • Конфигурация: Назначенные метки (Labels), аннотации (Annotations), запрошенные/ограниченные ресурсы (CPU/Memory), примонтированные тома (Volumes).

На практике я использую describe ежедневно для быстрой диагностики: почему под завис в Pending (нехватка ресурсов, проблемы с PVC), почему контейнеры перезапускаются (CrashLoopBackOff) или почему сервис не получает трафик (проблемы с Readiness Probe).