k8s容器pods滚动升级小记

背景

  • 在日常开发特别是测试过程中,由于发布版本经常需要对pods进行升级,由于是采用Deployment的方式部署,则本身就支持RollingUpdate的方式来进行滚动升级了

滚动升级命令

  • 先确认下 下对应下有那些pods,并且执行是否正式。
kubectl -n    get deployment | grep  
  • 滚动升级的流程
    • 通过set image + rollout pause让pods滚动升级过程进行暂停(仅有类型为deployment的pods控制器支持,rs不支持)。
    • 若灰度过程符合预期,则执行rollout resume继续执行
    • 若灰度过程不符合预期,则需先继续执行后回滚到上个版本(rollout resume+ rollout undo),此时会牺牲掉一个老pod!
--关于灰度升级的过程
kubectl   -n       set image deployment    =  &&   kubectl   -n     rollout  pause  deployment   

--- 如果升级顺利的话,就点击继续
kubectl -n        rollout resume deployment   

--- 如果升级需要回滚的话,先继续,后回滚
kubectl -n       rollout resume deployment    &&  kubectl -n    rollout  undo  deployment   
  • 执行后就看到老的pods任务变成Terminating,等新的pods PodInitializing成功后即可服务

回滚命令介绍

  • 查看image的回滚列表:kubectl -n rollout history deployment/,比如可以看到以下的历史版本清单:
REVISION  CHANGE-CAUSE
2         
3         

-查看image的详情:kubectl -n rollout history deployment/ --revision=2
-回滚到对应image: kubectl -n rollout undo deployment/ --to-revision=1

关于更新

  • 常用部署方式如滚动发布/蓝绿部署/金丝雀部署(灰度)
  • 其中金丝雀部署可见文章:https://kuboard.cn/learning/k8s-intermediate/workload/wl-deployment/canary.html

你可能感兴趣的:(k8s容器pods滚动升级小记)