有时我们需要将Deployment 回滚到旧版本。默认情况下,所有Deployment的发布历史记录都保留在系统中,以便我们随时进行回滚
例如我们在升级过程中将镜像名称误设置成Nginx:1.91(一个不存在的镜像)
$ kubectl set image deployment/nginx-deployment nginx=nginx:1.91
这时Deployment的部署过程会卡住:
$ kubectl rollout status deployment nginx-deployment
waiting for rollout to finish :1 out of 3 new replicas hava been updated...
查看ReplicaSet ,可以看到新建的ReplicaSet Ready 数量为0
查看创建的pod,会发现新的ReplicaSet 创建的1个Pod卡在镜像拉取过程中。
为了解决这个问题,我们需要回滚到之前稳定版本的Deployment。
首先,使用kubectl rollout history 命令检查这个Deployment部署的历史记录。
$ kubectl rollout history deployment/nginx-deployment
显示对应的REVISION 和 CHANGE-CAUSE
如果需要查看对应的版本的详细信息,则可以加上--revision=<N>参数:
$ kubectl rollout history deployment/nginx-deployment --revision=3
我们决定撤销本次发布并回滚到上一个部署版本:
$ kubectl rollout undo deployment/nginx-deployment
也可以使用--to-revision指定回滚到部署的版本号:
$ kubectl rollout undo deployment/nginx-deployment --to-revision=2
这样deployment 就会滚到之前的稳定版本。
本文讲述了如何在遇到Deployment部署错误,如将镜像设置错误时,通过kubectl命令操作回滚到稳定版本,包括查看部署历史、指定回滚版本和解决卡住的Pod问题。
937

被折叠的 条评论
为什么被折叠?



