calico--容器跨主機網絡通信方案

calico的網絡解決方案與flannel的host-gw的工作模式,幾乎是完全一樣的;

calico也會在每臺宿主機上,添加和host-gw一樣的路由規則,如下所示:

< 目的容器 IP 地址段 > via < 網關的 IP 地址 > dev eth0

重要概念:

BGP:邊界網關協議,Linux內核原生支持、專門在大規模數據中心裏維護不同“自治系統”之間路由信息的、無中心的路由協議;

它跟普通路由器的不同之處在於,它的路由表裏擁有其他自治系統裏的主機路由信息。

簡單的來說:BGP就是在大規模網絡中實現節點路由信息共享的一種協議

如圖所示:

  • 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;

  • 在示例中,自動同步各自路由信息,我們把它形象的稱爲:邊界網關

    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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章