Функция Spring Boot 2.3 Liveness Probe не работает при плавном завершении работы

Я тестирую новую функцию плавного выключения в Spring Boot 2.3 (server.shutdown=graceful и веб-сервер Tomcat) с Kubernetes terminationGracePeriodSecondsполе. Когда начинается фаза постепенного завершения работы, новые HTTP-запросы отклоняются, как ожидалось, и в это время текущие запросы должны быть обработаны до настраиваемого тайм-аута (spring.lifecycle.timeout-per-shutdown-phase). Странным поведением является результат живучести исполнительного механизма загрузки Spring, потому что в этом сценарии конечная точка живучести недоступна.

Таким образом, kubelet не может знать, жив ли микросервис во время выключения или завис для других целей. Поскольку датчик живучести K8s не полагается на terminationGracePeriodSeconds В поле POD будет перезапущен POD в соответствии со своей конфигурацией живучести K8s, а микросервис загрузки Spring не сможет выполнить корректное завершение работы из-за грубого перезапуска.

Я что-то упускаю? Как я мог справиться с этим сценарием?

1 ответ

Между тем, я принял другое решение, я вызываю проверку живучести весенней загрузки через JMX с использованием протокола RMI. В этом случае liveness дает ответ "UP" во время плавного завершения работы. Для этого: включите JMX, установив свойство spring.jmx.enabled значение true, и живучесть вызывает индикатор состояния JMX с помощью клиента JMX.

Другие вопросы по тегам