背景
引子
2020年3月,信也运维团队、架构团队和来访的友商容器云团队进行容器云技术交流时聊到容器云版本升级的话题。当时两家公司容器云都已上线稳定运行一段时间,对于容器云版本升级的都持观望的态度,一致认为容器云版本升级难度大、风险高。这次技术交流虽然没有马上促成我们决定进行版本升级,但促使我们开始思考这个话题。
触发进行版本升级的原因
最终促使我们对容器云版本升级进行研究和实施的原因如下:
- 部分数据流处理应用的docker实例网络流量过大,有影响容器云计算节点上其他应用的风险。考虑使用新版带宽限制特性对容器实例限速(这条最终使用其他方案来解决)。
- docker和kubernets版本较老,升级是必然的方向。既然升级难度大、风险高,那么应该早研究早测试。
升级前的版本情况
- Kubernetes 1.11 发布于2018Q2。
历经阶段
- 2021H~1H2: 工具化手动迁移升级阶段(生产环境)。
- 2022H1: 自助化自动化迁移升级阶段(生产环境)。
研究测试阶段
本阶段的目标
任务
发现的问题和改进方案
- etcd升级到最新版本,有兼容性问题。解决方案,etcd版本不升级。
- kubernetes-dashboard使用新版本和自研的容器云管理平台stargate存在兼容性问题。解决方案,老版本不升级。
开发测试环境原地升级阶段
本阶段的目标
升级方案
任务
- DEV环境,docker&kubernets版本原地升级
- FAT环境,docker&kubernets版本原地升级
- UAT环境,docker&kubernets版本原地升级
- PRE环境,docker&kubernets版本原地升级
发现的问题&解决方案
问题
- 原地升级过程中,整个集群的容器实例会自动重启,无法实现平滑升级。这个问题一开始并没有发现,直到开发测试环境升级完成才在PRE才发现,幸运的是未引发事故事件。复盘未发现的原因有两点:1)运维原来升级开发测试环境时申请了维护窗口,避开了测试同事试用测试环境的时间;并且原地升级后第二天大多测试同事会发布计划测试的版本。2)并未分析考虑到可能引发重启,未去做监控或观察。
解决方案
工具化手动迁移升级阶段
本阶段的目标
方案
- 技术方案:通过上层容器云管理平台stargate进行跨集群迁移(如图2)。
- 推进方案:运维每周迁移一台计算节点上的实例,迁移前组织涉及的应用研发负责人沟通排期计划,迁移中应用研发负责人或测试负责人进行观察或测试。
任务
- 部署生产环境新版本容器集群(初始集群3台计算节点),并测试通过。
- 运维统筹推进每台计算节点上实例迁移,通过stargate平台上迁移功能对计划的计算节点上应用实例进行迁移。
- 每台计算节点上实例迁移完毕后,从老版本集群下线,升级docker和kubernets版本后加入新版本集群。
发现的问题&改进方案
本阶段问题一:过程低效,耗时长。
- 沟通低效:每台计算节点需要组织一次沟通,N台计算节点需要组织N次。
- 操作低效:迁移操作次数=计算节点数量*应用数量。如果M个应用分布N台计算节点上,则操作次数会达到N x M次。
- 观察测试低效:操迁移NxM次,那么应用的研发或测试负责人会进行NxM次观察或测试。
针对以上3点问题,调研了研发和测试同事的想法,以运维的诉求。最终想法是通过自动化进行迁移升级,而触发迁移升级的场景包括:1)容器应用发布,2)容器应用实例重启。
本阶段问题二:辅助工具不够完善
- 最初stargate提供的功能仅提计算节点上的容器实例迁移功能。这些实例属于那些应用每次迁移前运维需要找基础架构同事手动拉取涉及应用。针对这点,运维向基础架构同事提出实例所属应用信息关联、展示以及导出功能的需求。基础架构同事也是非常快速开发除需求功能上线。
- 随着迁移升级的进行,运维想看单台、多台计算节点或者一个集群上实例数下降上升情况、分配情况时缺乏完善工具。针对这点,运维在运维自动化平台主机虚拟化容量管理模块下开发容器容量统计明细功能,容器集群容量汇总功能,帮助运维更好掌握迁移过程,单台计算节点、整个集群实例的变化。
随发布或重启实例自助自动迁移升级阶段
本阶段的目标
方案
- 在paones上进行应用发布时或实例重启时自动触发迁移升级
- 处于低版本容器集群的实例在应用发布或重启时,在新版本容器集群生成新的实例。
任务
- 基础架构团队在容器云管理平台stargate开发判断版本和迁移实例功能API。
- 能效工具团队在paones开发聚合触发迁移的前台功能。
总结思考
相关数据
成果
- 顺利完成容器云版本升级,无升级引发的无事件事故产生。
- 丰富完善了工具平台的功能,沉底的能力可以应对未来升级,以及扩展其他场景。
运维自动化平台-容器容量统计明细。运维自动化平台-容器集群容量汇总-老集群一 运维自动化平台-容器集群容量汇总-新集群一 容器云管理平台stargate物理机维度迁移功能
回顾反思
- 这种没有太多经验可参考,摸着石头过河的项目。复盘下来,发现在项目之初前瞻性有些不足,支持工具建设也未考虑周全。工具建设滞后,在整个过程中出现两次人等工具建设的情况。相信后续类似的项目可以做的更好。
作者
kaijin,信也科技资深运维专家,运维老兵,从事过游戏、电商、大数据、互金等业务场景运维。加入信也科技5年,目前主要专注运维自动化建设、SRE探索实践。
招聘信息
Java、大数据、前端、测试等各种技术岗位热招中,欢迎扫码了解~
更多福利请关注官方订阅号“拍码场”
好内容不要独享!快告诉小伙伴们吧!