解決Flannel跨主機(jī)互聯(lián)網(wǎng)絡(luò)問題【Docker】

當(dāng)您將多臺(tái)服務(wù)器節(jié)點(diǎn)組成一個(gè)Docker集群時(shí),需要對集群網(wǎng)絡(luò)進(jìn)行設(shè)置混稽,否則默認(rèn)情況下审胚,無法跨主機(jī)容器互聯(lián),接下來我們首先分析一下原因洽洁。

跨主機(jī)容器互聯(lián)

下圖描述了一個(gè)簡單的集群網(wǎng)絡(luò)饿自,在該集群內(nèi)昭雌,有兩臺(tái)服務(wù)器甲和乙健田,每臺(tái)服務(wù)器上都有兩張網(wǎng)卡妓局,分別連接公網(wǎng)和私網(wǎng),兩臺(tái)服務(wù)器可以通過私網(wǎng)互聯(lián)局雄,在兩個(gè)服務(wù)器節(jié)點(diǎn)上分別安裝了Docker炬搭,并且運(yùn)行了A/B/C/D 4個(gè)容器。

每臺(tái)服務(wù)器節(jié)點(diǎn)上都有一個(gè)?docker0?網(wǎng)橋迎变,這是docker啟動(dòng)后初始化的虛擬設(shè)備衣形,每個(gè)容器都與docker0網(wǎng)橋連接谆吴,并且句狼,容器的IP由docker自動(dòng)分配。

但是這個(gè)默認(rèn)情況下的網(wǎng)絡(luò)設(shè)置不支持跨主機(jī)的容器互聯(lián),原因有兩方面昔馋。

一秘遏,跨主機(jī)訪問容器邦危,沒有有效路由

比如,容器A要訪問容器D希坚,請求的地址為?192.168.1.4?裁僧,但是主機(jī)甲并不知道該將這個(gè)IP發(fā)送到那個(gè)網(wǎng)絡(luò)設(shè)備上滩报,主機(jī)甲也不知道主機(jī)乙內(nèi)部有個(gè)容器D脓钾。

二可训,多個(gè)節(jié)點(diǎn)上的容器網(wǎng)段沖突

默認(rèn)情況下,docker啟動(dòng)后初始化?docker0?網(wǎng)橋時(shí)飞崖,會(huì)隨機(jī)分配一個(gè)IP段固歪,那么牢裳,如果不加以協(xié)調(diào)蒲讯,多個(gè)節(jié)點(diǎn)內(nèi)的容器網(wǎng)絡(luò)有可能會(huì)沖突灰署,比如上圖中兩個(gè)網(wǎng)絡(luò)都采用了?192.168.1.1/24?網(wǎng)段溉箕,在這種情況下约巷,就會(huì)導(dǎo)致容器IP沖突,比如 B 和 C踩麦。

那么谓谦,只需要解決這兩個(gè)問題反粥,我們就可以實(shí)現(xiàn)跨主機(jī)的容器互聯(lián)才顿。

脈沖云集群網(wǎng)絡(luò)設(shè)置

使用脈沖云可以非常輕易地完成集群網(wǎng)絡(luò)設(shè)置郑气。在增加集群時(shí)尾组,只需要將集群的網(wǎng)絡(luò)類型設(shè)置為Flannel即可。

Flannel 是一個(gè)專門用于容器網(wǎng)絡(luò)互聯(lián)的軟件,脈沖云會(huì)自動(dòng)地在您的服務(wù)器節(jié)點(diǎn)上部署Flannel實(shí)現(xiàn)容器互聯(lián)潮峦。

設(shè)置Flannel時(shí)歹叮,可以指定容器局域網(wǎng)段和子網(wǎng)掩碼咆耿,如上圖所示,如果選擇局域網(wǎng)段為?172.16.0.0/12?子網(wǎng)掩碼為?255.255.240.0?那么窄做,在整個(gè)集群網(wǎng)絡(luò)中椭盏,就可以分配256個(gè)子網(wǎng)掏颊,IP段分別為172.16.0.0/20艾帐、?172.16.16.0/20乌叶、?172.16.32.0/20?等等,每個(gè)子網(wǎng)中可以再分配?4096?個(gè)IP柒爸。每個(gè)節(jié)點(diǎn)的?docker0?網(wǎng)橋使用一個(gè)子網(wǎng)准浴,每個(gè)容器使用一個(gè)子網(wǎng)內(nèi)的IP,那么我們就可以組成下圖中所示網(wǎng)絡(luò)捎稚。

