(五)overlay 如何實作跨主機通信?
上一節我們在 host1 中運行了容器 bbox1,今天將詳細討論 overlay 網路跨主機通信的原理,
在 host2 中運行容器 bbox2:

bbox2 IP 為 10.0.0.3,可以直接 ping bbox1:

可見 overlay 網路中的容器可以直接通信,同時 docker 也實作了 DNS 服務,
下面我們討論一下 overlay 網路的具體實作:
docker 會為每個 overlay 網路創建一個獨立的 network namespace,其中會有一個 linux bridge br0,endpoint 還是由 veth pair 實作,一端連接到容器中(即 eth0),另一端連接到 namespace 的 br0 上,
br0 除了連接所有的 endpoint,還會連接一個 vxlan 設備,用于與其他 host 建立 vxlan tunnel,容器之間的資料就是通過這個 tunnel 通信的,邏輯網路拓撲結構如圖所示:

要查看 overlay 網路的 namespace 可以在 host1 和 host2 上執行 ip netns(請確保在此之前執行過 ln -s /var/run/docker/netns /var/run/netns),可以看到兩個 host 上有一個相同的 namespace “1-f4af9b33c0”:
ip netns
......
1-f4af9b33c0
......
這就是 ov_net1 的 namespace,查看 namespace 中的 br0 上的設備,

查看 vxlan1 設備的具體配置資訊可知此 overlay 使用的 VNI(VxLAN ID)為 256 ,

理解了 overlay 網路的連通性,下一節我們繼續討論 overlay 的網路隔離特性,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230226.html
標籤:其他
上一篇:容器網路(六)在 overlay 中運行容器【46】
下一篇:日語學習筆記整理(漢譯日)
