Gymterview
middle

Каков жизненный цикл Pod?

Pod проходит через несколько фаз (phases) за время своей жизни. Фаза отражает общее состояние Pod’а, а не отдельных контейнеров внутри него.

Фазы Pod

Фаза Описание
Pending Pod принят кластером, но один или несколько контейнеров ещё не готовы к запуску. Pod ждёт назначения на ноду, скачивания образов и т.д.
Running Pod назначен на ноду, все контейнеры созданы. Как минимум один контейнер выполняется или находится в процессе запуска/перезапуска
Succeeded Все контейнеры в Pod’е успешно завершились и не будут перезапущены. Типично для Job’ов
Failed Все контейнеры завершились, и хотя бы один завершился с ошибкой (ненулевой exit code)
Unknown Состояние Pod’а не удалось определить, обычно из-за проблем со связью с нодой

Состояния контейнера внутри Pod

  • Waiting — контейнер ожидает (скачивание образа, ожидание зависимостей)
  • Running — контейнер запущен и работает
  • Terminated — контейнер завершил выполнение (успешно или с ошибкой)

Политики перезапуска (restartPolicy)

Политика Поведение
Always (по умолчанию) Всегда перезапускать контейнер
OnFailure Перезапускать только при ошибке (ненулевой exit code)
Never Никогда не перезапускать

Graceful Shutdown

При удалении Pod’а Kubernetes:

  1. Отправляет сигнал SIGTERM контейнеру
  2. Ждёт terminationGracePeriodSeconds (по умолчанию 30 секунд)
  3. Если контейнер не остановился — отправляет SIGKILL

Для Spring Boot приложений важно корректно обрабатывать SIGTERM, чтобы завершить текущие запросы. Spring Boot 2.3+ поддерживает graceful shutdown через настройку server.shutdown=graceful.

На собеседовании: важно знать фазы Pod’а (Pending, Running, Succeeded, Failed, Unknown) и механизм graceful shutdown. Частая ошибка — не упоминать terminationGracePeriodSeconds и не знать, что Spring Boot нужно отдельно настраивать для корректного завершения.