5.4 执行回滚操作
回滚命令
kubectl rollout
查看历史记录
kubectl rollout history deployment hello-deploy
[root@master k8s]# kubectl rollout history deployment hello-deploy deployment.apps/hello-deploy REVISION CHANGE-CAUSE 1 <none> 2 kubectl apply --filename=deploy.yml --record=true
1 为tag为latest的镜像的deployment。版本2为刚刚滚动升级之后的版本。kubectl apply -f deploy.yml --record由于刚刚升级时使用了--record参数的缘故,执行更新操作的命令会被记录下来。
查看ReplicaSet
kubectl get rs
可以查看到已经创建了新的ReplicaSet,并且之前的不会被删除。
[root@master k8s]# kubectl get rs NAME DESIRED CURRENT READY AGE hello-deploy-69c89b6f98 10 10 10 28m hello-deploy-8d494c7f6 0 0 0 3h26m
回滚之前历史版本
示例:
kubectl rollout undo deployment hello-deploy --to-revision=1
[root@master k8s]# kubectl rollout undo deployment hello-deploy --to-revision=1 deployment.apps/hello-deploy rolled back [root@master k8s]# kubectl get pods NAME READY STATUS RESTARTS AGE hello-deploy-69c89b6f98-2rgx2 1/1 Running 0 31m hello-deploy-69c89b6f98-7rwxp 1/1 Running 0 38m hello-deploy-69c89b6f98-8mp6l 1/1 Running 0 30m hello-deploy-69c89b6f98-9qs4z 1/1 Running 0 34m hello-deploy-69c89b6f98-dxzvx 1/1 Running 0 32m hello-deploy-69c89b6f98-f2sxw 1/1 Running 0 29m hello-deploy-69c89b6f98-mr7cs 1/1 Running 0 28m hello-deploy-69c89b6f98-n9sht 1/1 Running 0 33m hello-deploy-69c89b6f98-swptb 1/1 Terminating 0 29m hello-deploy-69c89b6f98-thzw5 1/1 Running 0 38m hello-deploy-8d494c7f6-mpj82 0/1 ContainerCreating 0 7s hello-deploy-8d494c7f6-tdq4w 0/1 ContainerCreating 0 8s [root@master k8s]# kubectl get deploy hello-deploy NAME READY UP-TO-DATE AVAILABLE AGE hello-deploy 11/10 2 9 3h37m [root@master k8s]# kubectl get deploy hello-deploy NAME READY UP-TO-DATE AVAILABLE AGE hello-deploy 9/10 6 9 3h39m [root@master k8s]# kubectl get deploy hello-deploy NAME READY UP-TO-DATE AVAILABLE AGE hello-deploy 9/10 6 9 3h39m
通过上面操作可以看到正在回滚更新
访问浏览器可以看到已经发生变化

※ 最后要注意,刚刚执行的回滚操作时一个命令式的指令。也就是说集群的当前状态和YAML文件是不符的。在实际操作中,执行这样的回滚操作之后,应当手动更新YAML文件,以便正确反映回滚操作带来的变化。
浙公网安备 33010602011771号