2

我们在项目中使用 Kubernetes 中的 Spring Boot。最近我们决定为我们的应用程序添加优雅关闭,以确保无缝部署,并确保在 pod 终止期间无论出于何种原因都没有请求失败。尽管 Spring Boot 提供了优雅的关闭,但由于 Kubernetes 开始从端点删除 pod 并同时向 pod 并行发送 SIGTERM 信号,因此请求似乎仍有可能失败。引用 kubernetes文档

在 kubelet 开始正常关闭的同时,控制平面从 Endpoints(以及,如果启用的话,EndpointSlice)对象中删除正在关闭的 Pod,这些对象表示具有配置选择器的服务。

这也在此处进行了更详细的描述。那里也提供了解决方案,即

您可以在 pod 规范的 preStop 挂钩中添加睡眠,当然,将睡眠配置为对您的用例有意义的任何内容

在此处输入图像描述

在示例中,此睡眠被配置为 10 秒,但我想知道它的合理值是多少,所以 pod 的终止不会不必要地延迟?

谢谢。

4

1 回答 1

2

看起来这可能取决于您的喜好,但看起来 5-10 秒的睡眠是推荐的范围:

在“Kubernetes in Action”中,Lukša 建议 5-10 秒 https://blog.gruntwork.io/delaying-shutdown-to-wait-for-pod-deletion-propagation-445f779a8304

于 2021-09-13T10:09:08.177 回答