服务回滚
通过滚动升级的策略可以平滑的升级Deployment,若升级出现问题,需要最快且最好的方式回退到上一次能够提供正常工作的版本。为此K8S提供了回滚机制。
revision:更新应用时,K8S都会记录当前的版本号,即为revision,当升级出现问题时,可通过回滚到某个特定的revision,默认配置下,K8S只会保留最近的几个revision,可以通过Deployment配置文件中的spec.revisionHistoryLimit属性增加revision数量,默认是10。
查看revision
kubectl -n caiwugx rollout history deploy myblog
回滚到对应revision
kubectl -n caiwugx rollout undo deploy myblog --to-revision=1
记录回滚:
$ kubectl apply -f deploy-myblog.yaml --record
$ kubectl -n caiwugx set image deploy myblog myblog=172.21.51.166:5000/myblog:v2 --record=true
查看deployment更新历史:
$ kubectl -n caiwugx rollout history deploy myblog
deployment.extensions/myblog
REVISION CHANGE-CAUSE
1 kubectl create --filename=deploy-myblog.yaml --record=true
2 kubectl set image deploy myblog myblog=172.21.51.166:5000/demo/myblog:v1 --record=true
回滚到具体的REVISION
$ kubectl -n caiwugx rollout undo deploy myblog --to-revision=1
deployment.extensions/myblog rolled back
二、设置节点为不可调度(pod 将不再运行在以下节点)
kubectl taint node 10.241.x.x 10.241.x.x 10.241.x.x key=value:NoSchedule
查看pod的状态
kubectl -n caiwugx get pod -A #查看pod的状态