1、背景
Kubernetes社区在1.20之后,其容器运行时默认不再为Docker,而是Containerd,UK8S在1.19以后,其容器默认运行时也统一改成Containerd,不再支持Docker。由于UK8S提供集群升级功能,为了让低于1.19的K8S集群能够升级到1.19+,在升级之前需要将当前节点的容器运行时统一更换为Containerd,否则无法完成集群的升级。
2、业务流程
技术方案: https://ushare.ucloudadmin.com/pages/viewpage.action?pageId=64126847
目前UK8S低于V1.19的版本,其容器运行时默认都为Docker,因此为了实现Docker—>Containerd的转换,核心流程分为两块:
- 将存量的节点从Docker转换为Containerd;
- 新增的节点其容器运行应该也统一为Containerd;(目前设计是在用户已完成节点运行时转换的工作之后触发,避免客户集群节点运行时不统一)
其中第一步是本项目的核心,由于运行时会导致节点被移出集群,意味着要迁移大量的Pod,因此存量节点的转换是一台一台进行的。
该方案待讨论点:
1、是否在用户进行节点运行时转换时允许其新建部分节点,且节点运行时默认为Containerd,否则可能导致集群震荡。
2、目前的方案没有一个显示的标记告知用户集群的默认容器运行时已转换为Containerd。
3、功能范围
功能点 | 详细说明 | 优先级 | 备注 |
---|---|---|---|
集群运行时查看 | 查看节点的运行时状态 | P0 | |
运行时转换 | 将客户节点的容器运行时转换成Containerd | P0 | |
添加节点 | 新添加的节点容器运行时为Containerd。 | P0 | 后端何时将节点的运行时默认改为Containerd? |
4、交互地址
https://app.mockplus.cn/run/prototype/YwkDJloBOVRy/Sug5mDhPV1c/VH-tBCrMsif?ha=1&ps=1
4.1 强制升级
加入「强制升级」可选框,文字后有 ? 提示:「强制转换将会忽略K8S集群Pod预检查,但仍会进行节点状态检查」。
- 选择强制升级,预检查通过时,返回预检查结果确认页面,确认升级
- 选择强制升级,预检查不通过,返回预检查页面,提示语改为:「查询到一下组件不健康,请确认需要强制升级」