资讯中心
News Center
容器通信flannel和calico对比
发布时间:2020-09-08文章来源:明辰智航

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


calico包括如下重要组件:FelixetcdBGP ClientBGP Route Reflector。下面分别说明一下这些组件。

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

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

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

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

calico 架构



calico 原理

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



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

calico 跨主机通信



下发 ACL 规则



flannel 原理



对比

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


推荐阅读:


     明辰智航云安网络与虚拟化性能管理系统


返回