pixel Asked: 2025-02-08 00:32:58 +0800 CST2025-02-08 00:32:58 +0800 CST 2025-02-08 00:32:58 +0800 CST 当 Spring 应用程序部署在 k8s 上时使用 /actuator/health? 772 我想知道 Spring Boot 应用程序的缺点是什么,它有一个/health定义为活跃度和就绪度探测的执行器端点。 是否存在与正常关机或滚动更新相关的问题? spring-boot 1 个回答 Voted Best Answer Roar S. 2025-02-08T01:13:04+08:002025-02-08T01:13:04+08:00 有趣的问题。我在 Reddit 上找到了这个答案。 不过,这是大多数人都忽略的最重要的一点。在 Kubernetes 中,处理 SIGTERM 事件是必须的。驱逐、pod 自动缩放器和常规操作(如 kubectl apply...)都可能导致 pod 过早被杀死。这是通过向应用程序发送 SIGTERM 事件来实现的。在收到 SIGTERM 事件之后但在应用程序能够退出之前,就绪探测器的响应必须与存活探测器不同。就绪探测器必须返回失败,而存活探测器必须返回成功。这样,就不会向终止的副本发送任何新请求,但当前正在处理的现有请求可以完成。在存活探测器返回失败后,Kubernetes 可能会发送 SIGKILL 事件,立即终止您的应用程序。为了正确处理这个问题,您的存活探测器必须保持健康,并且您的就绪探测器必须返回失败。当然,在正在进行的请求完成后,您的存活探测器应该返回失败,但只有在所有正在进行的请求都完成后才可以。
有趣的问题。我在 Reddit 上找到了这个答案。