k8s calico flannel cilium 网络性能测试

结论:


image.png

点评:
带宽: calico+ipip > flannel+vxlan > cilium+vlan
速度: calico+ipip > flannel+vxlan > cilium+vlan
稳定性:cilium+vlan > calico+ipip > flannel+vxlan

calico 作为老牌网络解决方案,可圈可点,已被 github 等公司用于生产。
flannel 配置简单,性能弱低于 calico,redis 测试中稍占上风。大并发下稳定性稍低。
cilium 在大并发环境下,稳定性更好,期待后续版本性能有所提升。在 http 8k qps 的情况下,请求 100% 成功了,而calico和flannel 都有一定比例的失败。
(说明:本来还准备比较一下 kube-router ,不过网络没有调通,暂时无法测试。)

一个问题:
flannel 的 host-gw 模式、flannel+vxlan+DirectRouting 模式、calico 关闭 ipip 模式、kube-router 这些部署情况下,跨主机的容器不通,感觉原因应该是同一个问题。
主机A ping 主机B 上的容器,容器有回包,但是只到了主机B,之后就被丢弃了。
欢迎探讨,一起研究。
待问题解决后,再把这些模式测试对比。

测试环境:
硬件:三台物理机,千兆网卡,单网卡,处于同一网段(在同一个二层网络中)
OS:Ubuntu 18.04,内核 4.15
k8s: 1.10.0
kube-proxy: ipvs 模式
flannel : 0.10 版本, vxlan模式(默认设置)
calico: 3.1 版本,ipip 模式(默认设置)
cilium: 1.0 版本,vxlan 模式(默认设置)

测试方法:

kubectl run vegeta --image=oba11/vegeta --replicas=3 sleep 3000

kubectl run redis --image=redis:alpine --replicas=3 

kubectl run nginx --image=nginx:alpine --replicas=5

kubectl run iperf3 --image=networkstatic/iperf3 --replicas=3 -- iperf3 -s


host=POD_IP_ADDRESS

iperf3 -c $host

echo "GET http://$host/" | vegeta attack -duration=10s -rate=8000 | tee results.bin | vegeta report

echo "GET http://$host/" | vegeta attack -duration=10s -rate=5000 | tee results.bin | vegeta report

redis-benchmark -h $host -q -t SET,GET,LPUSH -c 5000 -n 100000 -r 100000 -d 256

你可能感兴趣的:(k8s calico flannel cilium 网络性能测试)