中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker集群之Flannel使用技巧

發布時間:2020-08-09 13:25:35 來源:ITPUB博客 閱讀:186 作者:xiaohuojian2018 欄目:云計算

當您將多臺服務器節點組成一個Docker集群時,需要對集群網絡進行設置,否則默認情況下,無法跨主機容器互聯,接下來我們首先分析一下原因。

跨主機容器互聯

下圖描述了一個簡單的集群網絡,在該集群內,有兩臺服務器甲和乙,每臺服務器上都有兩張網卡,分別連接公網和私網,兩臺服務器可以通過私網互聯,在兩個服務器節點上分別安裝了Docker,并且運行了A/B/C/D 4個容器。

每臺服務器節點上都有一個  docker0  網橋,這是docker啟動后初始化的虛擬設備,每個容器都與 docker0 網橋連接,并且,容器的IP由docker自動分配。

Docker集群之Flannel使用技巧

但是這個默認情況下的網絡設置不支持跨主機的容器互聯,原因有兩方面。

一,跨主機訪問容器,沒有有效路由

比如,容器A要訪問容器D,請求的地址為  192.168.1.4  ,但是主機甲并不知道該將這個IP發送到那個網絡設備上,主機甲也不知道主機乙內部有個容器D。

二,多個節點上的容器網段沖突

默認情況下,docker啟動后初始化  docker0  網橋時,會隨機分配一個IP段,那么,如果不加以協調,多個節點內的容器網絡有可能會沖突,比如上圖中兩個網絡都采用了  192.168.1.1/24  網段,在這種情況下,就會導致容器IP沖突,比如 B 和 C。

那么,只需要解決這兩個問題,我們就可以實現跨主機的容器互聯。

脈沖云集群網絡設置

使用 脈沖云 可以非常輕易地完成集群網絡設置。在增加集群時,只需要將集群的網絡類型設置為Flannel即可。

Docker集群之Flannel使用技巧

Flannel 是一個專門用于容器網絡互聯的軟件,脈沖云會自動地在您的服務器節點上部署Flannel實現容器互聯。

設置Flannel時,可以指定容器局域網段和子網掩碼,如上圖所示,如果選擇局域網段為  172.16.0.0/12  子網掩碼為  255.255.240.0  那么,在整個集群網絡中,就可以分配256個子網,IP段分別為 172.16.0.0/20 、  172.16.16.0/20 、  172.16.32.0/20  等等,每個子網中可以再分配  4096  個IP。每個節點的  docker0  網橋使用一個子網,每個容器使用一個子網內的IP,那么我們就可以組成下圖中所示網絡。

Docker集群之Flannel使用技巧

圖中,主機甲的docker被分配到了  172.16.0.1/20  子網,主機已的docker被分配到了 172.16.16.1/20  子網,兩個子網都處在一個由Flannel管理的虛擬網絡  172.16.0.0/12  中,圖中以虛線代表。

到此,在Flannel的協調下,各個主機上的Docker子網IP就不會再沖突了,另外,Flannel會維護容器網絡的路由規則,容器A就可以通過 172.16.16.3 訪問容器D了,也就實現了跨主機容器互聯。

Flannel維護的容器網絡是一個虛擬網絡,在圖中的虛線也是為了抽象理解,如果你對Flannel的實現方式感興趣,可以繼續查閱Flannel的官方文檔。

一些說明

  • 上文中為了簡化方便理解,網橋IP和子網IP段沒有分開說明,在上圖中,主機甲所分配的子網網段是  172.16.0.0/20  ,網段中的第一個IP  172.16.0.1  ,用作網橋設備的IP。

  • 由于一個網段中第一個IP用作網橋設備IP,最后一個IP用作廣播IP,所以在一個子網中,理論上可以分配 4096 個IP,但是實際上只有 4094 個IP可用。

  • 在設置脈沖云集群網絡時,選擇的集群網段請勿與已經存在的網絡沖突,比如目標集群已經存在了  10.0.0.0/8  網絡,那么請選擇  172.16.0.0/12  或  192.168.0.0/16  作為容器網絡。


組網IP

在上文Flannel網絡的示意圖中,有三個網絡,公網  0.0.0.0/0  ,私網  10.0.0.0/8  和虛擬的容器網絡  172.16.0.0/12  ,強調容器網絡是 虛擬網絡  原因是,這個網絡上的數據必須以其他網絡為載體,這個網絡是一個二級網絡。

比如,主機甲上的容器A給主機乙上的容器D發送數據,數據會被路由到  docker0  網橋上,然后數據會被Flannel通過主機甲的真實網卡,發送到主機乙的網卡上,主機乙上運行的Flannel,繼續將數據轉發到主機乙的 docker0  網橋上,最后到達容器D。

那么如果主機有多張網卡,就像圖中那樣,有兩張網卡分別連接公網和私網,那么我們需要為Flannel指定一個網卡/IP用以發送數據,這個IP,我們稱為  組網IP 。即告訴主機甲上運行的Flannel,使用哪個網卡/IP 去尋找主機乙。

使用脈沖云組建的集群,會默認使用節點的公網IP作為組網IP。那么,多個節點之間的數據通信會被發送到公網之上,除非是跨機房互聯,一般情況下,我們希望節點間通過內網傳輸數據,以提高性能,或降低費用。

將主機添加到集群后,在主機設置頁面,選擇組網IP即可指定各個主機節點分別使用的 組網IP

Docker集群之Flannel使用技巧

NAT設備后的集群

NAT,即網絡地址轉換,常用的路由器就是NAT設備,在有NAT設備的網絡拓撲中,局域網內的主機只有內網IP,沒有公網IP,網絡如下所示:

Docker集群之Flannel使用技巧

在這種網絡模型下,各個服務器節點主機都通過路由器  8.8.8.8  連接脈沖云,所以脈沖云只能獲取到各個服務器的公網IP為  8.8.8.8  ,按上文所述,脈沖云會默認使用公網IP  8.8.8.8  作為Flannel的組網IP,在這種情況下,會導致Flannel組網失敗,甚至Flannel會無法啟動,因為主機上并不存在一個IP為  8.8.8.8  的網卡。

為解決這種問題,只需要手動設置每一個節點的組網IP即可。

某些云服務商的主機也是在NAT設備之后的,比如阿里云服務器,如果使用了阿里云的VPC網絡,即使給服務器綁定了公網IP  8.8.8.8 ,但是從主機上看,并沒有綁定公網IP的網卡設備,只有一個內網網卡,原因就是有NAT設備存在。這種情況下,也需要指定內網IP為組網IP。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

襄城县| 乌拉特中旗| 伊宁县| 龙井市| 道真| 墨脱县| 太保市| 和田市| 洱源县| 平舆县| 三门县| 苏尼特右旗| 西峡县| 澜沧| 六枝特区| 伊春市| 巴南区| 南涧| 临汾市| 县级市| 松原市| 兴文县| 清水县| 讷河市| 嵊州市| 平度市| 微山县| 绵竹市| 封开县| 蒙自县| 贵定县| 江孜县| 理塘县| 商水县| 息烽县| 贵溪市| 阿拉善左旗| 临桂县| 盱眙县| 衡水市| 安福县|