pod IP和节点IP的关系
节点 IP(Node IP)和 Pod IP 是 Kubernetes 网络模型里两个完全不同的概念,它们的关系可以简单理解为 “宿主机 IP” 和 “虚拟机/容器 IP” 的关系。
1. 基本概念
节点 IP(Node IP)
- 含义:Kubernetes 集群中每个节点(物理机或虚拟机)的真实网络 IP 地址。
- 范围:属于你实际的 VPC 网络网段,能在 VPC 内被其他节点或设备直接访问。
- 用途: 节点之间通信外部访问节点(如 SSH、kubectl 访问 API Server)作为 Pod 出网的 NAT 出口(Pod 访问外部网络时,源 IP 会被转换成节点 IP)
Pod IP
- 含义:Kubernetes 为每个 Pod 分配的虚拟 IP 地址(由
podCIDR网段分配)。 - 范围:属于集群内部的虚拟网络,外部网络默认无法直接访问。
- 用途: Pod 之间互相通信(同一节点或跨节点)Pod 访问集群内服务(Service)通过 Service/Ingress 暴露给外部访问
2. 关系与通信方式
Pod IP 是节点上的一个虚拟接口地址
每个节点上都会有一个 CNI(容器网络接口)插件(如 Flannel、Calico、Cilium)创建的虚拟网卡(如 cni0、flannel.1),Pod 启动时会被分配一个 podCIDR 内的 IP,并通过这个虚拟网卡与节点及其他 Pod 通信。
Pod 与节点的关系
- 一个节点可以有多个 Pod,每个 Pod 有自己独立的 Pod IP。
- Pod IP 只在集群内部可达,默认不能直接从公网访问。
- Pod 访问外网时,节点会做 SNAT(源地址转换),将 Pod IP 换成节点 IP。
- 外部访问 Pod 时,一般通过 Service(NodePort/LoadBalancer/Ingress),先到节点 IP,再转发到 Pod IP。
3. 举个例子
假设你的集群有两个节点:
node-1 | 10.220.168.101 | 10.244.1.0/24 |
node-2 | 10.220.168.102 | 10.244.2.0/24 |
在 node-1 上运行一个函数 Pod:
- Pod 名称:
func-abc-123 - Pod IP:
10.244.1.5 - 节点 IP:
10.220.168.101
通信路径:
- Pod → Pod(同节点) func-abc-123(10.244.1.5)直接访问另一个 Pod(10.244.1.6),通过节点的虚拟网桥(如 cni0)转发。
- Pod → Pod(跨节点) func-abc-123(10.244.1.5)访问 node-2 上的 Pod(10.244.2.3),数据包由 CNI 插件封装后通过节点 IP 网络发送到目标节点,再解封装转发给目标 Pod。
- Pod → 外网 Pod 访问 www.baidu.com,节点做 SNAT,将源 IP 从 10.244.1.5 改为 10.220.168.101 再发出。
- 外网 → Pod 外部通过 Service NodePort(如 30080)访问节点 IP 10.220.168.101:30080,节点再将流量转发到 Pod IP 10.244.1.5:8080。
4. 总结对比
地址类型 | 物理/虚拟机真实 IP | 虚拟网络 IP(CNI 分配) |
范围 | VPC 网络可见 | 仅集群内部可见 |
用途 | 节点通信、NAT出口、外部访问入口 | Pod 之间通信、服务发现 |
生命周期 | 节点存在期间固定 | Pod 创建时分配,销毁后释放 |
与 VPC 关系 | 属于 VPC 子网 | 属于集群 Pod CIDR(虚拟子网) |
✅ 一句话总结:
节点 IP 是宿主机的地址,Pod IP 是宿主机上容器的虚拟地址;Pod 借助节点的网络对外通信,节点负责 Pod 流量的转发和 NAT。
测试开发知识汇总 文章被收录于专栏
一些面试当中总结的知识点和测试框架技术选型以及AI赋能测试的内容

