開發(fā)跨主機(jī)docker macvlan 和overlay 網(wǎng)絡(luò)管理程序記錄

docker 1.12中支持了overlay和macvlan網(wǎng)絡(luò),雖然macvlan仍處于實(shí)驗(yàn)階段。

macvlan和overlay網(wǎng)絡(luò)不同,overlay是global scope類型的網(wǎng)絡(luò),而macvlan是local scope。scope按我的理解,指的是網(wǎng)絡(luò)作用的范圍。global類型的網(wǎng)絡(luò)其作用于一組docker daemon集群,scope類型的網(wǎng)絡(luò)只作用于單一主機(jī)。

更詳細(xì)的解釋就是: 在docker daemon設(shè)置了同樣cluster-store參數(shù)的docker主機(jī),自動(dòng)加入到同一個(gè)overlay cluster集群,自動(dòng)同步其他主機(jī)創(chuàng)建的所有overlay網(wǎng)絡(luò)。也就是指,這些主機(jī)將會(huì)看到同樣的overlay網(wǎng)絡(luò),因此你不可能創(chuàng)建存在subnet重疊的兩個(gè)overlay網(wǎng)絡(luò),也不能為兩個(gè)容器分配 同樣的IP地址。而每臺(tái)主機(jī)創(chuàng)建的macvlan網(wǎng)絡(luò)是獨(dú)立的,A機(jī)器上創(chuàng)建的macvlan網(wǎng)絡(luò)并不影響B(tài)機(jī)器上的網(wǎng)絡(luò),但兩臺(tái)主機(jī)在(1)網(wǎng)卡配置混雜模式,(2)兩臺(tái)主機(jī)上macvlan存在overlap,(3)兩個(gè)macvlan網(wǎng)絡(luò)沒有分配過同樣IP,這三個(gè)條件滿足時(shí),跨主機(jī)macvlan是可以通信。這個(gè)可以參考我同事寫的macvlan搭建筆記。

因?yàn)樯鲜龅脑颍陂_發(fā)跨主機(jī)的macvlan和overlay網(wǎng)絡(luò)管理程序時(shí),兩者有明顯的不同:

1.overlay網(wǎng)絡(luò)管理不需要專門去開發(fā)ipam插件,docker daemon內(nèi)置的Ipam模塊可以處理IP分配和DHCP的問題。在overlay網(wǎng)絡(luò)集群中的任何一臺(tái)主機(jī)創(chuàng)建了新的overlay網(wǎng)絡(luò),docker內(nèi)置ipam會(huì)自動(dòng)去檢測(cè)新的網(wǎng)絡(luò)是否和已存在的網(wǎng)絡(luò)是存在subnet overlap的問題。

兩臺(tái)主機(jī)上的macvlan網(wǎng)絡(luò)是獨(dú)立的,如果使用默認(rèn)的docker ipam,兩臺(tái)主機(jī)上的對(duì)相互間的ip分配是沒有感知的。不可避免會(huì)出現(xiàn)分配了同樣IP的問題,導(dǎo)致跨主機(jī)macvlan網(wǎng)絡(luò)通信出現(xiàn)問題。因此我們需要開發(fā)自己的ipam插件,管理ip地址的分配。在用戶請(qǐng)求創(chuàng)建主機(jī)集群的macvlan網(wǎng)絡(luò)時(shí),由我們自己編寫的ipam驅(qū)動(dòng)去檢查subnet overlap和ip占用的問題。

2. overlay集群中任一主機(jī)對(duì)集群中的overlay進(jìn)行管理操作,docker daemon將會(huì)自動(dòng)同步到整個(gè)集群的主機(jī)。新加入的主機(jī),自動(dòng)同步所有overlay網(wǎng)絡(luò),主機(jī)移除后,自動(dòng)清除該主機(jī)上網(wǎng)絡(luò)數(shù)據(jù),同步所有集群主機(jī)。

而macvlan是獨(dú)立的,所以我們需要構(gòu)建一層抽象的全局網(wǎng)絡(luò)層:(1)上層應(yīng)用對(duì)macvlan進(jìn)行管理時(shí)(創(chuàng)建/刪除等),網(wǎng)絡(luò)層需要指揮底層的主機(jī)節(jié)點(diǎn)執(zhí)行真正的網(wǎng)絡(luò)動(dòng)作。(2)新添加的主機(jī),網(wǎng)絡(luò)層需要記錄主機(jī)節(jié)點(diǎn)的信息,并根據(jù)網(wǎng)絡(luò)層的網(wǎng)絡(luò)數(shù)據(jù)指揮底層主機(jī)節(jié)點(diǎn)創(chuàng)建macvlan網(wǎng)絡(luò)(3)主機(jī)斷開連接后,網(wǎng)絡(luò)層需要更新底層的網(wǎng)絡(luò)節(jié)點(diǎn)的信息。從這里可以得知,over

當(dāng)然兩種網(wǎng)絡(luò)管理程序開發(fā)過程也存在相同點(diǎn):需要監(jiān)聽所有主機(jī)的docker daemon 網(wǎng)絡(luò)操作,同步網(wǎng)絡(luò)信息或者執(zhí)行相應(yīng)的處理等 ??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容