文档中心>容器服务>实践教程>网络>共享网卡固定 IP 模式 TKE 集群移除子网

共享网卡固定 IP 模式 TKE 集群移除子网

最近更新时间:2025-12-24 14:04:21

我的收藏

前言

共享网卡固定 IP 模式的集群移除子网需严格遵循本流程,如果 Pod 仍在使用子网时执行移除,将影响后续新增 Pod 的 IP 分配,即使分配其他子网也可能受影响。移除后如发现仍有 Pod 在使用该子网,需尽快将其重建至其他子网。

如何确定集群网络类型

操作步骤如下:
1. 登录 容器服务控制台,选择左侧导航中的集群
2. 在集群页面,选择目标集群名称,进入集群详情页,查看集群基础信息下的节点和网络信息。
3. 查看容器网络插件是否为 VPC-CNI 共享网卡多 IP 以及是否固定 Pod IP


查看集群内是否有 Pod 使用待移除子网

首先通过子网 ID 确定子网对应 CIDR:
1. 在集群详情页面,查看集群基础信息下的节点和网络信息
2. 容器子网一栏确认待移除子网的 CIDR。

假设子网 CIDR 为 21.9.32.0/19,那么其范围是 21.9.32.0 - 21.9.63.255。其对应的正则表达式为 "21\\.9\\.(3[2-9]|[4-5][0-9]|6[0-3])",通过对 VpcIP 资源的名称进行检索可以查询到占用目标子网的所有 IP 以及对应的 Pod 资源:
# 需要将命令中的子网正则表达式替换为目标子网的正则表达式
kubectl get vip -ocustom-columns=Name:.metadata.name,phase:.status.phase,policy:.metadata.labels."tke\\.cloud\\.tencent\\.com/static-ip",namespace:.spec.claimRef.namespace,name:.spec.claimRef.name| grep -E "21\\.9\\.(3[2-9]|[4-5][0-9]|6[0-3])" | grep -vE "Attached|Reserved"
该命令的执行结果示例如下:
Name phase policy namespace name
10.0.0.11 Assigned no kube-system test1
10.0.0.12 Assigned no kube-system test2
其中的 namespace 和 name 即对应使用该 IP 资源的 Pod 名称。
如果上述的查询命令无法检索到任何资源,则可以直接跳转到 从集群配置中移除子网 章节进行操作。

禁止在子网中分配 IP

操作步骤如下:
1. 登录 容器服务控制台,选择左侧导航中的集群
2. 在集群页面,选择目标集群名称,进入集群详情页。
3. 选择左侧导航栏中的组件管理,在组件页面选择 eniipamd 组件右侧的修改全局配置

4. 将待删除的子网 ID 添加到 “ipam.onlyNominatedEniSubnets” 列表中。修改后保存并退出。


释放子网内的存量 IP

操作步骤如下:
1. 根据第一步的检索结果,获取集群内所有使用目标子网的 Pod 信息。示例显示当前使用子网内 IP 的 Pod 为 kube-system 下名称为 test1 以及 test2 的 Pod。
2. 执行以下命令删除 Pod 对应的 VpcIPClaim 资源:
kubectl -n<podNamespace> delete vipc <podName>
3. 删除 Pod 对应的 VpcIPClaim 资源以后,对 Pod 进行重建。

删除弹性网卡对应的 VpcIP 资源

执行以下命令,查询当前集群中是否还存在使用目标子网的弹性网卡:
# 需要将命令中的子网正则表达式替换为目标子网的正则表达式
kubectl get vip -ocustom-columns=Name:.metadata.name,phase:.status.phase,policy:.metadata.labels."tke\\.cloud\\.tencent\\.com/static-ip",namespace:.spec.claimRef.namespace,name:.spec.claimRef.name| grep -E "21\\.9\\.(3[2-9]|[4-5][0-9]|6[0-3])" | grep "Attached"
执行以下命令,删除查询到的弹性网卡对应的 VpcIP 资源:
kubectl delete vip <vipName>

从集群配置中移除子网

确认所有子网内的 IP 都释放后,可以移除子网。
操作步骤如下:
1. 登录 容器服务控制台,选择左侧导航中的集群
2. 在集群页面,选择目标集群名称,进入集群详情页。
3. 选择左侧导航栏中的组件管理,在组件页面选择 eniipamd 组件右侧的修改全局配置
4. 将待删除的子网 ID 从 “ipam.subnetIds” 以及 “ipam.onlyNominatedEniSubnets” 列表中删除。修改后保存并退出。