全部課程
calico的網(wǎng)絡(luò)模式
發(fā)布時(shí)間: 2022-12-30
Calico是一個(gè)純?nèi)龑拥木W(wǎng)絡(luò)插件,calico的bgp模式類(lèi)似于flannel的host-gw
calico方便集成 OpenStack這種 IaaS云架構(gòu),為openstack虛擬機(jī)、容器、裸機(jī)提供多主機(jī)間通信。
calico是一個(gè)純?nèi)龑拥奶摂M網(wǎng)絡(luò),它沒(méi)有復(fù)用docker的docker0網(wǎng)橋,而是自己實(shí)現(xiàn)的, calico網(wǎng)絡(luò)不對(duì)數(shù)據(jù)包進(jìn)行額外封裝,不需要NAT和端口映射,擴(kuò)展性和性能都很好。Calico網(wǎng)絡(luò)提供了DockerDNS服務(wù), 容器之間可以通過(guò)hostname訪問(wèn),Calico在每一個(gè)計(jì)算節(jié)點(diǎn)利用LinuxKernel實(shí)現(xiàn)了一個(gè)高效的vRouter(虛擬路由)來(lái)負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā),它會(huì)為每個(gè)容器分配一個(gè)ip,每個(gè)節(jié)點(diǎn)都是路由,把不同host的容器連接起來(lái),從而實(shí)現(xiàn)跨主機(jī)間容器通信。而每個(gè)vRouter通過(guò)BGP協(xié)議(邊界網(wǎng)關(guān)協(xié)議)負(fù)責(zé)把自己節(jié)點(diǎn)的路由信息向整個(gè)Calico網(wǎng)絡(luò)內(nèi)傳播——小規(guī)模部署可以直接互聯(lián),大規(guī)模下可通過(guò)指定的BGProute reflector來(lái)完成;Calico基于iptables還提供了豐富而靈活的網(wǎng)絡(luò)策略,保證通過(guò)各個(gè)節(jié)點(diǎn)上的ACLs來(lái)提供多租戶隔離、安全組以及其他可達(dá)性限制等功能。
1)IPIP
把一個(gè)IP數(shù)據(jù)包又套在一個(gè)IP包里,即把IP層封裝到IP層的一個(gè) tunnel,它的作用其實(shí)基本上就相當(dāng)于一個(gè)基于IP層的網(wǎng)橋,一般來(lái)說(shuō),普通的網(wǎng)橋是基于mac層的,根本不需要IP,而這個(gè)ipip則是通過(guò)兩端的路由做一個(gè)tunnel,把兩個(gè)本來(lái)不通的網(wǎng)絡(luò)通過(guò)點(diǎn)對(duì)點(diǎn)連接起來(lái);
calico以ipip模式部署完畢后,node上會(huì)有一個(gè)tunl0的網(wǎng)卡設(shè)備,這是ipip做隧道封裝用的,也是一種overlay模式的網(wǎng)絡(luò)。當(dāng)我們把節(jié)點(diǎn)下線,calico容器都停止后,這個(gè)設(shè)備依然還在,執(zhí)行 rmmodipip命令可以將它刪除。
2)BGP
邊界網(wǎng)關(guān)協(xié)議(BorderGateway Protocol, BGP)是互聯(lián)網(wǎng)上一個(gè)核心的去中心化的自治路由協(xié)議。它通過(guò)維護(hù)IP路由表或‘前綴’表來(lái)實(shí)現(xiàn)自治系統(tǒng)(AS)之間的可達(dá)性,屬于矢量路由協(xié)議。BGP不使用傳統(tǒng)的內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)的指標(biāo),而是基于路徑、網(wǎng)絡(luò)策略或規(guī)則集來(lái)決定路由。因此,它更適合被稱為矢量性協(xié)議,而不是路由協(xié)議,通俗的說(shuō)就是將接入到機(jī)房的多條線路(如電信、聯(lián)通、移動(dòng)等)融合為一體,實(shí)現(xiàn)多線單IP;
BGP 機(jī)房的優(yōu)點(diǎn):服務(wù)器只需要設(shè)置一個(gè)IP地址,最佳訪問(wèn)路由是由網(wǎng)絡(luò)上的骨干路由器根據(jù)路由跳數(shù)與其它技術(shù)指標(biāo)來(lái)確定的,不會(huì)占用服務(wù)器的任何系統(tǒng);
官方提供的calico.yaml模板里,默認(rèn)打開(kāi)了ip-ip功能,該功能會(huì)在node上創(chuàng)建一個(gè)設(shè)備tunl0,容器的網(wǎng)絡(luò)數(shù)據(jù)會(huì)經(jīng)過(guò)該設(shè)備被封裝一個(gè)ip頭再轉(zhuǎn)發(fā)。這里,calico.yaml中通過(guò)修改calico-node的環(huán)境變量:CALICO_IPV4POOL_IPIP來(lái)實(shí)現(xiàn)ipip功能的開(kāi)關(guān):默認(rèn)是Always,表示開(kāi)啟;Off表示關(guān)閉ipip。
上一篇: mysql如何將bin-log日志文件轉(zhuǎn)為sql文件
下一篇: web服務(wù)器的安裝與配置