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

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

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

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