• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

Kubernetes 中网络插件 calico 与 flannel 比较

calico 官网地址https://docs.projectcalico.org/archive/v3.14/getting-started/kubernetes/quickstart


Kubernetes跨主机容器之间的通信组件,目前主流的是 flannel 和 calico,本文对两个组件进行简单介绍和对比。

calico 组件

image.png


  • calico包括如下重要组件:Felix,etcd,BGP Client,BGP Route Reflector。下面分别说明一下这些组件。

  • Felix:主要负责路由配置以及ACLS规则的配置以及下发,它存在在每个node节点上。

  • etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性,可以与kubernetes共用;

  • BGPClient(BIRD), 主要负责把 Felix写入 kernel的路由信息分发到当前 Calico网络,确保 workload间的通信的有效性;

  • BGPRoute Reflector(BIRD), 大规模部署时使用,摒弃所有节点互联的mesh模式,通过一个或者多个 BGPRoute Reflector 来完成集中式的路由分发

calico 架构

comparison-between-calico-and-flannel-2.png

calico 原理

下图描述了从源容器经过源宿主机,经过数据中心的路由,然后到达目的宿主机最后分配到目的容器的过程。

comparison-between-calico-and-flannel-3.png

整个过程中始终都是根据iptables规则进行路由转发,并没有进行封包,解包的过程,这和flannel比起来效率就会快多了。

calico 跨主机通信

comparison-between-calico-and-flannel-4.png

下发 ACL 规则

comparison-between-calico-and-flannel-5.png

flannel 原理

comparison-between-calico-and-flannel-6.png

对比

从上述的原理可以看出,flannel 在进行路由转发的基础上进行了封包解包的操作,这样浪费了CPU的计算资源。下图是从网上找到的各个开源网络组件的性能对比。可以看出无论是带宽还是网络延迟,calico和主机的性能是差不多的。

结论

calico 比 flannel 快



摘自:https://www.dazhuanlan.com/2020/03/08/5e640000b38c6/


0
0
下一篇:k8s的ipvs转发svc服务访问慢的问题(网络CNI VXLAN 模式延迟调优flannel calico 都存在)

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。