我正在使用 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不依赖terminationGracePeriodSeconds
field,POD会根据自己的K8s liveness配置重启,Spring boot微服务因为野蛮重启无法优雅关闭。
我错过了什么吗?我该如何管理这种情况?