3

我正在使用 Kubernetes字段测试 Spring Boot 2.3(server.shutdown=graceful 和 Tomcat Web 服务器)中的新功能正常关闭。terminationGracePeriodSeconds当正常关闭阶段开始时,新的 HTTP 请求按预期被拒绝,此时应详细说明当前请求,直到可配置的超时 ( spring.lifecycle.timeout-per-shutdown-phase)。奇怪的行为是 Spring boot actuator liveness 结果,因为在这种情况下,liveness 端点是不可达的。

因此,kubelet 无法知道微服务在关闭期间是否还活着,或者因为其他事情而卡住了。由于K8s liveness probe不依赖terminationGracePeriodSecondsfield,POD会根据自己的K8s liveness配置重启,Spring boot微服务因为野蛮重启无法优雅关闭。

我错过了什么吗?我该如何管理这种情况?

4

1 回答 1

0

同时,我采用了另一种解决方案,我正在使用RMI协议通过JMX调用spring boot的liveness probe。在这种情况下,liveness 在正常关闭期间给出“UP”响应。要做到这一点:启用 JMX 将属性设置spring.jmx.enabled 为 true 并使用 JMX 客户端调用 JMX 健康指标。

于 2020-12-04T15:38:21.093 回答