打造SDN容器百寶箱(一)
作為SDN領(lǐng)域從業(yè)者,如何讓Docker服務(wù)于SDN,可能是大家比較關(guān)心的話題。接下來的幾篇將講述如何搭建一個(gè)靈活敏捷的CDSC(container define service cloud)平臺。
開始聊Docker之前,我想先談?wù)剬W(xué)習(xí)開源項(xiàng)目的個(gè)人體會(huì)。
學(xué)習(xí)一個(gè)開源項(xiàng)目比較好的套路是:先通過安裝部署和運(yùn)行,熟悉其大概提供的服務(wù),根據(jù)官網(wǎng)的wiki等信息從宏觀層面了解其大概架構(gòu),通過做一些實(shí)驗(yàn)熟悉其具體的功能和特性,通過對一個(gè)“點(diǎn)”的功能特性熟悉,進(jìn)行拓展,形成知識的“線”和“面”。在此過程中,需要反復(fù)不斷地進(jìn)行一些調(diào)試操作和知識驗(yàn)證,熟悉一些細(xì)節(jié)特性,因?yàn)殚_源項(xiàng)目里有很多不完善和錯(cuò)誤的地方。
當(dāng)你已經(jīng)熟悉了開源項(xiàng)目的功能服務(wù)后,如果僅為了解它,到此可以為止了,如果你想利用它為自身的產(chǎn)品服務(wù)還不夠,可能需要深入代碼層面,了解其設(shè)計(jì)架構(gòu),走通其運(yùn)行流程。這樣可以在服務(wù)自身產(chǎn)品的過程中,裁剪起來才游刃有余。
廢話不多說了,Docker作為開源界比較知名的項(xiàng)目,也是這個(gè)思路。我個(gè)人也是零碎的接觸Docker,更還沒有把它運(yùn)用于實(shí)際工作中,因此理解認(rèn)識也是比較膚淺,若有不對的地方,歡迎指教。如果你還是新手,建議可以先到其官網(wǎng)https://www.docker.com/熟悉了解。如果你覺得自己英文不咋的,國內(nèi)已有前輩們總結(jié)了一些資料,比如http://www.dockerpool.com。
開源項(xiàng)目只有把它應(yīng)用于自身的實(shí)際工作,才能體現(xiàn)其價(jià)值。作為SDN領(lǐng)域從業(yè)者,如果要在公司內(nèi)部推廣Docker應(yīng)用的話,下圖是個(gè)人的一些不成熟的想法:

SDN領(lǐng)域的開源項(xiàng)目比較多,無論是作為高??蒲腥藛T,還是企業(yè)內(nèi)部的部署測試,都迫切需要“拿來即用”的軟件服務(wù),在這樣的需求背景下,搭建一個(gè)上述的CDSC(container define service cloud)平臺是必要的也是可行的。
在上圖中,主要分為鏡像存儲與管理,容器集群的管理,容器的統(tǒng)一調(diào)度和UI展示層。
鏡像存儲,目前Docker分為共有倉庫和私有倉庫。但共有倉庫下載上傳比較慢,如果想把Docker作為企業(yè)級進(jìn)行部署使用,必然要搭建私有倉庫,因?yàn)槭褂闷饋砀?,更安全可控。如何建私有倉庫官網(wǎng)有介紹,就不在本文重復(fù)了。下圖是之前搭建好的私有倉庫部分截圖:

對于實(shí)際的鏡像文件的存儲,可以通過glance+swift技術(shù)思路進(jìn)行高效管理。
容器集群的管理主要借助于Docker生態(tài)系統(tǒng)中另一個(gè)開源項(xiàng)目kubernetes。它實(shí)現(xiàn)了更加高效,靈動(dòng)的容器管理,通過指定用戶自定義網(wǎng)橋和Open vSwitch的GRE保障了跨宿主機(jī)容器間的通信,打通了2-3層。在容器集群里的SDNPool里主要存放SDN領(lǐng)域相關(guān)的容器服務(wù),大家應(yīng)該不陌生,用到的時(shí)候拿來即用,一次部署,隨時(shí)運(yùn)行,同時(shí)比虛擬機(jī)占用的資源又小;在workPool里主要存放一些日常工作需要的常用工具軟件。當(dāng)然作為開發(fā)人員或者測試人員,也可定制的自己的環(huán)境,當(dāng)項(xiàng)目組有新人過來時(shí),直接分發(fā)個(gè)容器給他(她)就行了,再也不用手把手教學(xué)了。
在容器統(tǒng)一調(diào)度部分,主要設(shè)計(jì)容器管理(創(chuàng)建,查看,刪除,上傳,啟停);端口管理,由于Docker是通過宿主機(jī)的端口NAT映射來區(qū)分管理不同的容器的,因此端口的管理與分發(fā)需要集中管理,方便監(jiān)測。安全控制部分,其實(shí)Docker1.0到Docker1.3變化比較大的部分,就是Docker的安全加固,我也根據(jù)官網(wǎng)的介紹做了一遍,比較繁瑣,好在連蒙帶猜搞定了。Docker的安全加固未來估計(jì)考慮的方面更多,這是任何系統(tǒng)框架的一個(gè)老大難的問題。容器拓?fù)洌饕强梢暬褐械娜萜?,可以通過官網(wǎng)介紹的playground嘗試。容器的流量監(jiān)控,當(dāng)集群中的大量容器提供服務(wù)時(shí),很有必要監(jiān)控容器的流量,這個(gè)可以通過sflow技術(shù)實(shí)現(xiàn),sflow是一種以設(shè)備端口為基本單元的數(shù)據(jù)流隨機(jī)采樣流量監(jiān)控技術(shù)。CDSC系統(tǒng)的可視化展示層既可以自己開發(fā)一套,也可以基于shipyard二次開發(fā),通過nginx做web的負(fù)載均衡,增強(qiáng)web訪問的體驗(yàn)。
總結(jié),IT技術(shù)的發(fā)展,開源項(xiàng)目的出現(xiàn),總是一浪一浪的。很多技術(shù)項(xiàng)目的發(fā)展具有驚人的相似性。如下圖所示:

起初是個(gè)好的idea,還是很小的項(xiàng)目,隨著參與的公司和人越來越多,此項(xiàng)目會(huì)變得很臃腫龐大,看起來很強(qiáng)大。隨著人們因?yàn)槠谕絹碓礁?,?yīng)用場景越來越復(fù)雜。終于有一天,一些人實(shí)在看不下去了,做了一個(gè)輕量級的組件式,更加敏捷的東東出來。比如OpenDaylight與ONOS,hadoop與spark,KVM與Docker等等。
那么,如何要實(shí)現(xiàn)CDSC(container define service cloud)平臺,下一篇將帶您進(jìn)入實(shí)戰(zhàn)篇。Docker之風(fēng)已經(jīng)刮起,你想做那頭會(huì)飛的豬嗎?





















