我有一个Pod-我想更新到最新版本的容器映像,如果失败,则想将其还原到早期版本的容器映像。
以下哪种方法可以很好地更新到最新或更早的容器映像。 1>使用kubectl补丁是不错的选择吗? 2>删除广告连播,然后再次创建广告连播是个不错的选择吗?
两种方法的优点/缺点是什么
kubectl patch pod test-pod -p '{"spec":{"containers":[{"name":"test","image":"1.0"}]}}'
kubectl delete pod test-pod and kubectl apply -f testpod.yaml
答案 0 :(得分:1)
根据您提出的方案,您可以选择使用滚动更新策略查找进行金丝雀部署,如果新部署的容器无法满足负载的需求,那么旧的容器将不会被破坏并且负载会不断由预先存在的容器提供服务。
另一种方法是保留部署历史记录,可以定义要由kubernetes保存的清单的数量,然后可以手动回滚到所需的版本
如果您不知道哪个版本带有哪个图像,则可以按照问题中的说明进行补丁命令
答案 1 :(得分:1)
根据文档here的一种部署用例
回退到较早的Deployment版本,如果当前状态为 部署不稳定。每次回滚都会更新 部署。
因此请在必要时使用部署执行rolling update和rollback
kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.161 --record=true
检查推出历史记录
kubectl rollout history deployment.v1.apps/nginx-deployment
回滚到以前的版本
kubectl rollout undo deployment.v1.apps/nginx-deployment