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 功能
页面文字:
固定 IP 适用于对容器固定 IP 强依赖的场景。
在传统的虚拟机部署形式下,部分客户依赖虚拟机 IP 地址,用于问题排查、监控、流量分配等,固定 IP 支持能够帮助用户更好地从虚拟机向容器迁移,提升运维效率。固定 IP 仅支持 StatefulSet 形式的资源控制器。
对 IP 无限制的业务不推荐您使用固定 IP 模式,请谨慎开启。详见:固定 IP 使用))
开启二次确认:
!! 对 IP 无限制的业务不推荐您使用固定 IP 模式,请谨慎开启。
开启后将无法关闭固定 IP 功能。确认开启吗?
3.2 固定 IP 池查看
3.2.1 页面逻辑
- 迁移、释放按钮,均仅在 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 页面逻辑
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
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 页面逻辑
- 在固定 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 页面逻辑
!! 升级 IPAMD 插件,将同步将所有节点 CNI 网络插件版本升级至最新版本,升级过程约需要 1-3 分钟。
集群网络插件升级时,请勿进行服务发布等操作。