1. 需求背景
当前用户在集群中添加节点、伸缩组时,需要手动选择节点配置等信息,过程较为繁琐。
通过节点池,让可以更方便地对节点进行分组管理,比如节点运维,节点配置,开启节点自动弹性伸缩,批量管理,指定调度等。
2. 功能点列表
2.1 功能列表
一期节点池功能列表
功能点 | 功能详述 | 优先级 |
---|---|---|
节点池信息展示 | 节点池信息展示 | P0 |
创建节点池 | 节点池的创建 创建集群时,创建默认节点池 默认节点池不保存配置信息,不支持从默认节点池创建节点 |
P0 |
添加节点 | 添加节点时,根据节点池配置设置节点 | P0 |
节点池移除 | 移除节点池,仅允许删除无节点的节点池,默认节点池不删除 | P1 |
二期节点池功能列表
功能点 | 功能详述 |
---|---|
伸缩组功能 | 添加伸缩组时,支持从节点池选择配置,扩缩的机器需要移到相应的节点池 |
节点池数量变更 | 直接通过管理节点池节点数量,进行节点的添加、移除操作 |
2.2 节点池配置列表
节点池配置列表,除数量外,同一节点池必须具有相同的以下配置
节点池仅支持云主机(包括 GPU 云主机),不支持 EPC 云主机、物理云主机
字段名称 | API 字段 | 必填 | 功能详述 |
---|---|---|---|
节点数 | Count | 自动获取 | 节点池节点数量 |
节点池 ID | NodeGroupId | 自动生成 | 节点池的 Primary Key 命名规则:uk8s-xxxxx-ng-xxxxx,即 集群ID-ng-五位随机数字字母组合 |
节点池名称 | Name | 是 | 在本期设计中必填,后续上线节点池修改功能,支持修改名称后,放为不必提额 节点池名称,可重复,默认为 NodeGroup 默认节点池名称为 DefaultNodeGroup |
集群 ID | Uk8sClusterID | 是 | UK8S 集群 ID |
节点镜像 | ImageId | 是 | CentOS / UBuntu / 自定义镜像,支持所有 UK8S 镜像 |
节点机型 | MachineType | 是 | N / O / OS / G 等,支持现有所有云主机及 GPU 云主机机型 |
CPU 平台 | MinmalCpuPlatform | 是 | 枚举值:”Intel/Auto”, “Intel/IvyBridge”, “Intel/Haswell”, “Intel/Broadwell”, “Intel/Skylake”, “Intel/Cascadelake”;”Intel/CascadelakeR”; “Amd/Epyc2”,”Amd/Auto”(参考云主机) |
CPU / 内存 | Cpu | 是 | CPU 内存大小 |
内存 | Mem | 是 | |
系统盘 | BootDiskType | 否 | 系统盘类型,默认为 SSD 云盘 |
数据盘 | DataDiskType DataDiskSize |
否 | 数据大小及类型,默认为 SSD 云盘,0G |
业务组 | Tag | 否 | 主机业务组,默认为未分组 |
计费类型 | ChargeType | 否 | 月付 / 时付 / 年付,默认为月付 |
2.3 需要增加 / 修改的 API
功能 | API 名称 | 说明 |
---|---|---|
添加云主机 | AddUK8SUHostNode | 新增 NodeGroupId 字段 如传入 NodeGroupId(非 Default,则通过相应节点池添加节点),如不传入,必须传入相应的配置。 如调用 API 时,同时传入了 NodeGroupId 及配置信息,以 NodeGroupId 为准。 |
集群列表 | ListUK8SClusterNodeV2 | 新增 NodeGroupId 字段 用于节点池的展示,及根据节点池对云主机进行筛选 |
创建节点池 | AddUK8SNodeGroup | 新增 API,完成节点池创建工作 |
节点池信息展示 | ListUK8SNodeGroup | 新增 API,完成节点池展示工作 展示节点池,及节点池详细配置 |
删除节点池 | RemoveUK8SNodeGroup | 新增 API,完成节点池删除工作 |
3. 功能点详述及设计
3.1 默认节点池
创建集群时,自动创建默认节点池,所有 Master 节点及 Node 节点进入默认节点池。
默认节点池不能够修改、删除,以下节点均进入默认节点池
- 所有非选定节点池的主机添加,包括添加新节点及已有主机
- 物理云主机、裸金属云主机等异型云主机
- 节点池功能发布前的主机
3.2 节点池信息展示
3.2.1 页面逻辑描述
- 在 UK8S 的「集群」页面,新增一个「节点池」子页,展示节点池所有相关信息及管理操作。
- 需要展示的信息节点池名称、节点池 ID、业务组、节点数、配置(镜像 | CPU 平台 | CPU | 内存 | 系统盘 | 数据盘)、付费方式
- 调用 ListUK8SNodeGroup,获取节点池列表及相关配置信息
最后操作栏,支持两类操作:
- 增加节点:弹出新的页面,通过节点池做创建节点的操作
- 移除:移除节点池,节点数量不为零,节点池为 DefaultNodeGroup 时不允许做移除操作,按钮置灰
3.2.2 页面交互设计
关于节点池)
点击节点池名称,跳转节点列表页,筛选出所有属于该节点池的节点
- 在节点列表「类型」和「机型」间,增加「节点池」字段,展示该节点所属节点池的 ID,悬浮到节点池 ID 信息上之后,用浮窗展示节点池名称
3.3 创建节点池
3.3.1 页面逻辑描述
- 在 UK8S 的「集群」-「节点池」子页,增加「创建节点池」按钮,弹出「创建节点池」的悬浮页面。
- 调用 DescribeProductComponentResponse,确认地域可选的机型
- 调用 AddUK8SNodeGroup 完成节点池创建
3.3.2 页面交互设计
3.4 新增 Node 节点
3.4.1 页面逻辑描述
- 在节点池列表页中,每个节点池的后面,设置「增加节点」按钮,进行通过节点池添加节点的动作。
- 原有「新增 Node 节点」大逻辑不做大的变动,但在页面顶部,进行强提示:Node 节点将落入默认节点池,如需为指定的节点池添加节点,请在节点池页面进行操作,节点池当前只支持 UHost 云主机(包括 GPU 云主机),详见:关于节点池)
3.4.2 页面交互设计
3.5 节点池移除
3.5.1 页面逻辑描述
可在节点池列表页,单独移除某个节点池,或多选一次性移除,仅可移除节点池中无 Node 节点(节点数 = 0)节点池。
移除确认页,同时展示节点池名称及 ID。