在K8S中,CNI模型有哪些?
在 Kubernetes 中,CNI(Container Network Interface) 是容器网络的标准化接口,负责为 Pod 配置网络(分配 IP、设置路由等)。不同的 CNI 插件实现了不同的网络模型,主要分为三大类:Overlay(覆盖)网络、Underlay(底层)网络 和 路由模型。以下是主流模型及其代表插件:
一、Overlay(覆盖)网络模型
原理:
在宿主机的底层网络之上构建一个虚拟网络层,通过隧道封装技术(如 VXLAN、IPsec、Geneve)实现跨主机 Pod 的通信。
特点:
- ✅ 与底层网络解耦:不依赖底层网络设备(如路由器支持 BGP)。
- ⚠️ 性能损耗:封装/解封装增加 CPU 开销(约 10%~20% 带宽损耗)。
- ✅ IP 地址灵活:Pod IP 可自由分配(无需与物理网络协调)。
代表插件:
插件 | 封装协议 | 特点 |
---|---|---|
Flannel | VXLAN/UDP | 简单易用,适合中小集群 |
Calico | VXLAN/IPIP | 支持网络策略(需切 VXLAN 模式) |
Weave Net | VXLAN | 内置 DNS、多播支持 |
Cilium | VXLAN/Geneve | 基于 eBPF 的高性能,支持高级策略 |
二、路由模型
原理:
通过三层路由直接转发 Pod 流量,无需隧道封装。依赖底层网络的路由能力(如节点间 BGP 协议)。
特点:
- ✅ 高性能:无封装开销,接近裸机网络性能。
- ⚠️ 依赖网络设备:需支持 BGP(如 Calico-BGP)或静态路由配置。
- ✅ IP 地址需规划:Pod IP 需在底层网络路由可达。
代表插件:
插件 | 路由协议 | 特点 |
---|---|---|
Calico | BGP | 生产级路由,支持精细网络策略 |
Kube-router | BGP | 集成服务代理和网络策略 |
Cilium | BGP (eBPF) | 基于 eBPF 加速路由 |
三、Underlay(底层)网络模型
原理:
Pod 直接使用底层物理网络的 IP 地址(如 MACVLAN、IPVLAN、SR-IOV),Pod 在网络中表现为独立设备。
特点:
- ✅ 极致性能:绕过宿主机网络栈(如 SR-IOV)。
- ⚠️ IP 地址消耗大:每个 Pod 需占用物理网络 IP。
- ⚠️ 配置复杂:需与物理网络深度集成(如 VLAN 划分)。
代表插件:
插件 | 技术 | 适用场景 |
---|---|---|
MACVLAN/IPVLAN | 虚拟网卡直通 | 高密度容器,低延迟需求 |
SR-IOV CNI | 硬件网卡虚拟化 | 高性能 NFV、DPDK 应用 |
Multus | 多网卡支持 | 为 Pod 附加多个网络接口(如业务网+存储网) |
四、特殊模型
1. 云厂商集成模型
- 原理:直接调用云平台 SDN API(如 AWS VPC CNI、Azure CNI)。
- 特点:
- ✅ Pod 使用云平台 VPC IP,与虚拟机互通无缝。
- ⚠️ IP 地址受限于 VPC 子网大小。
- 插件:
- AWS VPC CNI、Azure CNI、GKE Alias IP。
2. 服务网格模型
- 原理:通过 Sidecar 代理(如 Istio Envoy)管理服务间流量,与 CNI 解耦。
- 代表:Istio、Linkerd。
五、CNI 模型对比总结
模型 | 性能 | 复杂度 | IP 灵活性 | 网络策略支持 | 代表场景 |
---|---|---|---|---|---|
Overlay | 中 | 低 | ✅ 高 | ✅ | 通用集群、跨云环境 |
路由 | 高 | 中 | ⚠️ 中 | ✅ | 企业数据中心、大规模集群 |
Underlay | 极高 | 高 | ❌ 低 | ⚠️ 部分支持 | 金融/NFV低延迟场景 |
云厂商 | 高 | 低 | ❌ 低 | ✅ | 公有云部署 |
六、如何选择 CNI 模型?
- 通用需求:
- 中小集群 → Flannel(Overlay)
- 需网络策略 → Calico(路由/VXLAN) 或 Cilium(eBPF)
- 高性能需求:
- 私有云 → Calico-BGP(路由)
- 公有云 → 云厂商 CNI(如 AWS VPC)
- 超低延迟 → SR-IOV(Underlay)
- 多网卡/特殊网络:
- Multus + Underlay 插件(如 IPVLAN)
💡 趋势:基于 eBPF 的 Cilium 正在成为新一代标准(覆盖路由/Overlay/安全策略),性能与灵活性俱佳。
通过 CNI 模型的灵活选择,Kubernetes 可适配从公有云到裸金属、从微服务到高性能计算的各类场景。