小編給大家分享一下kubernetes中網(wǎng)絡(luò)原理的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)建站).為客戶提供專業(yè)的成都服務(wù)器托管,四川各地服務(wù)器托管,成都服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:18980820575
一:體系結(jié)構(gòu)圖
二:說明
1.網(wǎng)絡(luò)命名空間
處于不同命名空間的網(wǎng)絡(luò)棧是完全隔離的,彼此之間無法通信,就好像兩個“平行宇宙”,通過對這種網(wǎng)絡(luò)資源的隔離,就能在一個宿主機上虛擬多個不同的網(wǎng)絡(luò)環(huán)境。
2.網(wǎng)絡(luò)命名空間的通信,Veth設(shè)備對
引入Veth設(shè)備對是為了在不同的網(wǎng)絡(luò)命名空間之間進行通信,利用它可以直接將兩個網(wǎng)絡(luò)命名空間連接起來。由于要連接兩個網(wǎng)絡(luò)命名空間,所以Veth設(shè)備都是成對出現(xiàn)的,很像一對以太網(wǎng)網(wǎng)卡,并且中間有一根直連的網(wǎng)線。
3.網(wǎng)橋
Linux內(nèi)核通過一個虛擬的網(wǎng)橋設(shè)備來實現(xiàn)以太網(wǎng)口(Veth)之間的橋接。
4.Docker的網(wǎng)絡(luò)實現(xiàn)
Docker Daemon第一次啟動時會創(chuàng)建一個虛擬的網(wǎng)橋,默認的名字是docker0,在私有網(wǎng)絡(luò)空間中給這個網(wǎng)橋分配一個子網(wǎng)。
針對由Docker創(chuàng)建出來的每一個容器,都會創(chuàng)建一個虛擬的Veth設(shè)備對,其中一端關(guān)聯(lián)到網(wǎng)橋上,另一端使用Linux的網(wǎng)絡(luò)命名空間技術(shù),映射到容器內(nèi)的eth0設(shè)備,然后從docker0網(wǎng)橋的地址段內(nèi)給eth0接口分配一個IP地址
5.kubernetes容器之間通信
Pod內(nèi)的容器共享一個網(wǎng)絡(luò)命名空間,共享一個Linux協(xié)議棧,可以用localhost地址訪問彼此的端口
6.kubernetes同一Node的Pod間通信
同一Node中Pod的默認路由都是docker0的地址,由于它們關(guān)聯(lián)在同一個docker0網(wǎng)橋上,地址網(wǎng)段相同,所有它們之間應(yīng)當(dāng)是能直接通信的。
7.kubernetes不同Node的Pod間通信
不同Node中Pod間通信要滿足2個條件: Pod的IP不能沖突; 將Pod的IP和所在的Node的IP關(guān)聯(lián)起來,通過這個關(guān)聯(lián)讓Pod可以互相訪問。
8.Flannel工作原理
Flannel實質(zhì)上是一種“覆蓋網(wǎng)絡(luò)(overlay network)”,也就是將TCP數(shù)據(jù)包裝在另一種網(wǎng)絡(luò)包里面進行路由轉(zhuǎn)發(fā)和通信,目前已經(jīng)支持UDP、VxLAN、AWS VPC和GCE路由等數(shù)據(jù)轉(zhuǎn)發(fā)方式。
1. 數(shù)據(jù)從源容器中發(fā)出后,經(jīng)由所在主機的docker0虛擬網(wǎng)卡轉(zhuǎn)發(fā)到flannel0虛擬網(wǎng)卡,這是個P2P的虛擬網(wǎng)卡,flanneld服務(wù)監(jiān)聽在網(wǎng)卡的另外一端。
2.Flannel通過Etcd服務(wù)維護了一張節(jié)點間的路由表。
3. 源主機的flanneld服務(wù)將原本的數(shù)據(jù)內(nèi)容UDP封裝后根據(jù)自己的路由表投遞給目的節(jié)點的flanneld服務(wù),數(shù)據(jù)到達以后被解包,然后直接進入目的節(jié)點的flannel0虛擬網(wǎng)卡,然后被轉(zhuǎn)發(fā)到目的主機的docker0虛擬網(wǎng)卡,最后就像本機容器通信一下的有docker0路由到達目標(biāo)容器。
9.Calico架構(gòu)
以上是“kubernetes中網(wǎng)絡(luò)原理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!