如何使用滚动更新重新拉取容器镜像?

How to use rolling update to re-pull container image?

我有一个 kubernetes RC/pod,它由带有图像的容器组成,例如:foobar/my-image:[branch]-latest,其中 "branch" 是 git 分支("master",等等)。

使用滚动更新强制 RC 重新拉取镜像以获得最新版本的最佳方法是什么?暴力破解的方法就是简单的删除RC重新创建,但是会导致服务宕机。

滚动更新只有在您指定确切的图像标签时才可能,而不是像 "latest" 这样的标签吗?

如果您希望滚动更新重新拉取您的镜像,您必须使用 :latest 标签或指定 Always 的镜像拉取策略(请参阅 Updating Images Kubernetes 文档)。

在你的情况下,你不能使用 :latest 标签,因为你想要特定分支上的最新图像,所以使用拉取策略是可行的方法。

dns-frontend-pod.yaml 是一个示例文件,展示了如何使用 Always 的镜像拉取策略。

您应该能够使用 rolling update 指定您当前使用的相同图像名称:

kubectl rolling-update <replication-controller-name> --image=foobar/myimage:[branch]-latest

这将(在幕后)创建一个新的复制控制器,它是带有 "new" 图像的现有复制控制器的副本,然后逐步调整每个复制控制器的大小,直到旧的复制控制器为零pods 并且新的有想要的数量 pods,最后删除旧的并重命名新的使用旧名称。