亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker bridge到k8s pod跨節點網絡通信機制怎么實現

發布時間:2021-12-13 15:45:34 來源:億速云 閱讀:339 作者:iii 欄目:云計算

這篇文章主要講解了“docker bridge到k8s pod跨節點網絡通信機制怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“docker bridge到k8s pod跨節點網絡通信機制怎么實現”吧!

1、docker 網絡模式
可以通過如下命令行查看docker網絡模式
[root@localhost ~]# docker network lsNETWORK ID          NAME                 DRIVER              SCOPEc250329fad3c        bridge               bridge              localc7c3d1f77969        compose_extnetwork   bridge              local199b85fbf2fa        host                 host                localb488be9da3d6        none                 null                local
  • 共享主機網絡模式 - host

host指的是共享主機的網絡和端口,但是破壞了 container 的隔離性;

  • 無網絡模式 - none

其中無網絡模式是指加入此模式下的容器都不能通信,比較雞肋;

  • 自定義

自定義主要用于實現DNS解析和服務發現,特殊場景下定制使用;

  • 默認網絡模式 - bridge

網橋是 docker 默認網絡模式,也是平時用的最多的一種,這里主要對 docker 的 bridge 模式做詳細講解。


2、docker 橋接如何實現同一個宿主機不同容器之間的通信
       其實主要用到兩個技術知識點:
  • docker啟動后建立名為docker0的虛擬網橋。
  • 容器啟動時在主機上創建一對虛擬網卡veth pair設備。這一對虛擬設備完成一組數據完整流通的鏈路,數據從一個設備進入,從另一個設備出來。容器中重命名為eth0,宿主機上的以veth*顯示并插在docker0網橋上。可以通過如下命令查看,docker0上插了 veth52f3f11 和 vethe8589bd 兩張虛擬設備,見(a)圖。
[root@localhost ~]# brctl showbridge name  bridge id    STP enabled  interfacesbr-c7c3d1f77969    8000.02429160f0dd  no      docker0    8000.02420a13dd3a  no    veth52f3f11                            vethe8589bd
docker bridge到k8s pod跨節點網絡通信機制怎么實現  
(a)  
那么你可能會有疑問,多個容器之間又是如何通信的呢?如下圖所示:  

docker bridge到k8s pod跨節點網絡通信機制怎么實現

(b)

其原理也非常簡單,如圖(b)所示,container1 ping container2(172.0.0.3)網絡時,同一宿主機中的兩個容器網絡默認是互通的,其中docker0扮演二層交換機的角色。
通過命令查看container路由信息表,如下所示:
bash-4.4# routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Ifacedefault         172.17.0.1      0.0.0.0         UG    0      0        0 eth0172.17.0.0      *               255.255.0.0     U     0      0        0 eth0bash-4.4#
container1 訪問172.17.0.3匹配到第二條路由規則;網關是0.0.0.0,這是一條直連規則,意思是匹配到該規則的網絡地址經過本機eth0網卡,再通過二層網絡doceker0 直接發送到目的主機。docker0之所以能夠做到從veth虛擬設備中接受數據和發送數據,是因為veth相當于docker0網橋的從設備,故docker0能夠直接處理來自于veth上網絡數據包,進而直接轉發到container2,就完成從一個容器到另外一個容器的通信。見(b)圖所示。

如果訪問外部網絡,也非常簡單,數據包先經過docker0網卡,根據宿主機路由規則連接到eth0網卡,轉發到外部網絡。見(c)圖所示。

docker bridge到k8s pod跨節點網絡通信機制怎么實現

(c)

docker 在默認網絡設置情況下,節點A 的docker0 跟節點B 的docker0 沒有任何關聯,網絡也是不通的,這就導致不能滿足我們跨節點通信要求。Kubernetes 的 Pod 又是通過何種方式實現的呢?


3、pod 通信機制

