flannel 的連通與隔離
?
測試 bbox1 和 bbxo2 的連通性:
?
bbox1 能夠 ping 到位于不同 subnet 的 bbox2,通過 traceroute 分析一下 bbox1 到 bbox2 的路徑。
?
1) bbox1 與 bbox2 不是一個 subnet,數據包發送給默認網關 10.2.9.1(docker0)。
2) 根據 host1 的路由表(下圖),數據包會發給 flannel.1。
3) flannel.1 將數據包封裝成 VxLAN,通過 ens192 發送給 host2。
4) host2 收到包解封裝,發現數據包目的地址為 10.2.52.2,根據路由表(下圖)將數據包發送給 flannel.1,并通過 docker0 到達 bbox2。
?
?
數據流向如圖所示:
?
另外,flannel 是沒有 DNS 服務的,容器無法通過 hostname 通信。
?
?
flannel 網絡隔離
?
flannel 為每個主機分配了獨立的 subnet,但 flannel.1 將這些 subnet 連接起來了,相互之間可以路由。
本質上,flannel 將各主機上相互獨立的 docker0 容器網絡組成了一個互通的大網絡,實現了容器跨主機通信。
flannel 沒有提供隔離。
?
flannel 與外網連通性
因為 flannel 網絡利用的是默認的 bridge 網絡,所以容器與外網的連通方式與 bridge 網絡一樣,即:
- 容器通過 docker0 NAT 訪問外網
- 通過主機端口映射,外網可以訪問容器
?
--------------------------------------------引用來自------------------------------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587816&idx=1&sn=920885ea2a213358bf271c9d06752569&chksm=8d308171ba47086793e5d2c04a3c84df2109d03d994a6d3484b1ec45b3d333353456e75a65b6&scene=21#wechat_redirect