您好,登錄后才能下訂單哦!
小編給大家分享一下kubernetes中網絡原理的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一:體系結構圖
二:說明
1.網絡命名空間
處于不同命名空間的網絡棧是完全隔離的,彼此之間無法通信,就好像兩個“平行宇宙”,通過對這種網絡資源的隔離,就能在一個宿主機上虛擬多個不同的網絡環境。
2.網絡命名空間的通信,Veth設備對
引入Veth設備對是為了在不同的網絡命名空間之間進行通信,利用它可以直接將兩個網絡命名空間連接起來。由于要連接兩個網絡命名空間,所以Veth設備都是成對出現的,很像一對以太網網卡,并且中間有一根直連的網線。
3.網橋
Linux內核通過一個虛擬的網橋設備來實現以太網口(Veth)之間的橋接。
4.Docker的網絡實現
Docker Daemon第一次啟動時會創建一個虛擬的網橋,默認的名字是docker0,在私有網絡空間中給這個網橋分配一個子網。
針對由Docker創建出來的每一個容器,都會創建一個虛擬的Veth設備對,其中一端關聯到網橋上,另一端使用Linux的網絡命名空間技術,映射到容器內的eth0設備,然后從docker0網橋的地址段內給eth0接口分配一個IP地址
5.kubernetes容器之間通信
Pod內的容器共享一個網絡命名空間,共享一個Linux協議棧,可以用localhost地址訪問彼此的端口
6.kubernetes同一Node的Pod間通信
同一Node中Pod的默認路由都是docker0的地址,由于它們關聯在同一個docker0網橋上,地址網段相同,所有它們之間應當是能直接通信的。
7.kubernetes不同Node的Pod間通信
不同Node中Pod間通信要滿足2個條件: Pod的IP不能沖突; 將Pod的IP和所在的Node的IP關聯起來,通過這個關聯讓Pod可以互相訪問。
8.Flannel工作原理
Flannel實質上是一種“覆蓋網絡(overlay network)”,也就是將TCP數據包裝在另一種網絡包里面進行路由轉發和通信,目前已經支持UDP、VxLAN、AWS VPC和GCE路由等數據轉發方式。
1. 數據從源容器中發出后,經由所在主機的docker0虛擬網卡轉發到flannel0虛擬網卡,這是個P2P的虛擬網卡,flanneld服務監聽在網卡的另外一端。
2.Flannel通過Etcd服務維護了一張節點間的路由表。
3. 源主機的flanneld服務將原本的數據內容UDP封裝后根據自己的路由表投遞給目的節點的flanneld服務,數據到達以后被解包,然后直接進入目的節點的flannel0虛擬網卡,然后被轉發到目的主機的docker0虛擬網卡,最后就像本機容器通信一下的有docker0路由到達目標容器。
9.Calico架構
以上是“kubernetes中網絡原理的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。