如果要說明 pod 的通信機制,要從一個鏡像說起,在 kubectl 安裝kubernetes 的時候一定會看到 k8s.gcr.io/pause 這個鏡像,不知道有沒有疑問,這個到底是干嘛的?其它幾個鏡像顧名思義,但是這個【暫停】是什么?沒錯,他就是用來 hold 一個 Pod 內部多個 Container 網絡通信。

如果在計算節點上運行 docker ps 命令
[root@k8s-client1 ~]# docker ps |grep sp-nginxe34adacf9be1        0a81924719d1             "/usr/local/nginx/b…"   3 seconds ago       Up 2 seconds                            k8s_sp_nginx-deployment-84b5d9cb66-hkfp6_default_5c27af26-6b7e-11ea-8d03-70fd45ac3f1f_0f245174b9a51        0a81924719d1             "/usr/local/nginx/b…"   5 seconds ago       Up 4 seconds                            k8s_sp_nginx-deployment-84b5d9cb66-zfbhr_default_5c281ef0-6b7e-11ea-8d03-70fd45ac3f1f_0

如上所示,你可以看到在創建 nginx pod 過程中,不僅創建了一個nginx 容器,并附帶了一個 pause 容器,而且 pause 容器是在 nginx容器之前創建的,這個被暫停的容器把所有的容器收納到一起,一個基礎容器,唯一目的就是保存所有的命名空間。容器中 pod 共享同一個 IP 地址。故同一個 Pod 中 Container 可以做到直接通過 localhost 直接通信,那么同一個節點多個 Pod 之間如何通信的呢?

docker bridge到k8s pod跨節點網絡通信機制怎么實現

(d)

pause 容器啟動之前,會為容器創建虛擬一對 ethernet 接口,一個保留在宿主機 vethxxx(插在網橋上),一個保留在容器網絡命名空間內,并重命名為eth0。兩個虛擬接口的兩端,從一端進入,另一端出來。任何 Pod 連接到該網橋的 Pod 都可以收發數據。如(d)圖所示。



 4、跨 node pod 通信  

跨節點 Pod 通信,相當于創建一個整個集群公用的【 網橋 】然后把集群中所有的 Pod 連接起來,就可以通信了。

docker bridge到k8s pod跨節點網絡通信機制怎么實現

(e)

其中跨整個集群的 Pod ip 是唯一的,當報文從一個節點轉發到另外一個節點時,報文首先通過 veth,然后通過網橋,轉發到物理適配器網卡,最后轉發到其它節點的虛擬網橋,進而到達 veth 目標容器。如(e)圖所示。
其實現方式有 Flannel、calico、weave 等。
注意 k8s 的網橋跟 docker0  網橋功能類似,但是 k8s 并沒有復用 docker0 網橋,其原因是   Kubernetes 為了連接 infra 容器更加方便,而是重新實現了 CNI 網絡接口功能,它允許網絡插件使用 CNI 接口,比如 flannel,它本身實現也經過幾個過程,其本質上來說,是基于「隧道」機制實現。示意圖(f)所示:

docker bridge到k8s pod跨節點網絡通信機制怎么實現

(f)

感謝各位的閱讀,以上就是“docker bridge到k8s pod跨節點網絡通信機制怎么實現”的內容了,經過本文的學習后,相信大家對docker bridge到k8s pod跨節點網絡通信機制怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商城县| 保康县| 周至县| 皮山县| 德惠市| 区。| 临邑县| 保康县| 新绛县| 新竹市| 乐亭县| 台江县| 综艺| 兴安盟| 海南省| 林芝县| 健康| 榆社县| 浮梁县| 德阳市| 舒城县| 平利县| 时尚| 玛沁县| 九龙县| 曲水县| 祁阳县| 上蔡县| 勃利县| 凉山| 水城县| 南靖县| 彩票| 会昌县| 东丽区| 岳池县| 长岭县| 宁国市| 彭水| 丹棱县| 拜泉县|