Cloud Foundry和Kubernetes結(jié)合的過去與未來,融合是市場發(fā)展趨勢
過去的幾年中,在云計(jì)算領(lǐng)域的開源社區(qū)中最有爭議的話題莫過于Cloud Foundry和Kubernetes的關(guān)系。大家的疑問緊緊圍繞著三個問題:“它們會互相取代對方嗎?”,“它們是互斥的嗎?” ,“還是說它們是可以融合的?”。放眼望去在目前的商業(yè)產(chǎn)品中,兩者幾乎沒什么關(guān)聯(lián)和集成,都可以運(yùn)行在各種IaaS之上。
多年以來,我們一直從事Cloud Foundry部署的相關(guān)工作,從原來傳統(tǒng)的BOSH CPI到現(xiàn)在的容器化Cloud Foundry的工作。在這期間,我們對兩者結(jié)合的多種技術(shù)選型的進(jìn)行探索,包括可行性分析、***實(shí)踐、經(jīng)驗(yàn)總結(jié)和價值意義等方面,旨在***程度上利用和發(fā)揮兩者的優(yōu)勢,并提升開發(fā)者體驗(yàn)。
本文將從Cloud Foundry部署的層面,來介紹業(yè)界和我們?nèi)绾稳グ褍商紫到y(tǒng)進(jìn)行整合的。當(dāng)然任何整合方案都會有各自的優(yōu)缺點(diǎn),而且所有的整合還在一個快速發(fā)展的階段,所以在這里算是給大家拋磚引玉,為以后的工作和學(xué)習(xí)提供一些幫助。
Cloud Foundry和Kubernetes簡介
Cloud Foundry
Cloud Foundry是一個獨(dú)立于云的平臺即服務(wù)解決方案,也是業(yè)界最成功的PaaS平臺。Cloud Foundry提供了一個可輕松運(yùn)行、擴(kuò)展和維護(hù)應(yīng)用程序的環(huán)境和快速便捷的開發(fā)者體驗(yàn)。Cloud Foundry支持Java、NodeJS、Ruby、Python等大多數(shù)語言和環(huán)境。
開源的Cloud Foundry由Cloud Foundry基金會開發(fā)并支持,基金會包括Pivotal、IBM、VMware以及其它許多廠商。商業(yè)版本的Cloud Foundry,如IBM Bluemix和Pivotal Cloud Foundry,是基于開源的Cloud Foundry項(xiàng)目并在其基礎(chǔ)上提供企業(yè)級的支持。
Kubernetes
Kubernetes是一個來源于谷歌Borg項(xiàng)目的開源云平臺。它由Cloud Native Computing Foundation發(fā)起,該基金會的成員包括了許多行業(yè)巨頭,如AWS、Azure、Intel、IBM、RedHat、Pivotal等許多公司。
Kubernetes首要的功能是一個容器編排和容器生命周期的管理。盡管不限于此,但它通常是被用來運(yùn)行Docker容器,它的受眾人群更廣泛一些,比如想要構(gòu)建在容器服務(wù)之上的應(yīng)用和服務(wù)開發(fā)人員。有一些解決方案基于Kubernetes提供了PaaS體驗(yàn),比如IBM的Container Service和RedHat的OpenShift等。
兩個平臺的比較
兩個平臺都很成熟和完整,而且隨著不斷的開發(fā)和改進(jìn),所以兩個平臺的相同和不同之處也會隨之變。當(dāng)然兩大項(xiàng)目有很多相似之處,包括容器化,命名空間和身份驗(yàn)證等機(jī)制。而兩者也有各自的優(yōu)勢:
Cloud Foundry的優(yōu)勢在于:
- 成熟的身份驗(yàn)證系統(tǒng)UAA,用戶組和multi-tenancy的支持
- 方便快捷的cf push
- 自帶負(fù)載均衡Router
- 強(qiáng)大的日志和metrics整合
- 成熟的部署工具BOSH
Kubernetes的優(yōu)勢在于:
- 大量社區(qū)和第三方支持,提供強(qiáng)大的擴(kuò)展性
- 完善的容器生命周期和自動伸縮管理
- 方便快捷的容器化應(yīng)用部署
- 良好、多樣的持久層支持
- 多種開源UI支持
現(xiàn)階段兩者的關(guān)系及結(jié)合情況
從上面的比較,我們可以看到,兩大平臺各有各的優(yōu)勢及強(qiáng)大之處。所以業(yè)界有很多廠商都想嘗試將兩者融合,從而將優(yōu)勢發(fā)揮到***化。從現(xiàn)在來看兩者整合主要有以下三種方式:
Kubernetes CPI
我們知道BOSH是Cloud Foundry官方指定的部署工具,它是一個針對大規(guī)模分布式系統(tǒng)的部署和生命周期管理的開源工具。但是BOSH不僅僅局限于部署Cloud Foundry,也可以應(yīng)用于別的分布式系統(tǒng),只需要其提供符合要求的Release即可。CPI全稱Cloud Provider Interface,是BOSH用來與IaaS通信完成虛擬機(jī)實(shí)例和模板的創(chuàng)建和管理的一個API接口,CPI目前能夠支持Amazon的AWS、微軟的Azure、IBM的SoftLayer等IaaS平臺,國內(nèi)阿里云也提供了CPI的支持。BOSH的主控制器Director通過CPI與底層的IaaS層交互,將BOSH manifest.yaml 文件定義任務(wù)及組件部署到IaaS層的VM上,如下圖所示:

