主题
RKE1 + Kubernetes 1.16.3 节点 IP 使用情况检查文档
一、概述
在 RKE1 + K8s 1.16.3 集群中,"节点 IP 是否耗尽"通常涉及两个层面:
- 集群内容器的 PodCIDR 分配情况(kube-controller-manager 内置 IPAM)
- 云平台底层子网(VPC)的 IP 用量
本文档给出两个层面的检查方法和耗尽判断标准。
二、查看集群 Pod IP 分配情况
1. 查看集群总的 Pod 网段
bash
# RKE1 查看 cluster.yml 中的配置
grep -A 5 'services:' cluster.yml | grep cluster_cidr
# 或查看 controller-manager 启动参数
kubectl -n kube-system get pod -l component=kube-controller-manager -o yaml | grep cluster-cidr示例输出:--cluster-cidr=10.42.0.0/16
2. 查看每个节点已分配的 PodCIDR
bash
# 列出所有节点的 PodCIDR
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.podCIDR}{"\n"}{end}'3. 统计已用 PodCIDR 数量 / 网段是否耗尽
bash
# 查看总共分配了多少个子网(默认每节点一个 /24)
kubectl get nodes -o jsonpath='{range .items[*]}{.spec.podCIDR}{"\n"}{end}' | sort | uniq -c判断标准:
- 若
cluster-cidr为/16,节点 PodCIDR 为/24,则最多支持 256 个节点。 - 节点数接近上限时即 PodCIDR 耗尽,新节点会报
CIDR allocation failed。
检查 controller-manager 日志确认:
bash
kubectl -n kube-system logs -l component=kube-controller-manager | grep -i "cidr\|ipam"4. 查看每个节点上实际已用的 Pod IP 数
bash
# 统计指定节点上运行的 Pod 数(近似等于已分配 IP 数,hostNetwork 除外)
kubectl get pods -A -o wide --field-selector spec.nodeName=szb13036 | \
grep -v "hostNetwork" | wc -l
# 或按节点分组统计全集群
kubectl get pods -A -o json | jq -r '
.items[] | select(.spec.hostNetwork != true) |
[.spec.nodeName, .status.podIP] | @tsv' | sort | uniq -c | sort -rn判断标准:
- 默认每节点
/24有 253 个可用 IP。 - 若某节点 Pod 数接近上限(另受
max-pods限制,默认 110),新 Pod 会调度失败或报failed to allocate pod IP。
三、查看云平台底层子网 IP 用量
如果节点 IP 由云平台(VPC)分配:
1. 云控制台查看
在云控制台查看节点所在子网的 已用 IP 数 / 总 IP 数: VPC → 子网 → IP 使用情况。
2. 集群内查看节点 IP
bash
kubectl get nodes -o wide # INTERNAL-IP 列
# 或精确输出 InternalIP
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.addresses[?(@.type=="InternalIP")].address}{"\n"}{end}'3. 容量对比
对比子网 CIDR 容量(如 /24 约 251 个可用 IP)与 节点数 + LB + 其他云资源占用,判断是否耗尽。
四、判断"耗尽"的典型告警信号
| 现象 | 含义 |
|---|---|
新节点加入后 NotReady,日志 failed to allocate CIDR | 集群 PodCIDR 池耗尽 |
Pod 卡在 ContainerCreating,事件 failed to allocate for range 0: no IP addresses available | 该节点 /24 内 IP 耗尽 |
| 云平台控制台子网可用 IP 为 0 | 底层 VPC 子网耗尽 |
五、IP 耗尽的解决方向
- PodCIDR 池耗尽:扩大
cluster-cidr(需重建或新增网段,变更风险高,需评估);或减少节点数 / 调整每节点 PodCIDR 掩码。 - 单节点 IP 耗尽:降低节点上 Pod 密度、清理异常 Pod、调整
max-pods与每节点 PodCIDR 大小的匹配关系。 - VPC 子网耗尽:扩容子网、新增子网、清理闲置云资源(闲置 LB、释放未回收的弹性 IP 等)。
文档生成时间:2026-07-22