Kube-Proxy 和 CNI:Kubernetes 网络的支柱

发布: (2026年1月4日 GMT+8 02:55)
3 min read
原文: Dev.to

Source: Dev.to

概览

Kubernetes 网络看起来很简单:每个 Pod 都会获得自己的 IP 地址,Service 会自动将流量路由到相应的 Pod。 这种简洁性由两个核心组件提供支持:

  • 容器网络接口(CNI)
  • kube-proxy

它们共同负责 IP 分配、网络接口设置、路由以及集群内的 Service 负载均衡。

kube-proxy

kube-proxy 负责使 Service 能够工作,通过将 Service 的 IP 和端口转换为实际的 Pod 端点来实现。

  • Service IP 稳定性 – kube-proxy 确保 Service IP 即使在底层 Pod 短暂存在的情况下,也保持为一个稳定的入口点。
  • 路由规则创建 – 当创建 Service 或其端点时,kube-proxy 会在节点上安装 iptables 或 IPVS 规则,将流量从 Service IP 引导到对应的 Pod。
  • 动态更新 – 若为 Service 提供服务的 Pod 被添加或删除,kube-proxy 会相应更新内核规则,保持服务可用性。
  • 负载分配 – 通过利用内核网络(iptables 或 IPVS),kube-proxy 将进入的流量在实现该 Service 的一组 Pod 之间进行分配。
  • 没有 kube-proxy – Service IP 仍会存在,但不会将流量转发到 Pod;kube-proxy 将 Service IP 与端口“接线”到实际的 Pod 端点。

容器网络接口(CNI)

CNI 插件处理 Pod 级别的网络,使 Pod 能在节点内部和跨节点之间相互通信。

  • IP 分配 – 每个 Pod 从集群的 IP 池中获取唯一的 IP 地址。
  • 接口创建 – CNI 为 Pod 创建一对 veth 设备,将一端放入 Pod 的网络命名空间,另一端留在宿主机上。
  • 路由配置 – CNI 设置路由规则,使得 Pod 能够访问位于不同节点的其他 Pod,通常通过配置宿主机的路由表或覆盖网络实现。
  • 网络隔离 – 通过管理命名空间和接口,CNI 确保 Pod 之间相互隔离,同时在需要时仍能进行通信。

这两个组件——负责 Service 路由的 kube-proxy 和负责 Pod 网络的 CNI——构成了 Kubernetes 网络的骨干,使整个集群能够实现无缝通信。

Back to Blog

相关文章

阅读更多 »

在 Kubernetes 云环境中确保全企业可视性时

cloud 性能仍然笼罩在雾中。许多企业已经完成或正在进行 cloud 转型,但对于是否已经充分获取整个 cloud 环境的可视性仍然存疑。目前使用的是什么工具,这些工具是否真的有效,以及不仅仅是 cloud …