cilium 和 kubeovn 选型对比参考

460 阅读3分钟
功能ciliumkube-ovn
基础容器网络转发支持支持
L4 Loadbalancer支持不支持,替代方案 metallb
Cluster Mesh 支持支持
带宽管理器支持支持
kube-proxy替代,替代kube-proxy的 iptables或ipvs方案,提升数据面性能。支持不支持
BGP支持支持
Egress Gateway支持支持
Service Mesh支持不支持,替代方案istio
Ingress支持不支持,替代方案Ingress nginx controller
underlay不支持支持
sdn不支持支持
sriov网卡 offload不支持支持
Service Map (显示服务之间的流量)支持不支持,替代方案 DeepFlow
metrics export支持支持
网络跟踪(捕获请求,传播路径,记录通信流量,延迟等)支持不支持,  替代方案 DeepFlow
Identity-aware L3/L4/DNS Network Flow Logs (指的是带有身份识别功能的网络流量日志,可以在第三层(L3)、第四层(L4)和DNS层面提供详细的流量信息)支持不支持, 替代方案 DeepFlow
Cilium的协议感知可见性为应用程序所有者提供了对其工作负载在协议(TLS, gRPC, Kafka, DNS, and HTTP, and other ones like SCTP)级别的通信深入洞察力。支持不支持, 替代方案 DeepFlow
提供节点间的加密Ipsec或者wireGuard支持支持
l3 l4 networkpolicy支持支持
networkpolicy 编辑可视化支持不支持
集群互联, 多集群之间的policies支持不支持
集群范围内的policy (CiliumClusterwideNetworkPolicy )支持不支持

cilium 相比 kube-ovn 优势:

  1. cilium 提供了功能很齐全,但是kube-ovn大部分只提供了cni层面的功能。 然而如上表kube-ovn也可以和其他组件共同使用来弥补。 可观测性上,由于cilium使用ebpf转发,更方便做流量监控,ovn 使用openflow转发,可能存在和deepflow兼容的问题(可能得单独调研cilium和 kube-ovn+deepflow 两套方案的差别),这里有云杉自己做的一套对比 deepflow.io/blog/025-ne…
  2. 由于替代了 kube-proxy, service 相关的转发效率提高5倍,同时大大减少了cpu消耗 cilium.io/blog/2020/0…
  3. cilium 1.13 提供veth替代方案,使用meta设备将pod的流量直通到了物理网卡,将Pod性能提升到了hostnetwork水平,该功能类似sriov vf offload,但是相比sriov好处是不需要特定网卡支持,目前该功能处于实验阶段。
  4. cilium 提供big TCP 功能,在数据密集场景会对带宽提高到50%(理论上内核满足条件,kube-ovn也能实现).
  5. cilium 提供了TCP BBR 拥塞算法,大大提升了在有中度丢包的链路下的网络性能(理论上内核满足条件,kube-ovn也能实现)
  6. cilium 和 kube-ovn 都支持集群互联, 但cilium不需要额外部署控制器,使用的bgp同步路由。kube-ovn的同步路由使用ovn-ic控制器完成。
  7. 其他细化功能:
    cilium提供流量重定向的功能。CRD ciliumLocalRedirectPolicy。
    cilium支持nat46, nat64
    cilium 支持集群互联场景下,集群之间的networkpolicy

cilium 相比 kube-ovn 劣势:

  1. kube-ovn提供了underlay的功能,适合客户的overlay underlay混合部署。
  2. kube-ovn提供iaas网络的功能,参考了openstack neutron (vpc, subnet, eip ,lb, nat等等)。
  3. cilium对内核要求比较高。至少是5.x以上,尤其是一些比较新的功能,像big tcp,用的内核版本到了6.3 以上。而kube-ovn kernel 3.x以上就可以了
  4. kube-ovn 更适合做硬件加速,智能网卡,dpu offload,支持DPDK驱动。

个人小结:

service mesh, gateway IP, ingress 这些功能排开。在cni 功能层面来说,cilium最大的优势在于流量可观测,如果deepflow + kube-ovn方案不存在太多兼容性上的问题,并且能够和cilium达到大致一样的效果,cilium 的优势就不会太明显。

cilium 性能上的优势主要就在替代kube-proxy的性能提升,还有使用meta device替代veth的(cilium 1.13 release note 提出这个功能处于实验阶段)。

cilium 劣势也比较明显就是内核要求比较新。