国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

calico網(wǎng)絡(luò)模型中的路由原理

Prasanta / 1999人閱讀

摘要:在這種模式下,部署需要執(zhí)行此處下載的仍可以參照上文的部署方式進(jìn)行等的定制化。網(wǎng)絡(luò)通過方式部署好后,我們?cè)诩褐袆?chuàng)建幾個(gè)我們?cè)谶@個(gè)上來看。

calico的部署

1、下載模板
wget https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

可以得到一份calico官方提供的v3.1版本calico的部署模板(基于kubeadm)。當(dāng)然里面都是社區(qū)的鏡像,我們可以替換成本地鏡像.建議到網(wǎng)易云的景象中心下載,很多其他的國(guó)內(nèi)鏡像倉(cāng)庫(kù)都不做維護(hù)了。

2、啟/禁用 ip-ip

目前官方提供的模板里,默認(rèn)打開了ip-ip功能,該功能會(huì)在node上創(chuàng)建一個(gè)設(shè)備:tunl0,容器的網(wǎng)絡(luò)數(shù)據(jù)會(huì)經(jīng)過該設(shè)備被封裝一個(gè)ip頭再轉(zhuǎn)發(fā)。這里,calico.yaml中通過修改calico-node的環(huán)境變量:CALICO_IPV4POOL_IPIP來實(shí)現(xiàn)ipip功能的開關(guān):默認(rèn)是Always,表示開啟;Off表示關(guān)閉ipip; cross-subnet表示開啟并支持跨子網(wǎng),目前用不到這種類型。
sed -i "s#Always#Off#g" calico.yaml

3、部署:

注意:部署前,要配置一個(gè)參數(shù),讓calico-node組件能夠識(shí)別node的IP,node上可能有多塊網(wǎng)卡,官方提供的yaml文件中,ip識(shí)別策略(IPDETECTMETHOD)沒有配置,即默認(rèn)為first-found,這會(huì)導(dǎo)致一個(gè)網(wǎng)絡(luò)異常的ip作為nodeIP被注冊(cè),從而影響node-to-node mesh。我們可以修改成can-reach的策略,嘗試連接某一個(gè)Ready的node的IP,以此選擇出正確的IP。

為了方便,下面的腳本里,我以任意一個(gè)node的ip地址為reach 地址

connective_ip=`kubectl get node -o wide |grep Ready |head -n1 |awk "{print $6}"`
sed -i  -rn "p;/name: IP/,/autodetect/H;/autodetect/{g;s/^
//;p}" calico.yaml 
sed -i "1,/name: IP/{s/name: IP/name: IP_AUTODETECTION_METHOD/}" calico.yaml
sed -i "1,/"autodetect"/{s/"autodetect"/can-reach=__ONE_CONNECTIVE_ENDPOINT__/}" calico.yaml
sed -i "s#__ONE_CONNECTIVE_ENDPOINT__#$connective_ip#g" calico.yaml

執(zhí)行:
kubectl apply -f calico.yaml

4、calico使用過程中的一些其他點(diǎn)

calico以ipip模式部署完畢后,node上會(huì)有一個(gè)tunl0的網(wǎng)卡設(shè)備,這是ipip做隧道封裝用的。當(dāng)我們把節(jié)點(diǎn)下線,calico容器都停止后,這個(gè)設(shè)備依然還在,執(zhí)行 rmmod ipip 命令可以將它刪除(如果calico-node仍在運(yùn)行,會(huì)自動(dòng)再建一個(gè)新的)

calico部署完畢后,其數(shù)據(jù)記錄在calico-etcd容器運(yùn)行節(jié)點(diǎn)的/var/etcd/calico-data目錄中,如果要完全清理集群中的etcd數(shù)據(jù),需要將該目錄刪除。

calico支持以kubernetes為存儲(chǔ)后端,以這種方式部署時(shí),calico不再需要額外部署etcd,而是將數(shù)據(jù)以CRD的方式存到k8s中。calico的組件依賴kubeconfig與k8s交互。在這種模式下,部署calico需要執(zhí)行:

wget https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
wget https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f rbac-kdd.yaml
kubectl apply -f calico.yaml
此處下載的calico.yaml 仍可以參照上文的部署方式進(jìn)行ipip、ip pool等的定制化。

calico bgp 網(wǎng)絡(luò)

通過bgp方式部署好calico后,我們?cè)诩褐袆?chuàng)建幾個(gè)pod:

root@k8s-calico1:~# pods 
NAMESPACE     NAME                                       READY     STATUS    RESTARTS   AGE       IP                NODE
huang1        huangtest-69d9fffffd97-cbzbm                 1/1       Running   0          20m       192.168.211.1     k8s-calico4
huang1        huangtest-69d9fffffd97-pbvvw                 1/1       Running   0          3m        192.168.210.194   k8s-calico3
huang2        hhh-6897d64fcd-4zph4                       1/1       Running   0          1d        192.168.97.2      k8s-calico2

我們?cè)趉8s-calico2這個(gè)node上來看。執(zhí)行ip r, 在這個(gè)node的路由中,需要我們關(guān)注的有:

