Calico
BGP概述
- BGP(Border Gateway Protocol),边界网关路由协议,是一种自治系统间的动态路由发现协议,与其他BGP系统交换网络可达信息。
- Calico与Flannel的host-gw模式几乎一样,是基于路由表实现容器数据包转发,但是不同于Flannel使用flannelId进程来维护路由信息的做法,而Calico项目使用BGP协议来自动维护整个集群的路由信息。
- Calico是一个纯三层的数据中心网络方案,支持Kubernetes、OpenStack等。
- Calico实现了Kubernetes的网络策略,提供ACL功能
上图示例:
两个自治系统(autonomous system,简称AS):AS1和AS2
互相学习对方的路由表信息
Calico BGP实现
Calico项目架构:
- Felix:以Daemonset方式部署,运行在每一个Node节点上,主要负责维护宿主机上路由规则以及ACL规则
- BGP Client(BIRD):主要负责把Felix写入Kernel的路由信息分发到集群Calico网络
- Etcd:分布式键值存储,保存Calico的策略和网络配置状态
- calicoctl:命令行工具
Route Reflector模式 (RR模式,路由反射,百台以上Node推荐使用)
Calico维护的网络在默认是(Node - to - node - Mesh)全互联表,Calico集群中的节点之间都会相互建立连接,用于路由叫唤,但是随着规模的扩大,mesh模式将形成一个巨大服务网络,连接数成倍增加。
确定一个或多个Calico节点充当路由反射器,让其他节点从这个RR节点获取路由器信息。
Calico的bgp和flannel的host-gw模式,均是基于2层的,
如果在不同的vlan上,这个就需要开启Calico的IPIP模式(基于3层的),
建议放在一个子网里面,避免使用IPIP
CNI网络方案优缺点及其选择
- 是否需要细颗粒度的网络访问控制
需要的话就是calico - 是否追求网络性能
flannel和calico的路由方案性能是最好的 - 服务器之前是否可以跑BGP协议
- 集群规模多大
- 维护能力
calico较为复杂
办公网络与k8s网络如何互通
1、办公网络与K8s网络在一个子网里面
添加一条路由即可(ip route add 10.244.0.0/16 via
2、网段不同、不同机房
先决条件三层可达
方案一:路由器上添加路由表
方案二:路由器BGP与路由反射器BGP建立连接
网络策略
NetworkPolicy