Получить доступ

Чем liveness probe отличается от readiness probe?

MiddleSpring Boot и ActuatorSpring BootSpring Boot >=2.3
Ещё спрашивают так:
  • Как настроить пробы Kubernetes в Spring Boot?
Коротко

Liveness — жив ли процесс; не прошла — Kubernetes перезапускает контейнер. Readiness — готов ли принимать трафик; не прошла — под убирают из балансировки, но не перезапускают.

  • Spring Boot: /actuator/health/liveness и /actuator/health/readiness
  • Liveness не проверяет базу и внешние сервисы — иначе их сбой перезапустит все поды
  • Readiness = false при старте и при корректном завершении

А ещё AvailabilityChangeEvent — переключить состояние из кода

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Liveness: «не завис ли процесс». Если проба падает несколько раз подряд, kubelet убивает контейнер и запускает заново. Проверять только сам процесс. Если включить базу, при её недоступности Kubernetes перезапустит все экземпляры — и они дополнительно ударят по базе при старте.

Readiness: «можно ли сейчас слать трафик». Под с неготовой пробой исключается из Service, пока не поправится. Сюда можно включать прогрев кэшей и критичные зависимости.

Startup (отдельная проба Kubernetes) — даёт время медленному старту.

Spring Boot 2.3+: ApplicationAvailability хранит LivenessState (CORRECT/BROKEN) и ReadinessState (ACCEPTING_TRAFFIC/REFUSING_TRAFFIC). Группы /actuator/health/liveness и /actuator/health/readiness включаются автоматически в Kubernetes (или management.endpoint.health.probes.enabled=true). В readiness можно добавить индикаторы: management.endpoint.health.group.readiness.include=readinessState,db.

При остановке Spring Boot переводит readiness в REFUSING_TRAFFIC и ждёт завершения запросов (server.shutdown=graceful).

Что хотят услышать

  • Разница последствий: перезапуск против исключения из балансировки.
  • Почему liveness не проверяет зависимости.
  • Эндпоинты Spring Boot и группы.

Частые ошибки

  • Включать базу в liveness.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Liveness про трафик, readiness про перезапуск
  • ✗Это одно и то же
  • ✗Readiness перезапускает контейнер при провале
  • ✓Liveness — жив ли процесс (иначе перезапуск); readiness — готов ли принимать трафик (иначе исключают из балансировки)

Что спросят дальше

  • Что даёт Spring Boot Actuator?
  • Какие метрики важны для readiness?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем