在部署新版本时,我对 kubernetes 有一个疑问。
我的 Kubernetes yaml 配置中有RollingUpdate strategy
。当以这种方式更改版本时,问题就出现了。如果我有一个正在执行操作的 php-fpm,该操作会丢失吗?万一只是将该 pod 更改为新版本。
我的主要问题是,采用这种策略的 kubernetes 是否会考虑到 pod 是否正在被使用,如果是,它是否会等到它完成必须做的事情后再进行更改。
谢谢!
答案1
扩展一下@Fady 上面所说的内容,以满足那些仍然好奇的人的需求。
通过调用 PreStop 容器钩子,您可以在容器终止之前关闭所有未完成的事情。来自文档“PreStop:在容器终止之前立即调用此钩子。”[1]
PreStop 钩子可以执行特定命令或针对容器上的端点执行 HTTP 请求。此外,标准宽限期为 30 秒。但是,您可以通过附加 来传递自定义时间--grace-period=<seconds>
。[2]
[1]https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
[2]https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods