calico支持host-gateway,vxlan,ipip和bgp网络模式。calico网络插件支持下列功能
基于vxlan,ipip的overlay集群网络方案。
基于bgp的路由网络方案,以及将podIP,服务的clusterIP,externalIP和LoadBalancerIP路由到集群外的能力。
kubernetes cni插件,calico和calico-ipam
kubernetes原生网络策略和扩展网络策略
基于eBPF的数据面,实现网络策略和kubernetes服务功能
和其他系统(如openstack)的集成
istio网络策略扩展
架构与组件
https://docs.projectcalico.org/reference/architecture/overview
Calico组件
Felix
BIRD
confd
Dikastes
CNI plugin
Datastore plugin
IPAM plugin
kube-controllers
Typha
calicoctl
Felix
管理主机上的路由规则,数据面访问控制等,提供访问该主机上服务的能力。比如:
接口管理管理网络接口设备,比如vxlan,ipip隧道接口设备,arp表信息,配置ip地址转发等。
配置路由配置子网和端点的路由信息。
配置访问控制如网络策略。
状态报告节点上的网络健康数据,错误信息等。
BIRD
获取路由信息,并分发到BGP peers,基于开源的bird软件。
路由分发当Felix修改系统路由后(FIB),bird感知到将其分发到其他节点。
路由反射传统bgp网络各个节点之间组成mesh,节点数量很多时,会有大量连接,有性能影响。通过使用reflector,将其作为中心节点,所有peer都和他建链接,它想每个peer分发整个集群的路由信息。
confd
检测calico的datastore数据变化以便及时修改bgp配置,如AS编号,日志级别等。它通过修改bird的配置文件并重新加载bird实现这些功能。
Dikastes
执行istio服务网格的网络策略,作为sidecar运行在集群中。
CNI plugin
kubernetes的cni插件的实现,在每个节点上都要部署。
Datastore plugin
存储插件,减轻各个节点对存储引擎的影响。支持kubernetes和etcd。
IPAM plugin
结合calico cni插件使用,使用calico的ippool下分配ip地址。
kube-controllers
检测kubernetes集群资源变化,执行相关动作,包含下列控制器:
策略控制器
命名空间控制器
服务账户控制器
工作负载控制器
节点控制器
Typha
减轻各个节点对存储中心的影响。目的是争取和存储中心保持一个链接。像Felix和confd都是连接Typha。
calicoctl
客户端工具,可以用来对calico的各种资源执行增删改查等操作。
安装部署
calico的网路配置,网络策略都是通过datastore组件进行存储的。datastore后端存储支持kubernetes和etcd。如果是单独针对kubernetes使用,推荐使用默认的kuberentes后端,如果要和openstack这样的系统进行集成,那么推荐使用etcd后端。我们使用kubernetes后端存储。
快速部署:
curl https://docs.projectcalico.org/manifests/calico.yaml -O
# 修改CALICO_IPV4POOL_CIDR为集群的pod网段,并安装
kubectl…
kubernetes网络 – 网络插件 – calico
发布于