首页 > 解决方案 > Kubernetes 滚动部署:仅在没有容器运行时终止 pod

问题描述

我正在尝试将更新部署到 pod。但是,我希望当前的 pod 仅在 pod 内的所有容器都已终止并且它们的进程完成时才终止。

新 pod 可以一直等待启动,直到旧 pod 中的所有容器都完成。我们有一种机制可以阻止旧 pod 接收新任务,因此它们最终应该终止。

如果在某个时间实例存在两次 pod 也没关系。我尝试在 kubernetes 文档中找到解决方案,但没有成功。关于如何/是否可能的指针会有所帮助。

标签: kubernetescontainersgoogle-kubernetes-enginecontinuous-deploymentkubernetes-pod

解决方案


好吧,我想您可能必须根据需要创建具有新映像的重复部署类型,并将服务中的选择器更改为新部署,这将防止外部流量进入预先存在的 pod,并且新调用可以转到新的 pod。然后稍后你可以检查类似的东西 -

Kubectl top pods -c containers

如果负载看起来是静态且低的,那么您最好稍后删除旧的 pod 相关部署。

但是对于这个事情,每次必须更新服务选择器并且可能为了跟踪事情,您可以将 git commit 哈希附加到服务选择器以保持它每次都是唯一的。

但是如果需要从 Kubernetes 集群内部回滚到以前的版本将很困难,因此最好您可以再次触发所需的构建。

我希望这是有道理的!


推荐阅读