Вступить в клуб →
средняявопросKubernetes и Helm

Проба живости убивает приложение с долгим стартом

Java-сервис прогревает кэш при старте и готов отвечать примерно через 90 секунд. В манифесте задана только проба живости:

livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 10
  failureThreshold: 3

Под бесконечно перезапускается и ни разу не доходит до состояния Ready. При ручном запуске образа вне кластера сервис поднимается нормально.

Что здесь не так?

  • Достаточно добавить пробу готовности с теми же параметрами: она уберёт под из балансировки на время прогрева, и перезапуски прекратятся, потому что kubelet учитывает результат обеих проб вместе
  • Проба признаёт контейнер мёртвым примерно на 30-й секунде и перезапускает его задолго до конца прогрева — нужна проба запуска либо запас по времени в самой пробе живости
  • Проба живости не должна использовать HTTP-проверку: для медленно стартующих сервисов допустима только проверка через выполнение команды
  • Причина в отсутствии `requests`: без них kubelet считает контейнер зависшим и перезапускает его

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела