(十四)flannel 的連通與隔離
上一節我們在 flannel 網路中部署了容器,本節討論 flannel 的連通和隔離特性,
(1)flannel 網路連通性
測驗 bbox1 和 bbxo2 的連通性:
docker exec bbox1 ping -c 10.2.17.2
bbox1 能夠 ping 到位于不同 subnet 的 bbox2,通過 traceroute 分析一下 bbox1 到 bbox2 的路徑,
docker exec bbox1 traceroute 10.2.17.2
-
bbox1 與 bbox2 不是一個 subnet,資料包發送給默認網關 10.2.40.1(docker0),
-
根據 host1 的路由表,資料包會發給 flannel.1,
host1# ip route 10.2.0.0/16 dev flannel.1
3.flannel.1 將資料包封裝成 VxLAN,通過 ens33 發送給 host2,
4.host2 收到包解封裝,發現資料包目的地址為 10.2.17.2,根據路由表(下圖)將資料包發送給 flannel.1,并通過 docker0 到達 bbox2,
host2:ip route
10.2.0.0/16 dev flannel.1
10.2.17.0/24 dev docker0 proto kernel scope link scr 10.2.17.1
資料流向如圖所示:

另外,flannel 是沒有 DNS 服務的,容器無法通過 hostname 通信,
host1#docker exec bbox1 ping -c bbox2
(2)flannel 網路隔離
flannel 為每個主機分配了獨立的 subnet,但 flannel.1 將這些 subnet 連接起來了,相互之間可以路由,本質上,flannel 將各主機上相互獨立的 docker0 容器網路組成了一個互通的大網路,實作了容器跨主機通信,flannel 沒有提供隔離,
(3)flannel 與外網連通性
因為 flannel 網路利用的是默認的 bridge 網路,所以容器與外網的連通方式與 bridge 網路一樣,即:
- 容器通過 docker0 NAT 訪問外網
- 通過主機埠映射,外網可以訪問容器,詳細討論可參考前面 bridge 網路相關章節,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/235012.html
標籤:其他
上一篇:Python學習日記(四十) Mysql資料庫篇 八
下一篇:騰訊游戲 K8s 應用實踐|更貼近業務場景的 K8s 作業負載:GameDeployment & GameStatefulSet