192.168.97.2 dev calic285cddbb40 scope link 
blackhole 192.168.97.0/26 proto bird 
192.168.210.192/26 via 10.173.32.26 dev eth0 proto bird 
192.168.211.0/26 via 10.173.32.25 dev eth0 proto bird

192.168.97.2 dev calic285cddbb40 scope link 這條路由將通向容器ip的請(qǐng)求導(dǎo)向veth:calic285cddbb40 ,進(jìn)而讓請(qǐng)求直達(dá)容器內(nèi)的網(wǎng)卡。
blackhole 192.168.97.0/26 proto bird 表示發(fā)往192.168.97.0/26網(wǎng)段的報(bào)文都會(huì)被丟棄且不會(huì)回復(fù)源端。配置這條路由的原因是:這臺(tái)機(jī)器上的calico網(wǎng)絡(luò)可分配的cidr是192.168.97.0/26,容器里訪問同網(wǎng)段的其他IP時(shí),配置該路由以避免報(bào)文被發(fā)到外部。
最后兩條,分別記錄了:要訪問calico網(wǎng)絡(luò)中的某個(gè)網(wǎng)段,需要以對(duì)應(yīng)的node IP為網(wǎng)關(guān),通過eth0發(fā)包。也就是說通過這兩條路由,可以將部分網(wǎng)段(目的IP)的包經(jīng)由eth0發(fā)送到正確的地方。

我們可以這么理解:pod hhh-6897d64fcd-4zph4中ping huangtest-69d9fffffd97-pbvvw時(shí),流量是這么走的:

0、數(shù)據(jù)包封裝完成,srcip:192.168.97.2 , destip:192.168.210.194
1、容器中只有eth0網(wǎng)卡,容器里ip r 看到的是default **** dev eth0,所以流量通過容器的eth0發(fā)送。
2、容器網(wǎng)卡的配置是通過vethpair做的,也就是說,容器里網(wǎng)卡發(fā)的包,在宿主機(jī)上都會(huì)被calic285cddbb40設(shè)備發(fā)出。
3、通過第2步,網(wǎng)絡(luò)報(bào)文就在宿主機(jī)的網(wǎng)絡(luò)中,受宿主機(jī)路由影響,192.168.210.192/26 via 10.173.32.26 dev eth0 proto bird這條路由會(huì)將數(shù)據(jù)從eth0轉(zhuǎn)發(fā),并發(fā)給路由中記錄的網(wǎng)關(guān):10.173.32.26(這個(gè)ip,就是pod huangtest-69d9fffffd97-pbvvw所在的node:k8s-calico3 的ip)
4、10.173.32.26是node:k8s-calico3上eth0的ip,收到包后,在機(jī)器自身的路由表中尋找合理的路由,當(dāng)然這個(gè)地方也會(huì)有路由:192.168.210.194 dev calif6874dae1d2 scope link,于是包順利被對(duì)端接收

calico ipip 網(wǎng)絡(luò)

我們通過ip-ip模式部署calico,然后將原有的pod全部刪掉重建,如下:

root@k8s-calico1:~# pods 
NAMESPACE     NAME                                       READY     STATUS             RESTARTS   AGE       IP                NODE
huang1        huangtest-69d9fffffd97-2b8hr                 1/1       Running            0          1m        192.168.97.1      k8s-calico2
huang1        huangtest-69d9fffffd97-npwzw                 1/1       Running            0          1m        192.168.210.65    k8s-calico4
huang2        hhh-6897d64fcd-kqsj4                       1/1       Running            0          10s       192.168.210.129   k8s-calico3

我們?cè)偃タ纯磌8s-calico2這個(gè)node 上的路由,同樣的需要我們關(guān)注的路由有下面的幾條:

root@k8s-calico2:~# ip r  |grep bird
192.168.97.1 dev cali3683f65394b scope link
blackhole 192.168.97.0/26 proto bird 
192.168.110.64/26 via 10.173.32.24 dev tunl0 proto bird onlink 
192.168.210.64/26 via 10.173.32.25 dev tunl0 proto bird onlink 
192.168.210.128/26 via 10.173.32.26 dev tunl0 proto bird onlink

前兩條不再贅述,我們看到最后三條路由,其實(shí)他們描述的邏輯與BGP的那兩條沒有差別,只不過網(wǎng)卡換成了tunl0.

我們以一個(gè)例子來解釋清楚:pod huangtest-69d9fffffd97-2b8hr ping hhh-6897d64fcd-kqsj4

0、封裝報(bào)文,SRCIP:192.168.97.1 DESTIP:192.168.210.129
1、容器中只有eth0網(wǎng)卡,容器里ip r 看到的是default **** dev eth0,所以流量通過容器的eth0發(fā)送。
2、容器網(wǎng)卡的配置是通過vethpair做的,也就是說,容器里網(wǎng)卡發(fā)的包,在宿主機(jī)上都會(huì)被calic285cddbb40設(shè)備發(fā)出。
3、通過第2步,網(wǎng)絡(luò)報(bào)文就在宿主機(jī)的網(wǎng)絡(luò)中,受宿主機(jī)路由影響,192.168.210.128/26 via 10.173.32.26 dev tunl0 proto bird onlink 識(shí)別到匹配的對(duì)端IP,將報(bào)文從tunl0發(fā)出到10.173.32.26。這里,tunl0會(huì)對(duì)報(bào)文進(jìn)行封裝,在原有的ip報(bào)文之上封裝了一個(gè)ip頭部,新的頭部中,srcip是宿主機(jī)自身的ip:10.173.32.23, destip是對(duì)端的ip地址:10.173.32.26。
我們可以通過tcpdump抓包看到這個(gè)步驟:
封裝前:

