K8S Advance: 集群 IP 地址管理指南

Kubernetes 网络模型要求每个 Pod 都拥有一个唯一的 IP 地址,并且这些 Pod 之间可以直接通信,无需 NAT。IP 地址管理(IPAM)是集群规划和运维中的核心环节。不当的 IP 规划可能导致节点资源耗尽、Pod 无法调度或网络冲突。

一、Kubernetes 中的 IP 地址类型

Node IP

  • 集群中每个物理机或虚拟机的 IP 地址,通常来自宿主机网络接口。

  • 用途:节点间通信、与外部网络交互。

  • 注意:kubectl get nodes -o wide 中的 INTERNAL-IP 即 Node IP。

Pod IP

  • 每个 Pod 分配的 IP 地址,来源于 Pod CIDR。

  • 用途:Pod 之间通信。

  • 通过 CNI 插件管理,默认情况下外部不可访问。

Cluster IP

  • Service 的虚拟 IP(VIP),用于负载均衡和服务发现。

  • 来源:Service CIDR。

  • 用途:集群内部访问服务。

External IP / LoadBalancer IP

  • 用于将 Service 暴露到集群外部。

  • 来源:云提供商或手动分配。

  • 用途:外部访问服务。

二、核心 CIDR 规划

CIDR (Classless Inter-Domain Routing,无类别域间路由):是一种 IP 地址分配和路由的表示方法,用于更高效地划分和管理 IP 地址空间。

1. Pod CIDR

  • 用途:分配 Pod 的 IP。

  • 设置方式:kube-controller-manager --cluster-cidr=<CIDR> 或由 CNI 插件管理。

  • 规划建议:

    • 计算公式:最大节点数 × 每节点最大 Pod 数

    • 示例:100 节点 × 50 Pod = 5000 IP → 可选 /19(8192 IP)

    • 避免与内网、VPC 等冲突,建议使用私有网段 10.244.0.0/16、192.168.0.0/16、172.16.0.0/12。

2. Service Cluster CIDR

  • 用途:分配 ClusterIP。

  • 设置方式:kube-apiserver --service-cluster-ip-range=<CIDR>

  • 规划建议:

    • Service 数量通常少于 Pod,/20 或 /16 足够。

    • 必须与 Pod CIDR 不重叠。

3. Node 网络

  • 节点 IP 必须能与 Pod/Service 网络互通。

  • 一般由 CNI 插件设置覆盖网络或路由规则。

三、CNI 插件与 IPAM

IPAM(IP Address Management,IP地址管理)是指对IP地址空间进行规划、分配、跟踪和管理的系统或机制。在云原生和容器网络(如 Kubernetes)中,IPAM 是网络基础设施的关键组成部分。

Host-local IPAM

(如 Flannel 默认方式):

  • 每个节点从 Pod CIDR 中分配固定子网(如 /24)。

  • 优点:简单高效,缺点:子网固定,扩容需规划

集中式 IPAM

(如 Calico BGP/IPIP 模式):

  • 管理全局 IP 池,可支持非连续 IP 分配。

  • 支持灵活扩容和多集群 IP 管理。

关键点:CIDR 规划必须与 CNI 插件的 IPAM 策略匹配,否则可能出现调度失败或 IP 冲突。

四、管理实践与最佳策略

1. 预留空间

  • 为未来扩容预留 20-30% IP 地址。

  • 示例:需要 5000 个 IP → 分配 6500+。

2. 使用大 CIDR 并合理划分子网

  • Pod CIDR /16 → 每节点分 /24。

  • 优点:集中管理,避免频繁调整。

3. 监控 IP 使用情况

  • 查看节点子网:
bash 复制代码
kubectl get nodes -o custom-columns='NAME:.metadata.name,IP:.status.addresses[?(@.type=="InternalIP")].address,POD_CIDR:.spec.podCIDR'
  • 查看 Pod IP:
bash 复制代码
kubectl get pods -o wide

4. 插件工具

bash 复制代码
Calico:calicoctl ipam show --show-blocks
Cilium:cilium status

5. 处理 IP 耗尽

**根本原因:**节点子网过小或 Pod 密度过高。

解决方法:

扩展 IP 池(动态 CNI)。

调整节点子网大小(谨慎操作,可能需要节点排水)。

增加新节点(最常用方案,配合 Cluster Autoscaler)。

6. Service 网络管理

  • ClusterIP 自动管理,使用 kubectl get svc 查看。

  • 可通过 spec.clusterIP 指定固定 IP(需在 CIDR 范围内且未被占用)。

五、总结表格

|-------------|--------------|-----------|----------------|------------------------|
| IP 类型 | 来源 | 用途 | 管理方 | 核心规划点 |
| 核心规划点 | 主机网络 | 主机网络 | 基础设施/云 | 与 Pod/Service CIDR 可路由 |
| Pod IP | Pod CIDR | Pod 间通信 | CNI 插件 | 根据节点/Pod 规模计算,避免冲突 |
| Cluster IP | Service CIDR | 服务发现与负载均衡 | kube-apiserver | 与 Pod CIDR 不重叠,中等大小 |
| External IP | 云或手动 | 外部访问服务 | 云控制器管理器 | 通常自动管理 |

相关推荐
头茬韭菜3 分钟前
4.9 SSRF 防护 — Web 工具的出站安全与私有 IP 拦截
前端·tcp/ip·安全
BullSmall16 分钟前
Sonarqube9.9 docker 镜像启动后 conf 下的配置文件没有了
docker·容器·eureka
2401_873479401 小时前
SOC告警日志中IP归属不明怎么办?部署IP离线库三步提升响应效率
网络·网络协议·tcp/ip
hay_lee2 小时前
Kubernetes StatefulSet:OrderedReady 极简指南
云原生·容器·kubernetes
晚风吹长发2 小时前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构
电子科技圈2 小时前
先进封装、芯粒架构和3D集成——先进异构集成亟需兼具标准化与定制化能力的互联及总线IP解决方案
tcp/ip·设计模式·架构·软件构建·代码规范·设计规范
ShiXZ2132 小时前
Docker Compose 安装与配置指南
运维·docker·容器
BullSmall3 小时前
Anolis OS 8.10 Docker 部署 SonarQube 9.9 完整教程
运维·docker·容器
德迅云安全-上官3 小时前
德迅云安全游戏盾与DDoS高防IP对比:差异、优势及选型指南
tcp/ip·游戏·ddos
成为你的宁宁4 小时前
【K8s HPA 水平扩缩容】
kubernetes·hpa