calico--容器跨主机网络通讯方案

calico的网络解决方案与flannel的host-gw的工做模式,几乎是彻底同样的;
bash

calico也会在每台宿主机上,添加和host-gw同样的路由规则,以下所示:网络

< 目的容器 IP 地址段 > via < 网关的 IP 地址 > dev eth0

重要概念:ide

BGP:边界网关协议,Linux内核原生支持、专门在大规模数据中内心维护不一样“自治系统”之间路由信息的、无中心的路由协议;spa

它跟普通路由器的不一样之处在于,它的路由表里拥有其余自治系统里的主机路由信息。3d

简单的来讲:BGP就是在大规模网络中实现节点路由信息共享的一种协议blog

如图所示:接口

  • 10.10.0.2想要到达172.17.0.3;须要经过Router1的C接口,发送网关Router2;Router2根据本身的路由表,发给172.17.0.3;
    路由

  • 反过来,172.17.0.3想要访问10.10.0.2,须要在Router2添加一条路由,好比在Router2的C接口发给Router1;同步

  • 在示例中,自动同步各自路由信息,咱们把它形象的称为:边界网关it

    61c1092f8d0732ddabc698dd488d682e.png

calico的重要组件:

felix:在每一个节点运行,负责在当前节点插入路由规则

bird:BGP的客户端,专门负责向集群中其它节点分发路由规则信息

注:calico不会像flannel那样,建立任何网桥设备,直接经过route规则发送数据

BGP工做模式:

bgp工做模式和flannel的host-gw模式几乎同样;

bird是bgd的客户端,与集群中其它节点的bird进行通讯,以便于交换各自的路由信息;

随着节点数量N的增长,这些路由规则将会以指数级的规模快速增加,给集群自己网络带来巨大压力,官方建议小于100个节点;

限制:和flannel的host-gw限制同样,要求物理机在二层是连能的,不能跨网段;

Route Reflector模式:

在更大规模的集群中,须要经过Route Reflector模式专门建立一个或者几个专门的节点,负责跟全部的BGP客户端创建链接,从而学全全局的路由规则;

而其它节点,只须要跟这几个专门的节点交换路由信息,就能够得到整整个集群的路由信息

IPIP模式:

场景:用在跨网段通讯的状况下,bgp模式在跨网段的场景将不能工做;

tunl0:建立的虚拟网卡设备,此时的做用就和flannel的VxLAN工做模式相似(此处的tunl0不是flannel的UDP模式中的tun0)

增长的路由规则会经过tunl0,以下所示:

10.233.2.0/24 via 192.168.2.2 tunl0
相关文章
相关标签/搜索