容器通信flannel和calico對比
Kubernetes跨主機(jī)容器之間的通信組件,目前主流的是flannel和calico,本文對兩個(gè)組件進(jìn)行簡單介紹和對比。
calico包括如下重要組件:Felix,etcd,BGP Client,BGP Route Reflector。下面分別說明一下這些組件。
Felix:主要負(fù)責(zé)路由配置以及ACLS規(guī)則的配置以及下發(fā),它存在在每個(gè)node節(jié)點(diǎn)上。
etcd:分布式鍵值存儲,主要負(fù)責(zé)網(wǎng)絡(luò)元數(shù)據(jù)一致性,確保Calico網(wǎng)絡(luò)狀態(tài)的準(zhǔn)確性,可以與kubernetes共用;
BGPClient(BIRD), 主要負(fù)責(zé)把 Felix寫入 kernel的路由信息分發(fā)到當(dāng)前 Calico網(wǎng)絡(luò),確保 workload間的通信的有效性;
BGPRoute Reflector(BIRD), 大規(guī)模部署時(shí)使用,摒棄所有節(jié)點(diǎn)互聯(lián)的mesh模式,通過一個(gè)或者多個(gè) BGPRoute Reflector 來完成集中式的路由分發(fā);
calico 架構(gòu)
calico 原理
下圖描述了從源容器經(jīng)過源宿主機(jī),經(jīng)過數(shù)據(jù)中心的路由,然后到達(dá)目的宿主機(jī)最后分配到目的容器的過程。
整個(gè)過程中始終都是根據(jù)iptables規(guī)則進(jìn)行路由轉(zhuǎn)發(fā),并沒有進(jìn)行封包,解包的過程,這和flannel比起來效率就會快多了。
calico 跨主機(jī)通信
下發(fā) ACL 規(guī)則
flannel 原理
對比
從上述的原理可以看出,flannel在進(jìn)行路由轉(zhuǎn)發(fā)的基礎(chǔ)上進(jìn)行了封包解包的操作,這樣浪費(fèi)了CPU的計(jì)算資源。下圖是從網(wǎng)上找到的各個(gè)開源網(wǎng)絡(luò)組件的性能對比??梢钥闯鰺o論是帶寬還是網(wǎng)絡(luò)延遲,calico和主機(jī)的性能是差不多的。——明辰智航云安網(wǎng)絡(luò)與虛擬化性能管理系統(tǒng)
(www.mingczh.com)
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。
比較器相關(guān)文章:比較器工作原理