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 页面详细设计

image.png

4.2 获取集群列表

4.2.1 API 变动

ListUK8SClusterV2:新增返回字段 ClusterType

  • Managed:托管版
  • Dedicated:专有版

数据库添加相应的 column,默认为专有版

4.2.2 页面详细设计

image.png
在集群 ID 之后,添加「集群类型」字段,对应 ListUK8SClusterV2 中的新增字段「ClusterType」,显示「托管版」(Managed)和「专有版」(Dedicated)
在集群没有 Node 节点时,kubectl 按钮置灰
在集群没有 Node 节点时,集群详情中,「集群」-「节点」页面「添加虚拟节点」按钮置灰

4.3 集群信息页面

4.3.1 API 变动

API 变动
DescribeUK8SCluster 新增返回字段 ClusterType
如果是托管版,MasterList 字段返回空值
ListUK8SComponentStatus 需要兼容支持返回托管版的 APIServer、ETCD、Controller、Scheduler 等功能
GetUK8SClusterResponse 新增输入字段 ClusterType
统一返回字段 ItemSet 去掉 Master 和 VK 节点的信息
统一返回字段 Total 去掉 Master 和 VK 节点的信息

4.3.2 页面详细设计

image.png
在集群 ID 之下,添加「集群类型」字段,对应 DescribeUK8SCluster 中的新增字段「ClusterType」,显示「托管版」(Managed)和「专有版」(Dedicated)
如果是托管版,去掉 master 节点的信息

4.4 其他 API 变动

API 变动
ListUK8SNodeV2 NodeRole 为 Master 的节点不返回
后端筛选过滤
ListUK8SClusterLog 筛选,不返回 Master 节点相关日志

4.5 其他功能 / 页面变动

4.5.1 新增 Node 节点

image.png
新增 Node 节点时,如前端判断到集群为托管集群,则可用区设置为该地域的默认可用区。
image.png
如托管版 Master 节点在同一可用区,用户选择他区节点时,不展示「您选择的Node节点与Master节点不在同一可用区,请注意。」该提示语。

4.5.2 ETCD 插件

image.png
如前端判断集群为托管集群,在插件页不展示「ETCD 备份」子页。