封裝后(注意到輸出內(nèi)容結(jié)尾有ipip-proto-4):


4、由于宿主機(jī)上只有一個(gè)eth的物理機(jī)網(wǎng)卡,所以流量終究還是從eth0向外發(fā)出到10.173.32.26。10.173.32.26這個(gè)節(jié)點(diǎn)的eth0網(wǎng)卡,收到了報(bào)文后,發(fā)現(xiàn)帶有ipip協(xié)議的標(biāo)記(第3步中tcpdump抓包看到的ipip-proto-4),將ipip頭部解開,于是處理到了真實(shí)的報(bào)文。
5、宿主機(jī)上192.168.210.129 dev cali5ce61eb6bc2 scope link 這個(gè)路由將包發(fā)給vethpair,從而被容器內(nèi)的eth0接收。
6、icmp響應(yīng)包的走向與上述的走向邏輯上相同。

待定:補(bǔ)充ipip和bgp的使用場(chǎng)景。以及calico的BGP路由配置方法(AS,node-mesh)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/32740.html

相關(guān)文章

  • Kubernetes CNI網(wǎng)絡(luò)最強(qiáng)對(duì)比:Flannel、Calico、Canal和Weave

    摘要:第層網(wǎng)絡(luò)的一個(gè)值得注意的示例是以太網(wǎng),其中表示為子層。與其他方案相比,相對(duì)容易安裝和配置。與不同,不使用網(wǎng)絡(luò)。網(wǎng)絡(luò)策略是其最受追捧的功能之一。 本文將在介紹技術(shù)原理和相應(yīng)術(shù)語的基礎(chǔ)上,再集中探索與詳細(xì)對(duì)比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,對(duì)比介紹它們的原理、使用方法、適用場(chǎng)景和優(yōu)缺點(diǎn)等。 showImg(https://segmentfaul...

    scq000 評(píng)論0 收藏0
  • Kubernetes CNI網(wǎng)絡(luò)最強(qiáng)對(duì)比:Flannel、Calico、Canal和Weave

    摘要:第層網(wǎng)絡(luò)的一個(gè)值得注意的示例是以太網(wǎng),其中表示為子層。與其他方案相比,相對(duì)容易安裝和配置。與不同,不使用網(wǎng)絡(luò)。網(wǎng)絡(luò)策略是其最受追捧的功能之一。 本文將在介紹技術(shù)原理和相應(yīng)術(shù)語的基礎(chǔ)上,再集中探索與詳細(xì)對(duì)比目前最流行的CNI插件:Flannel、Calico、Weave和Canal,對(duì)比介紹它們的原理、使用方法、適用場(chǎng)景和優(yōu)缺點(diǎn)等。 showImg(https://segmentfaul...

    Noodles 評(píng)論0 收藏0
  • docker網(wǎng)絡(luò)方案簡(jiǎn)介

    摘要:模式容器直接使用宿主機(jī)的網(wǎng)絡(luò)配置,包括網(wǎng)卡,路由等,這種方案下,從網(wǎng)絡(luò)層面來看,容器就不是容器了,只是一個(gè)宿主機(jī)上的進(jìn)程端口而已。 注:本篇僅僅是對(duì)各個(gè)網(wǎng)絡(luò)方案的簡(jiǎn)介和思考。需要深入學(xué)習(xí)如何部署和使用的同學(xué)請(qǐng)自行度娘~ 中小docker用戶的苦惱 docker的使用者十分廣泛,不止有網(wǎng)易蜂巢,daocloud,時(shí)速云這類的已經(jīng)成熟化的公有云服務(wù),許多中小型企業(yè)內(nèi)部也在試圖將docker...

    bbbbbb 評(píng)論0 收藏0
  • docker網(wǎng)絡(luò)方案簡(jiǎn)介

    摘要:模式容器直接使用宿主機(jī)的網(wǎng)絡(luò)配置,包括網(wǎng)卡,路由等,這種方案下,從網(wǎng)絡(luò)層面來看,容器就不是容器了,只是一個(gè)宿主機(jī)上的進(jìn)程端口而已。 注:本篇僅僅是對(duì)各個(gè)網(wǎng)絡(luò)方案的簡(jiǎn)介和思考。需要深入學(xué)習(xí)如何部署和使用的同學(xué)請(qǐng)自行度娘~ 中小docker用戶的苦惱 docker的使用者十分廣泛,不止有網(wǎng)易蜂巢,daocloud,時(shí)速云這類的已經(jīng)成熟化的公有云服務(wù),許多中小型企業(yè)內(nèi)部也在試圖將docker...

    ?xiaoxiao, 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<