所以,***種整合,也就是開發(fā)一套Kubernetes的CPI,通過BOSH和manifest.yaml的配置將Cloud Foundry部署到Kubernetes上?,F(xiàn)在有一些大的廠商如IBM、SAP在開發(fā)相應(yīng)的Kubernetes CPI,大家可以在GitHub中搜索到。我個人覺得,這種方式雖然容易上手,但還是以IaaS的角度來看待Kubernetes,底層還是通過BOSH來管理的,沒能***地發(fā)揮Kubernetes平臺的優(yōu)勢的。
Cloud Foundry Container Runtime(CFCR)
Cloud Foundry基金會在2017年底宣布把Pivotal和谷歌捐獻(xiàn)的Kubo項(xiàng)目改名為CFCR(Cloud Foundry Container Runtime)??傮w來說是利用BOSH來部署Cloud Foundry和Kubernetes,并通過Application Runtime管理Cloud Foundry的Application Service;通過Container Runtime管理Kubernetes的Container Service,比如一些無法部署在Cloud Foundry內(nèi)的服務(wù),如數(shù)據(jù)庫、監(jiān)控等。然后通過Open Service Broker將兩者連接起來,如下圖所示:

容器化Cloud Foundry
將Cloud Foundry所有組件容器化,并部署到Kubernetes上是一種比較新型的整合方式?,F(xiàn)在有一些大的廠商做這方面的工作,比如SUSE、IBM和SAP。其核心就是通過將Cloud Foundry的BOSH Release轉(zhuǎn)化成Docker鏡像,然后通過Kubernetes的部署工具Helm來將Cloud Foundry更加自然地部署到Kubernetes上。只有在生成Cloud Foundry組件的Docker鏡像是需要用到BOSH Cli去轉(zhuǎn)化BOSH release,部署及部署之后的管理,都不需要BOSH,而是交給Kubernetes來對所有Cloud Foundry組件的Pod、服務(wù)及相應(yīng)配置資源的生命周期進(jìn)行管理。這樣既享受到了Cloud Foundry帶來的良好的開發(fā)者體驗(yàn),又用到了Kubernetes強(qiáng)大的管理和擴(kuò)展能力:

