我们希望扩展一些正在运行许多kubernetes pod的运行实例。因此,根据官方文档termination-of-pods,我们将使用graceful period
优雅地停止播客。我已经阅读了很多博客文章和官方文档,他们都讲述了如何使用graceful period
优雅地终止pod。但他们没有说明如何确定graceful period
会更好。[/ p>
例如,假设一个容器中的容器可以在一段时间内处理数千个请求,并且它将花费超过30秒来完成所有请求。我认为在这种情况下将graceful period
设置为30秒是个坏主意,因为某些请求会丢失。但是,当用户负载关闭且同一个容器中的同一个容器仅在其他时间段内用于几十个请求时,它只花费5秒来完成所有请求,在这种情况下,graceful period
的30s将太长。
这是我的考虑。所以,我的问题如下。
1.有没有最佳做法来确定graceful period
更好的时间?
2.有没有办法检查处理请求是否在容器中完成然后正常终止pod?
3.我可以在将终止命令发送到pod之后扩展初始graceful period
吗?
提前致谢。
答案 0 :(得分:1)
确定理想优雅时期的最佳方法是通过可观察性。将您的服务置于实际的生产负载和度量之下。这是高度项目特定的!
如果PID 1的过程在优雅时段之前退出,您的容器将在优雅时段结束前标记为已终止,因此值得设置一个略高于正常情况下预期值的值。
您可能有兴趣让容器在终止时写入任意信息。 Kubernetes有一个名为Termination messages的功能,您可能需要查看。