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 信息上之后,用浮窗展示节点池名称

image.png

3.3 创建节点池

3.3.1 页面逻辑描述

  • 在 UK8S 的「集群」-「节点池」子页,增加「创建节点池」按钮,弹出「创建节点池」的悬浮页面。
  • 调用 DescribeProductComponentResponse,确认地域可选的机型
  • 调用 AddUK8SNodeGroup 完成节点池创建

    3.3.2 页面交互设计

    image.png

3.4 新增 Node 节点

3.4.1 页面逻辑描述

image.png

  • 在节点池列表页中,每个节点池的后面,设置「增加节点」按钮,进行通过节点池添加节点的动作。
  • 原有「新增 Node 节点」大逻辑不做大的变动,但在页面顶部,进行强提示:Node 节点将落入默认节点池,如需为指定的节点池添加节点,请在节点池页面进行操作,节点池当前只支持 UHost 云主机(包括 GPU 云主机),详见:关于节点池)
  • image.png

    3.4.2 页面交互设计

    image.png

3.5 节点池移除

3.5.1 页面逻辑描述

可在节点池列表页,单独移除某个节点池,或多选一次性移除,仅可移除节点池中无 Node 节点(节点数 = 0)节点池
移除确认页,同时展示节点池名称及 ID

3.5.2 页面交互设计

image.png

4. 遗留风险点