我有一个Deployment
运行该图像的 pod 的 3 个副本172.20.20.20:5000/my_app
,位于我的私人注册表中。
latest
当我将该图像的新版本推送到我的注册表时,我想在部署中进行滚动更新。
我通过这种方式推送新图像(标记 v3.0 到最新版本):
$ docker tag 172.20.20.20:5000/my_app:3.0 172.20.20.20:5000/my_app
$ docker push 172.20.20.20:5000/my_app
但什么也没发生。Pod 的镜像没有升级。这是我的部署定义:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: app
image: 172.20.20.20:5000/my_app:latest
ports:
- containerPort: 8080
有没有办法自动完成此操作?我应该像rolling-update
在 ReplicaControllers 中那样运行命令吗?
答案1
从 Kubernetes 的角度来看,没有必要提取最新镜像 - 它已经在系统上可用,并且 pod 处于声明状态。使用适当的镜像标记就可以了。
有一些基于的解决方法imagePullPolicy: Always
,但在我看来我不喜欢它们:
https://stackoverflow.com/questions/33112789/how-do-i-force-kubernetes-to-re-pull-and-image