Skip to content

RKE1 + Kubernetes 1.16.3 节点 IP 使用情况检查文档

一、概述

在 RKE1 + K8s 1.16.3 集群中,"节点 IP 是否耗尽"通常涉及两个层面:

  1. 集群内容器的 PodCIDR 分配情况(kube-controller-manager 内置 IPAM)
  2. 云平台底层子网(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

判断标准:

  • 默认每节点 /24253 个可用 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 耗尽的解决方向

  1. PodCIDR 池耗尽:扩大 cluster-cidr(需重建或新增网段,变更风险高,需评估);或减少节点数 / 调整每节点 PodCIDR 掩码。
  2. 单节点 IP 耗尽:降低节点上 Pod 密度、清理异常 Pod、调整 max-pods 与每节点 PodCIDR 大小的匹配关系。
  3. VPC 子网耗尽:扩容子网、新增子网、清理闲置云资源(闲置 LB、释放未回收的弹性 IP 等)。

文档生成时间:2026-07-22