Skip to content

答疑:Service 的 IP 不是真实 IP,那 Pod 的 IP 是真实 IP 吗?

简短回答

Pod 的 IP 是“真实”的 IP,但它不是公网 IP,也不是物理机的 IP。


1. Service 的 ClusterIP:纯虚拟

ClusterIP 不存在于任何网卡上,它只是一个 iptables/ipvs 规则中的匹配目标

text
客户端 -> 10.96.123.45:80(ClusterIP)


        iptables/ipvs 规则命中


        DNAT 到 Pod IP:targetPort

所以 ClusterIP 本身没有进程监听、没有网卡绑定


2. Pod 的 IP:真实的容器网络 IP

Pod IP 是真实分配给 Pod 网络接口的 IP:

  • 由 CNI 插件(如 Calico、Flannel、Cilium)分配
  • 绑定在 Pod 内部的网络接口上(在 Linux 中通常是 veth pair / sandbox 接口)
  • 在集群网络范围内可路由、可达
  • 其他 Pod 可以直接用 Pod IP 访问它
text
Pod A: 10.244.1.10  ← 真实分配在 Pod 网卡上
Pod B: 10.244.2.15  ← 真实分配在 Pod 网卡上

3. 但是 Pod IP 不稳定

虽然 Pod IP 是真实的,但它有两个致命特点:

特点说明
生命周期短Pod 删除重建后,IP 通常会变
临时性滚动更新、扩缩容、节点故障都会导致 IP 变化

所以不能直接写死 Pod IP,需要 Service 来提供稳定的访问入口。


4. 类比

对象类比是否“真实”
Service ClusterIP公司总机号码❌ 虚拟号码,没有实体话机
Pod IP某个员工办公桌的分机号✅ 真实存在,可以接通
Node IP公司大楼的地址✅ 物理地址

5. 总结

Pod IP 是真实分配在 Pod 网络接口上的 IP,在集群内部可路由可达;但它会随着 Pod 重建而变化,所以不能作为稳定的服务入口。

Service 的 ClusterIP 是虚拟 IP,不对应任何网卡;它的作用是把一组动态变化的 Pod IP 封装成一个稳定入口。

所以 Service 解决的是稳定性 + 负载均衡问题,Pod IP 解决的是实际数据包终点问题。