@
WithLin 原因比较多,比如 Cilium 功能太多,而大部分功能在内网是不需要的,比如 NetworkPolicy 、非 VxLAN 隧道支持
Cilium 为了适配各种场景、各种 kernel 版本,使得它的复杂度很高,而我们的场景要小很多;同时还有一些场景是 Cilium 不支持的,比如多个物理网卡
一些额外的功能,比如 Pod 内多网卡,社区方案只能用 multus ,而 multus 需要通过 crd 来存储数据;历史原因 Pod 的 IP 需要 BGP 发布到 Underlay ,所以需要额外的 IPAM
Cilium 能支持的规模也太小,因为大量使用了 apiserver 的 api ,基本上集群规模到 2k 左右就到头了;同理太多的功能判断也导致数据面的性能没有做到最好
维护 Cilium 的难度不亚于参考 Cilium 的方案重写一个,大部分思想还是从 Cilium 来的,只是代码是重写的,以及抄了 Cilium 部分 ebpf 片段。