1. 需求背景

固定 IP 插件上线后,仍遗留有插件升级、IP 管理等功能项未完成,特别是 IP 的管理,依赖于登录机器查看,给故障排查带来很多不便。
本期主要解决插件及固定 IP 的控制台管理。

2. 功能点列表

2.1 功能点描述及优先级

功能模块 功能点 优先级 对应 API
固定 IP 管理 IP 资源池查看 P0 新增:ListUK8SStaticIp
已有:DescribeUK8SResource 信息不够全
固定 IP 删除 P0 新增:DeleteUK8SStaticIp
后端调用 DeleteUK8SResource 删除 CRD 资源,并释放 VpcIP
固定 IP 迁移 P1 新增:MoveUK8SStaticIP
固定 IP 插件管理 插件启用 P0 已有:UpdateUK8SPluginManageState 更新插件状态,输入字段 PluginName = StaticIP
后端:做固定 IP 插件的兼容,当前版本中只支持开启,不支持关闭
版本查看 P1 已有:GetUK8SPluginInfo 获取插件版本信息及状态,返回增加 StaticIPInfo 矩阵
后端:现在已经有 CNI 插件相关信息返回,需要处理如果用了 ipamd 插件,如何做版本的返回
版本升级 P1 已有:UpdateUK8SPlugin 插件升级
后盾:现在已经有 CNI 插件升级,需要处理 ipamd 版本的升级

3. 功能点详述

3.1 固定 IP 插件启用

  • 「插件」Tab 更名为「应用中心」,保留 etcd 备份、NPD、日志 ELK,新增固定 IP 管理;新增「插件管理」Tab,将 CNI、CSI、CP、VK 插件升级移至该 Tab 下。
  • 未开启固定 IP 插件功能前,插件页显示固定 IP 的基础信息,并提供开启按钮。
  • 点击「立即开启」,调用 UpdateUK8SPluginManageState,开启固定 IP 功能

image.png

页面文字:
固定 IP 适用于对容器固定 IP 强依赖的场景。
在传统的虚拟机部署形式下,部分客户依赖虚拟机 IP 地址,用于问题排查、监控、流量分配等,固定 IP 支持能够帮助用户更好地从虚拟机向容器迁移,提升运维效率。固定 IP 仅支持 StatefulSet 形式的资源控制器。
对 IP 无限制的业务不推荐您使用固定 IP 模式,请谨慎开启。详见:固定 IP 使用))

开启二次确认:
image.png
!! 对 IP 无限制的业务不推荐您使用固定 IP 模式,请谨慎开启。
开启后将无法关闭固定 IP 功能。确认开启吗?

3.2 固定 IP 池查看

3.2.1 页面逻辑

image.png

  • 迁移、释放按钮,均仅在 IP 状态均为「未绑定」时可用
  • 「迁移」按钮悬浮说明:将内网 IP 迁移到其他节点,仅在 IP 未与 Pod 绑定时可用。在移除集群节点前,请确保节点上未被绑定的内网 IP 均迁移到其他节点,避免内网 IP 被误释放。
  • 「释放」按钮悬浮说明:释放内网 IP,仅在 IP 未与 Pod 绑定时可用。释放后该 IP 可能被其他资源或应用占用,导致 StatefulSet 再次扩容时无法申请到原 IP,请谨慎操作。
  • 发布记录链接:https://docs.ucloud.cn/uk8s/network/cni_update

    3.2.2 API ListUK8SStaticIp 说明

    输入参数
字段 类型 必填 页面默认值
Region string 前端根据集群传入
ProjectId string 前端根据集群传入
ClusterId string 前端根据集群传入

返回参数

字段 类型 说明
RetCode int
Action string
Name string CRD 名称,即对应的 Pod 名称
Attached bool 是否与 Pod 绑定,True:绑定,False:未绑定
StatefulSet string Pod 对应的 StatefulSet 名称
Namespace string CRD 及 Pod 所在的命名空间
VpcIP string VpcIP
VpcId string VPC 网络资源 ID uvnet-xxxxxxxx
SubnetId string 子网资源 ID subnet-xxxxxxxx
Mac string 对应的主机 Mac 地址(不在页面显示)
UHostId string 对应的主机 UHostId
UHostName string 对应的主机名称
InternalIP string 主机内网 IP(前端标题:节点内网 IP)
LastDetachedTime timestamp 上一次解绑的时间
ReleaseTime string hms 或 never

3.3 固定 IP 释放

3.3.1 页面逻辑

image.png

  • 在固定 IP 展示页,点击「释放」按钮后,进入该页面
  • 展示选中的固定 IP,及对应的 Pod 名称的列表

    3.3.2 API DeleteUK8SStaticIp 说明

    输入参数
字段 类型 必填 说明
Region string 前端根据集群传入
ProjectId string 前端根据集群传入
ClusterId string 前端根据集群传入
Namespace string 前端根据页面选择的 CRD 信息传入
Name string 前端根据页面选择的 CRD 信息传入
  • 考虑到 API 之后有可能开放给客户,将 NS + Name 作为输入参数,比用 SubnetId + VpcIp 更合理一下,用户要释放的是 StatefulSet 缩容 / 删除后残留的 Ip,不需要知道这个 Ip 具体是什么。Pod、CRD、Ip 的对应和清理都由后端来完成。

返回参数

字段 类型 说明
RetCode int
Action string

3.4 固定 IP 迁移

3.4.1 页面逻辑

image.png

  • 在固定 IP 展示页,点击「迁移」按钮后,进入该页面。
  • 展示该 UK8S 集群中,所有和该固定 IP(CRD)在同一 VPC 子网下面 Node 节点,单选。
  • 页面模块参考 EIP 绑定的那个。

    3.4.2 API MoveUK8SStaticIP

    输入参数
字段 类型 必填 说明
Region string 前端根据集群传入
ProjectId string 前端根据集群传入
ClusterId string 前端根据集群传入
Namespace string 前端根据页面选择的 CRD 信息传入
Name string 前端根据页面选择的 CRD 信息传入
TargetMac string 二选一 前端根据用户选择的目标云主机传入(ListUK8SClusterNodeV2 返回中包含了主机的 Mac 地址)
TargetUhostId string 二选一 后期如果用户需要自行调用 API,可通过 UhostId 来传参
  • 输入待迁移的 VpcIp 对应的 CRD 的 Ns 和 Name(Pod Name),以及目标云主机的资源 ID,Pod、CRD、Ip、Mac 的对应关系查询及都由后端来完成

返回参数

字段 类型 说明
RetCode int
Action string

3.5 固定 IP 升级

3.5.1 页面逻辑

image.png
!! 升级 IPAMD 插件,将同步将所有节点 CNI 网络插件版本升级至最新版本,升级过程约需要 1-3 分钟。
集群网络插件升级时,请勿进行服务发布等操作。