【问题标题】:Spring Boot 2.3 Liveness Probe feature fails in graceful shutdownSpring Boot 2.3 Liveness Probe 功能无法正常关闭
【发布时间】:2021-03-09 09:35:09
【问题描述】:

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

因此,kubelet 无法知道微服务在关闭期间是否仍然存在或因其他原因而卡住。由于K8s liveness probe不依赖terminationGracePeriodSeconds字段,POD会根据自己的K8s liveness配置重启,Spring boot微服务由于野蛮重启无法优雅关闭。

我错过了什么吗?我该如何应对这种情况?

【问题讨论】:

    标签: java spring-boot shutdown livenessprobe graceful-shutdown


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 2019-04-02
      • 2021-05-14
      • 2017-02-04
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多