k8s容器pods滚动升级小记

背景

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

滚动升级命令

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

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

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

回滚命令介绍

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

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

关于更新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如何实现蓝绿部署? 蓝绿部署中,一共有两套系统:一套是正在提供服务系统,标记为“绿色”;另一套是准备发布的系统,标...
    菜头_355f阅读 11,289评论 1 8
  • 命令汇总查看 命令描述kubectl get svc/services获取 创建的services信息kubect...
    奔跑De猪阅读 635评论 0 0
  • 文章是基于“Kubernetes权威指南”和博客[https://kuboard.cn/learning/]的学习...
    彦帧阅读 1,080评论 0 1
  • 目的 带来的便捷 组件介绍 控制面板用于控制集群工作, 其中包含的组件可以部署在多个节点上以保证高可用性 kube...
    凉茶半盏阅读 2,212评论 0 1
  • k8s常用命令node查看服务器节点 kubectl get nodes查看服务器节点详情 kubectl get...
    运维搬砖工阅读 3,506评论 0 20