使用 cilium 配置网络

里面介绍到 Kubernetes Service 性能和扩展性问题 默认的 Kubernetes 的 Service 实现 kube-proxy,它是使用了 iptables 去配置 Service IP 和负载均衡:

如上图所示: 负载均衡过程的 iptables 链路长,导致网络延时显著增加,就算是 IPVS 模式也是绕不开 iptables 的调用; 扩展性差。iptables 规则同步是全量刷的,Service 和 Pod 数量多了,一次规则同步都得接近 1s;Service 和 Pod 数量多了之后,数据链路性能大幅降低。

NetworkPolicy 性能和扩展性问题 NetworkPolicy 是 Kubernetes 控制 Pod 和 Pod 间是否允许通信的规则。目前主流的 NetworkPolicy 实现基于 iptables 实现,同样有 iptables 的扩展性问题: iptables 线性匹配,性能不高, Scale 能力差 iptables 线性更新,更新速度慢

cilium和其他的cni组件最大的不同在于其底层使用了ebpf技术,而该技术对于Linux的系统内核版本有较高的要求

cilium官方还给出了一份列表描述了各项高级功能对内核版本的要求:

特性最低版本
Bandwidth Manager(带宽管理器)>= 5.1
Egress Gateway
VXLAN Tunnel Endpoint (VTEP) Integration
WireGuard Transparent Encryption
Full support for Session Affinity
BPF-based proxy redirection
Socket-level LB bypass in pod netns
L3 devices
BPF-based host routing
IPv6 BIG TCP support
IPv4 BIG TCP support
总字数:339
Last Updated:
Contributors: isno