圖中乐横,主機(jī)甲的docker被分配到了?172.16.0.1/20?子網(wǎng),主機(jī)已的docker被分配到了172.16.16.1/20?子網(wǎng)今野,兩個(gè)子網(wǎng)都處在一個(gè)由Flannel管理的虛擬網(wǎng)絡(luò)?172.16.0.0/12?中葡公,圖中以虛線代表。

到此条霜,在Flannel的協(xié)調(diào)下催什,各個(gè)主機(jī)上的Docker子網(wǎng)IP就不會(huì)再?zèng)_突了蛆楞,另外矛纹,F(xiàn)lannel會(huì)維護(hù)容器網(wǎng)絡(luò)的路由規(guī)則孩等,容器A就可以通過172.16.16.3訪問容器D了权她,也就實(shí)現(xiàn)了跨主機(jī)容器互聯(lián)董济。

Flannel維護(hù)的容器網(wǎng)絡(luò)是一個(gè)虛擬網(wǎng)絡(luò),在圖中的虛線也是為了抽象理解,如果你對Flannel的實(shí)現(xiàn)方式感興趣,可以繼續(xù)查閱Flannel的官方文檔雌续。

一些說明

上文中為了簡化方便理解鸽心,網(wǎng)橋IP和子網(wǎng)IP段沒有分開說明,在上圖中,主機(jī)甲所分配的子網(wǎng)網(wǎng)段是?172.16.0.0/20?,網(wǎng)段中的第一個(gè)IP?172.16.0.1?,用作網(wǎng)橋設(shè)備的IP仗岖。

由于一個(gè)網(wǎng)段中第一個(gè)IP用作網(wǎng)橋設(shè)備IP讽膏,最后一個(gè)IP用作廣播IP,所以在一個(gè)子網(wǎng)中,理論上可以分配 4096 個(gè)IP,但是實(shí)際上只有 4094 個(gè)IP可用。

在設(shè)置脈沖云集群網(wǎng)絡(luò)時(shí),選擇的集群網(wǎng)段請勿與已經(jīng)存在的網(wǎng)絡(luò)沖突,比如目標(biāo)集群已經(jīng)存在了?10.0.0.0/8?網(wǎng)絡(luò),那么請選擇?172.16.0.0/12?或?192.168.0.0/16?作為容器網(wǎng)絡(luò)卓起。

組網(wǎng)IP

在上文Flannel網(wǎng)絡(luò)的示意圖中奕筐,有三個(gè)網(wǎng)絡(luò)渊胸,公網(wǎng)?0.0.0.0/0?萨咳,私網(wǎng)?10.0.0.0/8?和虛擬的容器網(wǎng)絡(luò)?172.16.0.0/12?培他,強(qiáng)調(diào)容器網(wǎng)絡(luò)是虛擬網(wǎng)絡(luò)?原因是,這個(gè)網(wǎng)絡(luò)上的數(shù)據(jù)必須以其他網(wǎng)絡(luò)為載體抗果,這個(gè)網(wǎng)絡(luò)是一個(gè)二級(jí)網(wǎng)絡(luò)涕刚。

比如,主機(jī)甲上的容器A給主機(jī)乙上的容器D發(fā)送數(shù)據(jù)译秦,數(shù)據(jù)會(huì)被路由到?docker0?網(wǎng)橋上,然后數(shù)據(jù)會(huì)被Flannel通過主機(jī)甲的真實(shí)網(wǎng)卡验夯,發(fā)送到主機(jī)乙的網(wǎng)卡上,主機(jī)乙上運(yùn)行的Flannel豁护,繼續(xù)將數(shù)據(jù)轉(zhuǎn)發(fā)到主機(jī)乙的docker0?網(wǎng)橋上,最后到達(dá)容器D做瞪。

那么如果主機(jī)有多張網(wǎng)卡,就像圖中那樣,有兩張網(wǎng)卡分別連接公網(wǎng)和私網(wǎng)蹂随,那么我們需要為Flannel指定一個(gè)網(wǎng)卡/IP用以發(fā)送數(shù)據(jù)十嘿,這個(gè)IP版姑,我們稱為?組網(wǎng)IP剥险。即告訴主機(jī)甲上運(yùn)行的Flannel,使用哪個(gè)網(wǎng)卡/IP 去尋找主機(jī)乙久脯。

