电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Kubernetes 滚动发布机制详解

10页
  • 卖家[上传人]:Baige****0346
  • 文档编号:263253790
  • 上传时间:2022-03-09
  • 文档格式:DOCX
  • 文档大小:2.34MB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 Kubernetes 滚动发布机制详解 导读在当下微服务架构盛行的时代,用户希望应用程序时时刻刻都是可用,为了满足不断变化的新业务,需要不断升级更新应用程序,有时可能需要频繁的发布版本。实现零停机、“零感知”的持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery)应用程序,一直都是软件升级换代不得不面对的一个难题和痛点,也是一种追求的理想方式,也是DevOps诞生的目的。1、滚动发布把一次完整的发布过程,合理地分成多个批次,每次发布一个批次,成功后,再发布下一个批次,最终完成所有批次的发布。在整个滚动过程期间,保证始终有可用的副本在运行,从而平滑的发布新版本,实现零停机(without an outage)、用户零感知,是一种非常主流的发布方式。由于其自动化程度比较高,通常需要复杂的发布工具支撑,而k8s可以完美的胜任这个任务。2、k8s滚动更新机制k8s创建副本应用程序的最佳方法就是部署(Deployment),部署自动创建副本集(ReplicaSet),副本集可以精确地控制每次替换的Pod数量,从而可以很好的实现滚动更新

      2、。具体来说,k8s每次使用一个新的副本控制器(replication controller)来替换已存在的副本控制器,从而始终使用一个新的Pod模板来替换旧的pod模板。大致步骤如下:1. 创建一个新的replication controller。2. 增加或减少pod副本数量,直到满足当前批次期望的数量。3. 删除旧的replication controller。3、演示使用kubectl更新一个已部署的应用程序,并模拟回滚。为了方便分析,将应用程序的pod副本数量设置为10。kubectl -n k8s-ecoysystem-apps scale deployment helloworldapi -replicas=103.1. 发布微服务查看部署列表$ kubectl get deployments -n k8s-ecoysystem-apps查看正在运行的pod$ kubectl get pods -n k8s-ecoysystem-apps通过pod描述,查看应用程序的当前映像版本$ kubectl describe pods -n k8s-ecoysystem-apps升级

      3、镜像版本到v2.3$ kubectl -n k8s-ecoysystem-apps set image deployments/helloworldapi helloworldapi=3.2. 验证发布检查rollout状态kubectl -n k8s-ecoysystem-apps rollout status deployments/helloworldapi检查pod详情kubectl describe pods -n k8s-ecoysystem-apps从上图可以看到,镜像已经升级到v2.3版本3.3. 回滚发布kubectl -n k8s-ecoysystem-apps rollout undo deployments/helloworldapi到目前为止,整个滚动发布工作就圆满完成了!那么如果我们想回滚到指定版本呢?*答案是k8s完美支持,并且还可以通过资源文件进行配置保留的历史版次量。*由于篇幅有限,感兴趣的朋友,可以自己下去实战,回滚命令如下:kubectl -n k8s-ecoysystem-apps rollout undo deployment/hellowor

      4、ldapi -to-revision=4、原理k8s精确地控制着整个发布过程,分批次有序地进行着滚动更新,直到把所有旧的副本全部更新到新版本。实际上,k8s是通过两个参数来精确地控制着每次滚动的pod数量: maxSurge 滚动更新过程中运行操作期望副本数的最大pod数,可以为绝对数值(eg: 5),但不能为0; 也可以为百分数(eg: 10%)。 默认为25%。 maxUnavailable 滚动更新过程中不可用的最大pod数,可以为绝对数值(eg: 5),但不能为0; 也可以为百分数(eg: 10%)。 默认为25%。如果未指定这两个可选参数,则k8s会使用默认配置:kubectl -n k8s-ecoysystem-apps get deployment helloworldapi -o yaml4.1. 剖析部署概况 DESIRED 最终期望处于READY状态的副本数 CURRENT 当前的副本总数 UP-TO-DATE 当前完成更新的副本数 AVAILABLE 当前可用的副本数当前的副本总数 = 10 + 10 25% = 13,所以CURRENT为13。当前可用的副本数

      5、= 10 - 10 25% = 8,所以AVAILABLE为8。4.2. 剖析部署详情kubectl -n k8s-ecoysystem-apps describe deployment helloworldapi整个滚动过程是通过控制两个副本集来完成的,新的副本集:helloworldapi-6564f59f66;旧的副本集:helloworldapi-6f4959c8c7 。理想状态下的滚动过程:1. 创建了一个新的副本集,并为其分配3个新版本的pod,使副本总数达到13,一切正常。2. 通知旧副本集,销毁2个旧版本的pod,使可用副本总数保持到8,一起正常。3. 当两个副本销毁成功后,通知新副本集,再新增2个新版本的pod,使副本总数达到13,一切正常。只要销毁成功,新副本集就会创造新的pod,一直循环,直到旧的副本集pod数量为0。滚动升级一个服务,实际就是创建一个新的RS,然后逐渐将新RS中副本数增加到理想状态,将旧RS中的副本数减小到0的复合操作; 无论理想还是不理想,k8s最终都会使应用程序全部更新到期望状态,都会始终保持最大的副本总数和可用副本总数的不变性! ! ! 5、总结本篇详解了k8s滚动更新机制,并通过实战演示了微服务的滚动更新,当然还可以加入健康检查和历史版次回滚,大家可以下去自己实践,在实战中学习和进步! -全文完-

      《Kubernetes 滚动发布机制详解》由会员Baige****0346分享,可在线阅读,更多相关《Kubernetes 滚动发布机制详解》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.