我想更新我的pod,因为有一个带有latest
标签的新图像上传到docker注册表。
我目前正在做这个:
kubectl delete -f deployment.yaml
kubectl apply -f deployment.yaml
如果我这样做:
kubectl apply -f deployment.yaml
上面说我的部署没有改变。
但是,我想让我的服务活一秒钟。难道没有办法让我做以下事情吗
kubectl re-apply -f deployment.yaml
您只需删除POD一次,然后重新启动POD,这样它就会更改图像并从docker注册表中提取新版本。
但是,请确保deployment.yaml
中的imagePullPolicy
始终设置为
否则,您需要将一个次要字段更新到deployment.yaml
中,并将imagePullPolicy
始终保持为。在这种情况下,应用将更改部署。
示例:
spec:
containers:
- name: test
image: image:latest
ports:
- containerPort: 80
imagePullPolicy: Always
imagePullSecrets:
- name: docker-secret
选项2
kubectl rollout restart deployment/<deployment-name>
阅读更多:如何强制Kubernetes重新绘制图像?
下面的命令将滚动重新启动您的部署,即使整个yaml是相同的,并且它说没有变化。
kubectl rollout restart -f deploy.yaml --selector=component=deploy
这里的技巧是,我们需要将component: deploy
的附加标签添加到部署类型的元数据中,以便它选择性地仅重新启动部署。这将添加为额外的配置更新以及一个命令,但将完成必要的操作。