Проба живости убивает приложение с долгим стартом
Java-сервис прогревает кэш при старте и готов отвечать примерно через 90 секунд. В манифесте задана только проба живости:
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 3
Под бесконечно перезапускается и ни разу не доходит до состояния Ready. При ручном запуске образа вне кластера сервис поднимается нормально.
Что здесь не так?
- Достаточно добавить пробу готовности с теми же параметрами: она уберёт под из балансировки на время прогрева, и перезапуски прекратятся, потому что kubelet учитывает результат обеих проб вместе
- Проба признаёт контейнер мёртвым примерно на 30-й секунде и перезапускает его задолго до конца прогрева — нужна проба запуска либо запас по времени в самой пробе живости
- Проба живости не должна использовать HTTP-проверку: для медленно стартующих сервисов допустима только проверка через выполнение команды
- Причина в отсутствии `requests`: без них kubelet считает контейнер зависшим и перезапускает его
