kubernetes网络 – 网络插件 – calico

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…