在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 模型?

  1. 通用需求
    • 中小集群 → Flannel(Overlay)
    • 需网络策略 → Calico(路由/VXLAN)Cilium(eBPF)
  2. 高性能需求
    • 私有云 → Calico-BGP(路由)
    • 公有云 → 云厂商 CNI(如 AWS VPC)
    • 超低延迟 → SR-IOV(Underlay)
  3. 多网卡/特殊网络
    • Multus + Underlay 插件(如 IPVLAN)

💡 趋势:基于 eBPF 的 Cilium 正在成为新一代标准(覆盖路由/Overlay/安全策略),性能与灵活性俱佳。

通过 CNI 模型的灵活选择,Kubernetes 可适配从公有云到裸金属、从微服务到高性能计算的各类场景。

posted @ 2025-08-16 20:16  天道酬勤zjh  阅读(24)  评论(0)    收藏  举报