在 Kubernetes(k8s)中,存在多种不同类型的 IP 地址,它们各自对应不同的网络实体和通信范围,核心可分为 Pod IP、Node IP、Service ClusterIP、External IP 四大类,此外还有一些特殊场景的 IP(如 Ingress IP、Host IP 等)。以下是详细区分:

一、核心 IP 类型及用途

IP 类型 所属实体 作用范围 核心用途 生命周期
Pod IP Pod 容器组 集群内部(Pod 间、Node 与 Pod 间) 标识单个 Pod,用于集群内 Pod 之间的直接通信 随 Pod 创建而生成,Pod 销毁则失效(临时)
Node IP 集群节点(物理机 / 虚拟机) 集群内外均可访问(取决于网络配置) 标识集群节点,用于外部访问 NodePort 服务或节点本身 与节点生命周期一致(长期,除非节点更换)
Service ClusterIP Service 服务 集群内部(仅集群内可访问) 作为 Service 的固定入口,负载均衡到后端 Pod 随 Service 创建而生成,Service 删除则失效(长期)
External IP Service/Ingress 集群外部(公网或企业内网) 允许外部客户端直接访问 Service 或 Ingress 通常是静态 IP(如公网 IP、负载均衡器 IP)

二、详细说明及区别

1. Pod IP:Pod 的 “私有地址”
  • 生成方式:由 Kubernetes 网络插件(如 Calico、Flannel)自动分配,通常来自集群配置的 Pod 子网(如 10.244.0.0/16)。
  • 通信范围:仅在集群内部可见,Pod 之间、Node 与 Pod 之间可直接通过 Pod IP 通信,但外部网络(集群外)无法直接访问 Pod IP(除非通过端口映射或网关转发)。
  • 特点
    • 每个 Pod 独立拥有一个 IP(即使多个容器共享网络命名空间,也共用一个 Pod IP)。
    • 具有临时性:Pod 重建(如重启、调度到其他节点)后,Pod IP 会改变(除非使用固定 IP 方案,如 StatefulSet 的稳定网络标识)。
  • 示例10.244.1.510.244.2.8
2. Node IP:节点的 “物理地址”
  • 生成方式:节点(物理机 / 虚拟机)自身的网络接口 IP,由数据中心网络或云厂商分配(非 Kubernetes 管理)。
  • 通信范围
    • 集群内:Node 之间可通过 Node IP 通信。
    • 集群外:若 Node 具有公网 IP 或在企业内网中,外部可通过 Node IP 访问节点上的服务(如 NodePort 服务)。
  • 特点
    • 是节点的 “固定标识”,与节点绑定,除非节点网络配置变更,否则不会改变。
    • 所有 Pod 都 “运行在 Node 上”,但 Pod IP 与 Node IP 属于不同网段(由网络插件隔离)。
  • 示例192.168.1.10(内网节点 IP)、203.0.113.5(公网节点 IP)
3. Service ClusterIP:Service 的 “集群内固定入口”
  • 生成方式:由 Kubernetes 自动分配(或手动指定),来自集群配置的 Service 子网(如 10.96.0.0/12)。
  • 通信范围:仅在集群内部可见,集群内的 Pod 或组件可通过 ClusterIP 访问 Service,但外部无法直接访问。
  • 特点
    • 是 Service 的 “固定 IP”:即使后端 Pod 重建(IP 改变),ClusterIP 也不会变化,通过 Service 实现 Pod 的 “动态绑定”。
    • 不直接对应物理网络接口,是 Kubernetes 内部的虚拟 IP(由 kube-proxy 维护路由规则)。
  • 核心作用:负载均衡 + 服务发现 —— 通过 ClusterIP:Port 访问 Service 时,请求会被转发到后端匹配的 Pod(基于 Selector)。
  • 示例10.96.0.10(默认 Service 子网中的 IP)
4. External IP:外部访问的 “入口地址”
  • 生成方式
    • 对于 LoadBalancer 类型的 Service:由云厂商负载均衡器分配(如 AWS ELB、阿里云 SLB 的公网 IP)。
    • 对于 Ingress:通常是 Ingress Controller 所在节点的公网 IP 或负载均衡器 IP。
    • 也可手动为 Service 配置 externalIPs(如企业内网中的固定 IP)。
  • 通信范围:集群外部,允许外部客户端(如用户浏览器、其他系统)通过该 IP 访问集群内的服务。
  • 特点
    • 是集群对外暴露服务的 “桥梁”,通常需要配合端口(如 80443)使用。
    • 静态性:除非手动变更或负载均衡器重建,否则保持不变。
  • 示例123.123.123.123(公网 IP)、192.168.2.100(企业内网 IP)

三、其他特殊 IP 类型

1. Ingress IP(Ingress Controller IP)
  • 属于 External IP 的一种,特指 Ingress Controller 绑定的 IP(通常是节点公网 IP 或负载均衡器 IP)。
  • 外部请求通过 Ingress IP:Port 或域名(解析到 Ingress IP)访问,由 Ingress Controller 转发到后端 Service。
2. Host IP(主机 IP)
  • 与 Node IP 含义相同,指节点的物理 IP(在 Pod 中,可通过环境变量 HOST_IP 获取所在节点的 IP)。
3. Loopback IP(回环 IP)
  • 127.0.0.1,每个 Pod 和节点都有,用于本地进程间通信(如 Pod 内的容器之间通过回环地址通信)。

四、核心区别总结(通过通信场景理解)

  1. Pod 访问 Pod:通过 Pod IP(直接通信,无需经过 Service)。
  2. Pod 访问 Service:通过 Service ClusterIP(由 Service 负载均衡到后端 Pod)。
  3. 外部访问 NodePort 服务:通过 Node IP:NodePort(如 192.168.1.10:30080)。
  4. 外部访问 LoadBalancer 服务:通过 External IP:Port(如 123.123.123.123:80,由云负载均衡器转发)。
  5. 外部访问 Ingress 路由:通过 Ingress IP:Port 或域名(解析到 Ingress IP),由 Ingress Controller 转发到 Service。

五、关键结论

  • Pod IP 是 Pod 的临时标识,用于集群内通信。
  • Node IP 是节点的固定标识,集群内外均可访问节点。
  • ClusterIP 是 Service 的固定入口,仅集群内可用,实现 Pod 动态绑定。
  • External IP 是集群对外的入口,用于外部访问服务。
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