1. 程式人生 > >flannel 的連通與隔離 - 每天5分鐘玩轉 Docker 容器技術(61)

flannel 的連通與隔離 - 每天5分鐘玩轉 Docker 容器技術(61)

docker 教程 容器

上一節我們在 flannel 網絡中部署了容器本節討論 flannel 的連通和隔離特性。

flannel 網絡連通性

測試 bbox1 和 bbxo2 的連通性
技術分享

bbox1 能夠 ping 到位於不同 subnet 的 bbox2通過 traceroute 分析一下 bbox1 到 bbox2 的路徑。

技術分享

  1. bbox1 與 bbox2 不是一個 subnet數據包發送給默認網關 10.2.40.1docker0。

  2. 根據 host1 的路由表下圖數據包會發給 flannel.1。
    技術分享

  3. flannel.1 將數據包封裝成 VxLAN通過 enp0s8 發送給 host2。

  4. host2 收到包解封裝發現數據包目的地址為 10.2.17.2根據路由表下圖將數據包發送給 flannel.1並通過 docker0 到達 bbox2。
    技術分享

數據流向如圖所示

技術分享

另外flannel 是沒有 DNS 服務的容器無法通過 hostname 通信。

技術分享

flannel 網絡隔離

flannel 為每個主機分配了獨立的 subnet但 flannel.1 將這些 subnet 連接起來了相互之間可以路由。本質上flannel 將各主機上相互獨立的 docker0 容器網絡組成了一個互通的大網絡實現了容器跨主機通信。flannel 沒有提供隔離。

flannel 與外網連通性

因為 flannel 網絡利用的是默認的 bridge 網絡所以容器與外網的連通方式與 bridge 網絡一樣即

  1. 容器通過 docker0 NAT 訪問外網

  2. 通過主機端口映射外網可以訪問容器

詳細討論可參考前面 bridge 網絡相關章節。

技術分享以上是 flannel vxlan 的相關知識點下一節我們討論 flannel host-gw backend。

技術分享

flannel 的連通與隔離 - 每天5分鐘玩轉 Docker 容器技術(61)