首页 > 解决方案 > 手动替换一个 pod 上的图像,而其他 pod 使用主图像

问题描述

假设我有 10 个 pod 运行稳定版本,我希望在完全推出之前替换其中一个的映像以运行更新版本。

有没有办法做到这一点?

标签: kubernetesdockerfilecanary-deployment

解决方案


并非如此:部署管理的每个 pod 都应该是相同的,包括运行相同的映像。一旦创建了 pod 的镜像,您就无法更改它,如果您更改了 Deployment 的镜像,它将尝试重新创建其所有托管的 pod。

如果您唯一担心的是 pod 启动,则部署的默认行为是使用新映像启动 25% 的指定副本。旧 pod 将继续不间断地运行,直到新副本成功启动并通过就绪检查。如果新的 Pod 立即进入 CrashLoopBackOff 状态,旧的 Pod 仍将运行。

如果您想专门启动一个 pod 作为金丝雀部署,您可以创建第二个部署来处理它。您需要在 pod 上添加一些标签(例如,canary: 'true'),以便将金丝雀与主 pod 区分开来。这将出现在 pod 规范和部署选择器中,但不会出现在相应的服务选择器中:服务匹配金丝雀和非金丝雀 pod。如果此操作成功运行,则您可以删除金丝雀部署并更新主部署上的映像。


推荐阅读