k8s 四層網絡結構


轉自以下博客:

https://blog.csdn.net/yang75108/article/details/101101384?spm=1001.2014.3001.5501

https://blog.csdn.net/yang75108/article/details/101267444

https://blog.csdn.net/yang75108/article/details/101268208

這篇三篇文章以分層的形式寫K8s 的網絡架構,深入淺出,值得收藏。

網絡分層:

第0層網絡是節點網絡,直接對外暴露 

第1層 POD 網絡

 

同一個Node上,同一個pod的網絡模式如下圖:

 

關於docker0的理解:Docker在宿主機上默認的網絡配置方式是bridge模式,docker server在啟動的時候會自動在宿主機上創建一個名為docker0的虛擬網橋。同一個node上不同pod就是根據docker0進行尋址和網絡連接。

 veth0是pod的虛擬網卡,pod內部的不同容器就是根據veth0進行尋址和互相訪問

 

同一個Node上不同pod之間的網絡連接方式:

 

 

不同node之間的pod訪問有兩種方案,一是路由,二是overlay,結構圖分別如下:

路由:

 

 

overlay

 

 

由於pod 網絡實現方法眾多,引入了CNI(container network interface),采用這個插件可以實現Pod的網絡的操作,不需要關心具體實現細節。

 

第2層:Service 網絡:

 

 

 K8S master 上有個etcd組件,是這個網絡機制的核心。關於etcd的原理和workflow可以參考文章https://zhuanlan.zhihu.com/p/96908130 

etcd會接收保存K8s中所有資源的信息,node中的Kubelet把信息實時傳給master中的etcd,這就是上圖中的服務注冊,kube-DNS和kube-proxy獲取etcd中的信息就是上圖中的服務發現。

kube-DNS保存serviceName->ClusterIP的信息。ClusterIP並不是一成不變的,ServiceName是唯一的。Kube-Proxy保存CluserIP->PodIP的信息。這樣兩層可以實現POD 在集群之間的網絡連接。

 

第4層:外部接入網絡:

這部分還需要進一步消化,后面再補上

 

K8S 網絡涉及的相關的概念

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM