vivo Kubernetes 集群无损升级实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. vivo Kubernetes
集群无损升级实践
束迎亚 | vivo互联网容器研发高级工程师
2. 目录
01 02 03 04
vivo 容器化集群
现状 vivo 容器化集群
无损升级挑战 vivo 容器化集群
无损升级实践 vivo 容器化集群
升级收益与未来演进
2.1 升级的必要性 3.1 升级策略
2.2 升级的挑战 3.2 升级前/中/后
实施细节
3. vivo 容器化集群现状
弹性伸缩 AI/ML 可观测性
无损发布 跨集群 ……
PaaS
近十万实例
容器化进度30%
IaaS
近万节点 近十个集群
多个异地机房
易用性改善
标准化管理
新功能支持
云提供商/自建数据中心
网络
主机
用户导向
完善容器化平台功能矩阵
主机
高效迭代
主机
设计驱动
助力容器化平台行业领先
稳定性建设
4. vivo 容器化集群无损升级挑战
挑战源于昨天的包袱,为什么要升级?
内部版本落后 线上集群版本多 社区高版本新功能
性能瓶颈 运维困难 苦苦追寻
高版本经历互联网大厂架构沉淀
技术积累
解决了很多性能问题和大规模问题
内部数个集群 版本不一
平台侧新功能上线有风险
高版本后期实现了很多新功能
第三方插件也对 Kubernetes 版本
有要求
5. vivo 容器化集群无损升级实践
挑战给飞行中的飞机换引擎
平台
稳定性
功能
兼容性
操作
可靠性
6. vivo 容器化集群无损升级实践
核心
目标
业务不中断
具体
方案
工作计划
解
决
方
案
升级不停服
数据不损坏
故障秒恢复
一键升级,一键回滚,集群状态可视化
升级前充分调研
升级中保持谨慎
升级后持续观察
7. vivo 容器化集群无损升级实践
Master A
Master B
Master C Master
Master A A
Master
Master B
B
Master C
node node
node
原
地
升
级
P-A
P-B
P-C
P-A
P-A
P-B
P-B
名词解释
应用不重启,批量替换Kubernetes核心组件版本
优点
P-C
P-C
1.
保证业务生命周期连续性
2. 操作可重复性强,便于一键升级
Master A
Master B
Master C Master A’
Master B’
Master C’
node node
替
换
升
级
P-A
P-B
P-C
P-A’
P-B’
缺点
1.
2. 一个节点失败可能影响全局进度,原子性差
名词解释
单节点应用轮动迁移到高版本集群,节点升级后扩容到高版本集群
优点
P-C’
升级操作顺序严格,升级中间态管理难度大
1.
灰度逻辑管控节点版本,升级成功率高
2. 迁移业务,业务安全性有效保证
缺点
1.
业务实例被驱逐,对重启敏感型业务影响大
2. 操作繁琐,牵涉范围广,升级时间长
8. vivo 容器化集群无损升级实践
开发关注点
运维关注点
API 兼容性 控制逻辑一致性 Kubelet 稳定性
GVK 废弃/新增 特性默认启用 底层定义改变
升级过程自动化
升级失败快速回滚
GVK 字段变化
特性移除
live-restore
配置项增删
跨版本升级:v1.10
升级中间态监控
v1.17
9. vivo 容器化集群无损升级实践 升级前
API 兼容性
升级后资源无法操作问题
升级前
升级后
ETCD
deployments.extensions
之所以选择升级到 1.17 版本, 很大一部分原因是 1.18 版本包含很多 API 兼容性的改动。
10. vivo 容器化集群无损升级实践 升级前
控制逻辑一致性
升级后 Pod 非预期重启
升级前
ApiServer
升级后
Controller (5min)
ApiServer
Controller
统一驱逐
污点驱逐
Kubelet Kubelet
PodC PodC
(180s)
PodB
PodA
PodB
(300s)
PodA
(5s)
11. vivo 容器化集群无损升级实践 升级前
Kubelet 稳定性 Kubelet 重启导致业务容器重建
升级前
Pod
aa3fe
Pod
升级后
重启对容器无影响
原: 重启导致容器重建
现: 旧版本 Pod 跳过检查
Pod
aa3fe
Pod
eb2ff
改进方案
Pod
Old Pod
12. vivo 容器化集群无损升级实践 升级中
高版本回滚到低版本
高版本
回滚
低版本
问题
解决方法
新增 GVK
旧版本不识别
01
API
兼容性
残留资源导致
Namespace 无法清理
03
02 备份与回滚
回滚后
控制器不兼容
ETCD
ETCD
snap1
ETCD
snapN
升级速度
ETCD存储
版本兼容性
升级过程写入新数据
回退后不识别
10
分钟/千节点
13. vivo 容器化集群无损升级实践 升级后
监控
日志
千磨万击还坚劲,任你东西南北风
发现问题
分析问题
解决问题
14. vivo 容器化集群升级收益与未来演进 升级收益
升级这件事本身的收益…
操作简单
降低运维负担
升级后对PaaS平台的收益…
交付 用户
流程更规范 体验更满意
开发 平台
迭代更高效 功能更丰富
升级时间短
可复制性强
用户无感知
平滑无感
新特性
支持
稳定性
提升
运维复杂
度降低
15. vivo 容器化集群升级收益与未来演进 未来演进
标准化建设
自动化建设
效率建设
规划为平台
管理能力
提高效率
提供完整场景
自动化测试
控制器流量灰度
平台能力不中断
行业技术交流
16.