歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Docker下基於flannel的overlay網絡分析

Docker下基於flannel的overlay網絡分析

日期:2017/2/27 15:46:59   编辑:Linux教程

近期公司的flannel網絡很不穩定,花時間研究了下並且保證雲端自動部署的網絡能夠正常work。

1.網絡拓撲

  1. 容器網卡通過docker0橋接到flannel0網卡,而每個host對應的flannel0網段為 10.1.x.[1-255]/24,而flannel所組成的一個跨host的網段為10.1.x.x/16,而flannel0則為flanneld 進程虛擬出來的網卡。
  2. docker0的地址是由 /run/flannel/subnet.env 的 FLANNEL_SUBNET 參數決定的。

2.HostA的Container1和HostB的Container2如何通信

  1. host A的container1請求host B的container2的的數據時,流程如下: 根據host A的路由規則 "10.1.15.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0“ 數據交給docker0處理。
  2. docker0會收到數據,然後根據路由規則 ”10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel0" 數據被交由給flannel0網卡處理。 flanneld會把數據封包然後送給eth0,用udp協議發送到對方host的eth0網卡。
  3. host B的 eth0網卡收到後,根據路由規則 10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel0" 則交給flannel0網卡處理。
  4. flanneld會把數據解包,根據路由規則 “10.1.20.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0" 交給docker0處理。
  5. 則host B的container 2 將會收到數據。
    至此網路通信解釋完畢。

3.自動部署程序中添加物理機需要注意的地方

基於上,故而:

  1. 網卡docker0、flannel0網卡的正確建立。
  2. 路由被正確配置!10.1.x.[1-255]/24 和 10.1.x.x/16 兩個網段的正確路由配置。
  3. 我們的網絡環境檢查都基於此。通常情況下,以上兩者可以自動正確建立成功,但有時候會出現異常。
  4. 添加物理機時候檢查網絡環境 ifconfig docker0 和 flannel0並且需要正確配置路由規則。
Copyright © Linux教程網 All Rights Reserved