K8S几种常见CNI深入比较

发布于:2025-08-06 ⋅ 阅读:(16) ⋅ 点赞:(0)

以下在技术层面上对 Kubernetes 中的五种 CNI 插件进行深入比较:Flannel、Calico、kube-router、Weave Net 和 Cilium。

比较将从以下几个关键维度展开:

  1. 网络模型(Network Model)
  2. 数据平面(Data Plane)
  3. 控制平面(Control Plane)
  4. 核心功能与特性(Key Features)
  5. 性能与资源开销(Performance & Overhead)
  6. 操作与复杂度(Operability & Complexity)

1. Flannel (简单可靠的 Overlay)

  • 技术概要: 最早期的 CNI 之一,设计目标是提供一个极其简单、轻量级的跨节点 Pod 网络连通方案。
  • 网络模型:
    • Overlay 网络: 默认使用 VXLAN 封装。也支持 host-gw(纯三层路由,但要求所有节点在同一个二层网络)。
    • 每个节点从一个大的集群 CIDR 中分配一个独立的子网(通常是 /24)。
  • 数据平面:
    • VXLAN 模式: 数据包通过 Linux 内核的 VXLAN 模块进行封装和解封装,由一个名为 flannel.1 的虚拟设备 (VTEP) 处理。
    • host-gw 模式: 不进行封装,直接修改节点的内核路由表(ip route),利用内核进行高效的路由转发。
  • 控制平面:
    • 一个简单的 flanneld 守护进程(DaemonSet)。
    • 通过 watch Kubernetes API(或直连 etcd)来获取节点 IP 与其 Pod 子网的映射关系,并据此更新后端(如创建 VXLAN 转发表或写入路由表)。
  • 核心功能与特性:
    • 网络策略: 原生不支持 Kubernetes Network Policies。这是一个关键短板。
    • 服务负载均衡: 完全依赖 kube-proxy
    • 加密: 不支持。
  • 优点:
    • 极其简单:配置和部署极为容易,资源消耗极低。
    • 稳定可靠:经过长期大规模验证,VXLAN 模式兼容性极好。
  • 缺点:
    • 功能单一,缺乏高级特性(网络策略、加密、可观测性)。
    • VXLAN 存在封装开销(约 10-20% 性能损失)。

2. Calico (高性能纯三层路由与强大策略)

  • 技术概要: 企业级,功能丰富,以高性能和强大的网络安全策略著称,是生产环境中最常见的选择之一。
  • 网络模型:
    • 纯三层路由 (BGP): 默认模式。将每个节点视为一个路由器,通过 BGP 协议在各节点间分发 Pod 的路由信息。无封装,性能最佳。
    • Overlay 封装: 当底层网络不支持 BGP 或需要跨子网时,支持 IPIP 或 VXLAN 封装。
  • 数据平面:
    • 路由: Linux 内核路由表。
    • 网络策略: 使用 iptables 或更现代化的 eBPF 来实现。
    • Felix: Calico 的节点代理(DaemonSet),负责将网络策略和路由信息编程到内核中(写入路由表和 iptables/eBPF 规则)。
  • 控制平面:
    • BGP Speaker (Bird/GoBGP): 在每个节点上运行,负责与其他节点交换路由信息。
    • 状态存储: etcd 或 Kubernetes API (CRDs)。
  • 核心功能与特性:
    • 网络策略:

网站公告

今日签到

点亮在社区的每一天
去签到