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 dev A)
2、网段不同、不同机房
先决条件三层可达
方案一:路由器上添加路由表
方案二:路由器BGP与路由反射器BGP建立连接

网络策略

NetworkPolicy

posted @ 2020-05-28 11:24  ruixing  阅读(525)  评论(0编辑  收藏  举报