Spring Boot 2.3 Liveness Probe功能在正常关闭时失败



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

因此,kubelet无法知道微服务在关闭期间是否仍然有效,或者是否因其他原因而被卡住。由于K8s的活跃度探测不依赖于terminationGracePeriodSeconds字段,POD将根据其K8s的活动度配置重新启动,Spring boot微服务由于粗暴的重新启动而无法正常关闭。

我是不是错过了什么?我如何应对这种情况?

同时,我采用了另一种解决方案,我使用RMI协议通过JMX调用spring-boot的liveness探针。在这种情况下,活性给出了";UP";在优雅的关机过程中的响应。要执行此操作:启用JMX,将属性spring.jmx.enabled设置为true,并使用JMX客户端激活JMX健康指示符。

最新更新