Kubernetes Deployment 之版本回退和灰度(金丝雀)发布
Deployment 版本回退
在版本发布的过程中,可能升级的版本存在问题,那么就需要版本回退。
-
查看指定 Deployment 版本历史
root@k8s-master1:~# kubectl rollout history deployment deployment-nginx deployment.apps/deployment-nginx REVISION CHANGE-CAUSE 1 <none> 2 <none>
-
回退至第一个发布的版本
root@k8s-master1:~# kubectl rollout undo deployments/deployment-nginx --to-revision=1 deployment.apps/deployment-nginx rolled back
灰度(金丝雀)发布
灰度(金丝雀)发布是指在滚动更新发布的过程中,我只更新部分 Pod 至新版本,然后暂停。这样系统新旧版本同时存在,待验证一定时间后认为没有问题,再继续更新剩下的 Pod 版本。我们可以将镜像k8s-test
标记为 1.2 版本,灰度发布指令和过程如下所示:
# 修改 Deployment 镜像版本,并执行灰度发布
kubectl set image deployment/deployment-nginx nginx=k8s-test:v1.2 && kubectl rollout pause deployment/deployment-nginx
# 发布过程是原本两个 Pod, 现在三个 Pod 同时运行,2 个老的和 1 个新的
^Croot@k8s-master1:~# kubectl get pods -owide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deployment-nginx-78df7bbf59-x8c2l 1/1 Running 0 9s 10.244.194.70 k8s-worker1 <none> <none>
deployment-nginx-78df7bbf59-xbk85 1/1 Running 0 8s 10.244.126.29 k8s-worker2 <none> <none>
deployment-nginx-b44b4cc44-vh5dm 0/1 Pending 0 0s <none> <none> <none> <none>
deployment-nginx-b44b4cc44-vh5dm 0/1 Pending 0 0s <none> k8s-worker1 <none> <none>
deployment-nginx-b44b4cc44-vh5dm 0/1 ContainerCreating 0 0s <none> k8s-worker1 <none> <none>
deployment-nginx-b44b4cc44-vh5dm 0/1 ContainerCreating 0 0s <none> k8s-worker1 <none> <none>
deployment-nginx-b44b4cc44-vh5dm 1/1 Running 0 1s 10.244.194.72 k8s-worker1 <none> <none>
^Croot@k8s-master1:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
deployment-nginx-78df7bbf59-x8c2l 1/1 Running 0 92s
deployment-nginx-78df7bbf59-xbk85 1/1 Running 0 91s
deployment-nginx-b44b4cc44-vh5dm 1/1 Running 0 67s
# 继续发布更新
root@k8s-master1:~# kubectl rollout resume deployments/deployment-nginx
deployment.apps/deployment-nginx resumed
# 现在更新为两个新的 Pod
root@k8s-master1:~# kubectl get pods -owide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deployment-nginx-b44b4cc44-htbrr 1/1 Running 0 35s 10.244.126.30 k8s-worker2 <none> <none>
deployment-nginx-b44b4cc44-vh5dm 1/1 Running 0 3m19s 10.244.194.72 k8s-worker1 <none> <none>