1. 需求背景
- 3 Master 节点对于小客户来说测试费用较高
中大型客户,出于进一步减轻运维负担、将集群管理面故障风险转移到云厂商等需求,希望自己不用维护 K8S 集群管理面
2. 方案概述
Master 节点资源:运行在 Cube 实例上
- Master 资源配置:每个集群,配置 3 Master Cube Pod + 3 etcd Cube Pod,根据集群规模自动触发升级,
3. 功能点列表
功能点 | 功能详述 | 优先级 |
---|---|---|
创建集群 | 在 UK8S 集群界面中,创建 Master 托管版集群 创建集群时只创建管理面,集群创建后再添加节点 |
P0 |
获取集群列表 | 在集群列表页显示托管版集群 增加一个字段,展示集群的类型 |
P0 |
集群信息 | 集群信息页 | P0 |
集群删除 | 删除集群及全部 Node 资源 | P0 |
管理服务定价 | 核算现有集群平均需要的资源,制定统一定价标准 | P1 |
Master 节点管理 | 一期:采用不可见云主机,单可用区 Master,强制分配不同宿主,主机默认不可见云主机仅限 O 型 二期:1. 默认在多可用区 Region 采取多可用区 Master(老集群是否需要强制转换?)2. 为 Master 节点划分 Cube 专区 |
P1 |
ETCD 存储及备份 | 一期:ETCD 存储,采用 Master 节点系统盘 | P2 |
集群版本及升级 | 一期:仅支持 1.20 版本(是否支持 1.19 稳定版合理一点?) 二期:支持 UK8S 目前提供的所有版本 三期:节点 Kubelet 等的升级 |
P2 |
CloudProvider、CNI 等插件升级 | 一期:采用最新版 二期:支持 |
P2 |
4. 功能点详述设计
4.1 创建集群
4.1.1 页面逻辑描述
创建集群,沿用 UK8S 现有「创建集群」按钮,在创建时让客户选择托管版 / 专属版,如选择托管版,则在创建时不需要选择 Node 节点。
4.1.2 API 变动
新增 API:CreateUK8SManagedCluster
4.1.3 页面详细设计
4.2 获取集群列表
4.2.1 API 变动
ListUK8SClusterV2:新增返回字段 ClusterType
- Managed:托管版
- Dedicated:专有版
4.2.2 页面详细设计
在集群 ID 之后,添加「集群类型」字段,对应 ListUK8SClusterV2 中的新增字段「ClusterType」,显示「托管版」(Managed)和「专有版」(Dedicated)
在集群没有 Node 节点时,kubectl 按钮置灰
在集群没有 Node 节点时,集群详情中,「集群」-「节点」页面「添加虚拟节点」按钮置灰
4.3 集群信息页面
4.3.1 API 变动
API | 变动 |
---|---|
DescribeUK8SCluster | 新增返回字段 ClusterType 如果是托管版,MasterList 字段返回空值 |
ListUK8SComponentStatus | 需要兼容支持返回托管版的 APIServer、ETCD、Controller、Scheduler 等功能 |
GetUK8SClusterResponse | 统一返回字段 ItemSet 去掉 Master 和 VK 节点的信息 统一返回字段 Total 去掉 Master 和 VK 节点的信息 |
4.3.2 页面详细设计
在集群 ID 之下,添加「集群类型」字段,对应 DescribeUK8SCluster 中的新增字段「ClusterType」,显示「托管版」(Managed)和「专有版」(Dedicated)
如果是托管版,去掉 master 节点的信息
4.4 其他 API 变动
API | 变动 |
---|---|
ListUK8SNodeV2 | NodeRole 为 Master 的节点不返回 后端筛选过滤 |
ListUK8SClusterLog | 筛选,不返回 Master 节点相关日志 |
4.5 其他功能 / 页面变动
4.5.1 新增 Node 节点
新增 Node 节点时,如前端判断到集群为托管集群,则可用区设置为该地域的默认可用区。
如托管版 Master 节点在同一可用区,用户选择他区节点时,不展示「您选择的Node节点与Master节点不在同一可用区,请注意。」该提示语。
4.5.2 ETCD 插件
如前端判断集群为托管集群,在插件页不展示「ETCD 备份」子页。