问题描述
我在GKE上的Kubernetes中有以下rc控制器:
1 | apiVersion: v1 |
现在,如果我执行以下命令执行滚动更新,但没有重新拉镜像。为什么?
1 | kubectl rolling-update myapp --image=us.gcr.io/project-107012/myapp:5c3dda6b |
高票回答
如果有如下定义,Kubernetes将会在Pod创建时拉取镜像(请参阅更新镜像文档):
- 镜像的标签为
:latest
- 指定镜像的拉取策略
imagePullPolicy: Always
如果你想每次都拉取镜像,这很好。但是,如果您想按需执行该操作:例如,如果您想使用some-public-image:latest,但只想在请求时手动提取新版本。你现在可以:
- 将imagePullPolicy设置为IfNotPresent或Never并提前拉取好,在每个群集节点上手动拉取镜像,以便是最新版本,然后执行kubectl rolling-update或类似重启Pods
- 暂时更改imagePullPolicy,执行kubectl apply,重新启动pod(例如kubectl rolling-update),还原imagePullPolicy,重新kubectl apply
- 将一些some-public-image:latest推送到您的私有存储库并执行kubectl rolling-update
按需拉动没有好的解决方案。如果有变化,请评论,我会更新这个答案。