使用脈沖云組建的集群牢硅,會(huì)默認(rèn)使用節(jié)點(diǎn)的公網(wǎng)IP作為組網(wǎng)IP瞧剖。那么拭嫁,多個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)通信會(huì)被發(fā)送到公網(wǎng)之上可免,除非是跨機(jī)房互聯(lián),一般情況下做粤,我們希望節(jié)點(diǎn)間通過內(nèi)網(wǎng)傳輸數(shù)據(jù)浇借,以提高性能,或降低費(fèi)用怕品。

將主機(jī)添加到集群后妇垢,在主機(jī)設(shè)置頁面,選擇組網(wǎng)IP即可指定各個(gè)主機(jī)節(jié)點(diǎn)分別使用的組網(wǎng)IP肉康。

NAT設(shè)備后的集群

NAT闯估,即網(wǎng)絡(luò)地址轉(zhuǎn)換,常用的路由器就是NAT設(shè)備吼和,在有NAT設(shè)備的網(wǎng)絡(luò)拓?fù)渲姓切剑钟蚓W(wǎng)內(nèi)的主機(jī)只有內(nèi)網(wǎng)IP,沒有公網(wǎng)IP炫乓,網(wǎng)絡(luò)如下所示:

在這種網(wǎng)絡(luò)模型下刚夺,各個(gè)服務(wù)器節(jié)點(diǎn)主機(jī)都通過路由器?8.8.8.8?連接脈沖云,所以脈沖云只能獲取到各個(gè)服務(wù)器的公網(wǎng)IP為?8.8.8.8?末捣,按上文所述侠姑,脈沖云會(huì)默認(rèn)使用公網(wǎng)IP?8.8.8.8?作為Flannel的組網(wǎng)IP,在這種情況下塔粒,會(huì)導(dǎo)致Flannel組網(wǎng)失敗结借,甚至Flannel會(huì)無法啟動(dòng)筐摘,因?yàn)橹鳈C(jī)上并不存在一個(gè)IP為?8.8.8.8?的網(wǎng)卡卒茬。

為解決這種問題,只需要手動(dòng)設(shè)置每一個(gè)節(jié)點(diǎn)的組網(wǎng)IP即可咖熟。

某些云服務(wù)商的主機(jī)也是在NAT設(shè)備之后的圃酵,比如阿里云服務(wù)器,如果使用了阿里云的VPC網(wǎng)絡(luò)馍管,即使給服務(wù)器綁定了公網(wǎng)IP?8.8.8.8郭赐,但是從主機(jī)上看,并沒有綁定公網(wǎng)IP的網(wǎng)卡設(shè)備确沸,只有一個(gè)內(nèi)網(wǎng)網(wǎng)卡捌锭,原因就是有NAT設(shè)備存在。這種情況下罗捎,也需要指定內(nèi)網(wǎng)IP為組網(wǎng)IP观谦。

文章轉(zhuǎn)載自:脈沖云平臺(tái)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市桨菜,隨后出現(xiàn)的幾起案子豁状,更是在濱河造成了極大的恐慌捉偏,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泻红,死亡現(xiàn)場離奇詭異夭禽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谊路,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門讹躯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凶异,你說我怎么就攤上這事蜀撑。” “怎么了剩彬?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵酷麦,是天一觀的道長。 經(jīng)常有香客問我喉恋,道長沃饶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任轻黑,我火速辦了婚禮糊肤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘氓鄙。我一直安慰自己馆揉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布抖拦。 她就那樣靜靜地躺著升酣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪态罪。 梳的紋絲不亂的頭發(fā)上噩茄,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音复颈,去河邊找鬼绩聘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛耗啦,可吹牛的內(nèi)容都是我干的凿菩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼帜讲,長吁一口氣:“原來是場噩夢啊……” “哼衅谷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舒帮,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對情侶失蹤会喝,失蹤者是張志新(化名)和其女友劉穎陡叠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肢执,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枉阵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了预茄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兴溜。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖耻陕,靈堂內(nèi)的尸體忽然破棺而出拙徽,到底是詐尸還是另有隱情,我是刑警寧澤诗宣,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布膘怕,位于F島的核電站,受9級(jí)特大地震影響召庞,放射性物質(zhì)發(fā)生泄漏岛心。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一篮灼、第九天 我趴在偏房一處隱蔽的房頂上張望忘古。 院中可真熱鬧,春花似錦诅诱、人聲如沸髓堪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽干旁。三九已至,卻和暖如春它改,著一層夾襖步出監(jiān)牢的瞬間疤孕,已是汗流浹背商乎。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工央拖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鹉戚。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓鲜戒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抹凳。 傳聞我的和親對象是個(gè)殘疾皇子遏餐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容