Calico主要由Felix、etcd、BGP client以及BGP Route Reflector组成
- Felix,Calico Agent,跑在每台需要运行Workload的节点上,主要负责配置路由及ACLs等信息来确保Endpoint的连通状态;
- etcd,分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性;
- BGP Client(BIRD), 主要负责把Felix写入Kernel的路由信息分发到当前Calico网络,确保Workload间的通信的有效性;
- BGP Route Reflector(BIRD),大规模部署时使用,摒弃所有节点互联的 mesh 模式,通过一个或者多个BGP Route Reflector来完成集中式的路由分发。
- calico/calico-ipam,主要用作Kubernetes的CNI插件
Calico的不足
- 既然是三层实现,当然不支持VRF
- 不支持多租户网络的隔离功能,在多租户场景下会有网络安全问题
- Calico控制平面的设计要求物理网络得是L2 Fabric,这样vRouter间都是直接可达的