K8s网络概念
title: K8s概念_网络 date: 2026-02-04 categories: - K8s tags: - 学习笔记
摘要:深入解析 Kubernetes 网络设计的“三条底层原则”与四层通信模型,并横向对比 Flannel、Calico 与基于 eBPF 的 Cilium 等主流 CNI 插件的工作原理与性能优劣
K8s网络概念
k8s集群本省不直接负责容器之间的网络通信,而是通过CNI(容器网络接口)实现网络通信
K8s 网络本质上是一个由 CNI(负责通路)、kube-proxy(负责转发) 和 DNS(负责寻址) 共同构建的虚拟网络环境
网络三条底层原则
-
所有 Pod 之间可以直连通信:无需通过 NAT(网络地址转换)。
-
所有 Node 与 Pod 之间可以直连通信:无需通过 NAT。
-
Pod 看到的 IP 就是别人看到的 IP:即 Pod 的 IP 是全局唯一的
四层通信模型
容器间通信 (Container-to-Container)
这是最简单的层次。在同一个 Pod 内的多个容器共享同一个 Network Namespace。
-
实现方式:它们共享同一个 IP 和端口空间。
-
通信手段:通过
localhost互相访问。就像在同一台电脑上运行的不同进程一样。
Pod 间通信 (Pod-to-Pod)
这是 K8s 网络最核心的部分,分为两种情况:
-
同节点 Pod 通信:通过 Linux 虚拟网桥(如
cbr0或docker0)直接二层转发。 -
跨节点 Pod 通信:这是 CNI 插件(如前文提到的 Flannel, Calico)发挥作用的地方。它们通过 Overlay(隧道封装) 或 Routing(路由直通) 技术,将 Pod 的数据包封装在物理节点的 IP 包中发送出去。
Pod 到 Service 通信 (Pod-to-Service)
Pod 的生命周期很短,IP 经常变。为了提供稳定的访问入口,K8s 引入了 Service。
-
实现核心:kube-proxy。
-
工作逻辑:每台机器上的
kube-proxy会配置iptables或IPVS规则。当你访问 Service 的虚 IP (ClusterIP) 时,内核会拦截这个请求,并根据负载均衡算法将其重定向到后端真实的 Pod IP。
外部访问通信 (External-to-Service)
如何让集群外部的用户访问到集群内的服务?主要有三种方式:
-
NodePort:在每个节点上开一个高位端口(默认 30000-32767),流量经过节点端口转发给 Service。
-
LoadBalancer:配合云厂商提供的负载均衡器,分配一个公网 IP。
-
Ingress:运行在七层(HTTP/HTTPS)的流量调度器,相当于集群内部的反向代理(如 Nginx Ingress),可以根据域名和路径分发流量。
三大网络插件
Flannel:极简
由 CoreOS 开发的最早、最简单的 CNI 插件。它的核心设计目标是“让网络通起来” 工作原理: 使用 VXLAN 技术。它在主机网络之上创建一个覆盖网络(Overlay Network),通过在 UDP 数据包中封装 Pod 流量,让不同节点的 Pod 像在同一个局域网内一样通信。
-
优点 安装极简 轻量: 适合资源受限的边缘计算或开发测试环境
-
缺点 无网络策略network policy: 这是最大的短板,它无法控制 Pod 之间的访问权限(谁能访问谁) 性能一般: 数据包需要多次封包解包,在高并发场景下 CPU 开销相对较高
Calico:企业级
目前生产环境中使用最广泛的 CNI 插件。它以强大的网络策略控制和高性能著称 工作原理 :默认不使用封包技术,而是利用 BGP 协议将宿主机模拟成路由器。Pod 流量像普通物理机流量一样在三层网络(L3)中直接路由
-
优点: 高性能:在不使用封包(No-overlay)的模式下,性能几乎接近物理网络。 强大的安全策略:支持非常精细的 Network Policy,可以实现类似防火墙的安全隔离。 灵活性:支持多种模式(BGP、VXLAN、IPIP),适配公有云和私有云。
-
缺点: 配置复杂: 尤其是在大型物理机集群中使用 BGP 模式时,需要网络工程师配合配置交换机。
Cilium:“性能巅峰”(基于eBPF)
近几年崛起的黑马,代表了 K8s 网络的未来方向。它通过 Linux 内核的 eBPF 技术从底层彻底重构了数据包的处理流程 工作原理: eBPF 允许 Cilium 直接在 Linux 内核中运行代码来处理网络包,跳过了传统的 iptables 链条
-
优点 极高性能:绕过了繁重的
iptables规则,在大规模 Service 转发时优势巨大。 深度可观测性:配合 Hubble 工具,可以清晰地看到每一个 Pod 流量的去向、延迟、丢包原因。 L7(应用层)安全:不仅能限制 IP,还能限制“这个 Pod 只能发 HTTP GET 请求,不能发 POST”。 无 sidecar 服务网格:可以替代部分 Istio 的功能,降低系统复杂度 -
缺点 内核要求高:需要较新版本的 Linux 内核(建议 5.x 以上)。 学习难度大:涉及 eBPF 底层技术,排查复杂问题时门槛较高
插件对比总结
| 维度 | Flannel | Calico | Cilium |
|---|---|---|---|
| 核心技术 | VXLAN (UDP) | BGP / VXLAN | eBPF |
| 网络策略 | 不支持 | 强项 (L3/L4) | 最强 (L3-L7) |
| 性能 | 一般 | 高 | 极高 |
| 可观测性 | 基本没有 | 较好 | 极佳 (Hubble) |
| 维护难度 | 极低 | 中等 | 高 |
| 最佳用途 | 开发测试/边缘 | 主流生产环境 | 高性能微服务/安全架构 |
更多推荐


所有评论(0)