IBM在兩者結(jié)合上做的工作和成果
IBM主要是和SUSE合作,在上面第三種方案的基礎(chǔ)上,創(chuàng)建一套可以在IBM Cloud上快速部署的企業(yè)級Cloud Foundry。這個新的服務(wù)名稱叫做IBM Cloud Foundry Enterprise Environment(CFEE),他的主要構(gòu)件流程如下:
- 首先我們需要將BOSH的Release通過SUSE的轉(zhuǎn)換工具Fissile將其編譯并制作成CF組件相應(yīng)的Docker鏡像。
- 之后我們需要通過Fissile將預(yù)設(shè)的參數(shù)轉(zhuǎn)換成Helm或者Kubernetes的配置資源文件。
- 利用IBM Cloud強(qiáng)大的服務(wù)資源,增加企業(yè)級服務(wù)的支持,比如數(shù)據(jù)庫服務(wù),安全服務(wù)和負(fù)載均衡服務(wù)。
- ***發(fā)布新的IBM CF版本,用戶可以直接在IBM Cloud的Catalog里面找到并自動部署出一套CFEE環(huán)境。
和傳統(tǒng)的BOSH CPI的部署方式的比較,新的Cloud Foundry版本發(fā)布后,管理員只需執(zhí)行一次來構(gòu)建任務(wù)來創(chuàng)建新版本Docker鏡像和Helm配置,之后就可以重復(fù)使用了。這種部署Cloud Foundry的方式時間大概在15-20分鐘,和之前BOSH部署4-6個小時相比,快了很多。
IBM已于2018上半年的Cloud Foundry Summit上發(fā)布了Experimental版本:
在剛過去的2018年10月初,IBM又發(fā)布了CFEE的GA版,主要為企業(yè)級客戶提供更好的服務(wù)、帶來更大的價值。部署出來的CFEE環(huán)境不但與其他環(huán)境是相互隔離的,而且CFEE環(huán)境中部署的Cloud Foundry應(yīng)用還可以很輕松地使用IBM Cloud上豐富的服務(wù)資源,如AI,大數(shù)據(jù),IoT和Blockchain等:
感興趣的用戶可以通過IBM Cloud的Catalog找到CFEE的介紹:
https://console.bluemix.net/do ... ating。
在部署頁面中,用戶可以配置CFEE的域名,Diego-cell的個數(shù)以及CF版本等信息,然后CFEE可以實(shí)現(xiàn)全自動化一鍵部署,大概1個小時左右,一個企業(yè)級的CF環(huán)境就部署成功了:

當(dāng)然在部署完成后,CFEE還提供了強(qiáng)大的管理,監(jiān)控和命令行等功能,如圖所示,用戶可以很輕松地在頁面上查看Cloud Foundry和應(yīng)用的使用情況,創(chuàng)建相應(yīng)的資源或者綁定IBM的外部服務(wù)等:

未來兩者結(jié)合的發(fā)展方向
當(dāng)然兩者結(jié)合的探索工作不止于此,現(xiàn)在越來越多的廠商和開發(fā)者加入到兩者整合的研究中。其中比較火的有IBM主導(dǎo)的Cloud Foundry孵化項(xiàng)目Eirini,其想法是想將Cloud Foundry中的Diego-cell容器Garden替換成Kubernetes的容器,從而將兩者更緊密地連接在一起:

還有像SUSE主導(dǎo)的Fissile項(xiàng)目,未來其想法是想通過BOSH命令可以直接生成CF的Docker鏡像和Helm配置,從而可以更好地和社區(qū)融合到一起。
總結(jié)
綜上所述,Kubernetes之于Cloud Foundry的關(guān)系不是挑戰(zhàn)也不是競爭關(guān)系,Cloud Foundry希望與其更好地融合,就像Cloud Foundry Foundation執(zhí)行董事Abby Kearns說的:“Cloud Foundry是結(jié)構(gòu)化的PaaS平臺,其他平臺是非結(jié)構(gòu)化的,用戶的需求是多元化的,并不是一定要如何容器化,而是希望平臺能夠更開放、支持更多的類型。”
不管未來兩者怎么發(fā)展,兩者的結(jié)合絕對是適應(yīng)市場的趨勢,同時又能給用戶帶來多方面的價值提升。未來兩者還能碰撞出什么樣的火花?讓我們拭目以待!

























