docker下基于flannel的overlay網絡分析

jopen 9年前發布 | 52K 次閱讀 Docker

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

1.網絡拓撲

拓撲如下:(摘抄自Google搜索) docker下基于flannel的overlay網絡分析

  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 參數決定的。
  3. </ol>

    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 將會收到數據。
      至此網路通信解釋完畢。
    6. </ol>

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

      基于上,故而:

      1. 網卡docker0、flannel0網卡的正確建立。
      2. 路由被正確配置!10.1.x.[1-255]/24 和 10.1.x.x/16 兩個網段的正確路由配置。
      3. 我們的網絡環境檢查都基于此。通常情況下,以上兩者可以自動正確建立成功,但有時候會出現異常。
      4. 添加物理機時候檢查網絡環境 ifconfig docker0 和 flannel0并且需要正確配置路由規則。
      5. </ol> </div> 來自:http://my.oschina.net/xue777hua/blog/488345

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!