企業(yè)云容器服務(wù)將Docker容器管理的組件從用戶(hù)處抽象出來(lái),使得更為容易地部署以及擴展其上構建的應用。但是,他們所提供的產(chǎn)品之間有著(zhù)關(guān)鍵的不同之處,包括每個(gè)產(chǎn)品選擇在哪里實(shí)現自動(dòng)擴展、冗余以及和第三方工具,云平臺的交互能力。
自擴展是爭論的焦點(diǎn)
Google容器引擎(GKE)包括pod,復制控制器和節點(diǎn)。Pod是容器的邏輯組,建模應用程序特定的邏輯主機。復制控制器確保任意時(shí)間都有特定數量的pod在運行。節點(diǎn)是支撐容器化環(huán)境的Google計算引擎虛擬機。
GKE基于Google的Kubernetes容器編排平臺。11月24號Kubernetes發(fā)布了1.1版本,1.0版本發(fā)布于四個(gè)月前,是市場(chǎng)里第一個(gè)能夠使用水平pod自擴展特性來(lái)自動(dòng)擴展pod的產(chǎn)品,該特性非常受用戶(hù)歡迎,可以用來(lái)驗證GKE很多用例的特性。
“我們?yōu)樗蓄?lèi)型的項目大規模使用自擴展,”TimKelton說(shuō)。他是DescartesLabs的聯(lián)合創(chuàng )始人和云總架構師,這是一家總部位于LosAlamos,N.M.,機器學(xué)習領(lǐng)域的創(chuàng )業(yè)公司,處理PB級衛星數據。
當運行大批量工作時(shí),自擴展pod非常有用,Kelton解釋道。有時(shí),他的公司處理PB級數據,要求擴展到30,000個(gè)內核。在Kubernetes的第一個(gè)版本里——很快就合并到GKE里,“這并不是核心特性集的一部分,”他說(shuō)。
GKE不支持垂直容器擴展或者節點(diǎn)自擴展,但是這些特性很快就會(huì )發(fā)布,David Aronchick,GKE的資深產(chǎn)品經(jīng)理說(shuō),他領(lǐng)導Kubernetes的產(chǎn)品管理。
同時(shí),Amazon的EC2容器服務(wù)(ECS)包含服務(wù)、任務(wù)和實(shí)例。服務(wù)是一組組成應用的任務(wù),而實(shí)例是支持容器的彈性計算云VM--更像GKE的節點(diǎn)。
Amazon ECS的自擴展能力和GKE的工作原理相反:服務(wù)能夠使用AmazonCloudWatch和Amazon Web Services(AWS)Lambda自動(dòng)擴展,而實(shí)例也能夠基于CloudWatch矩陣自動(dòng)擴展,但是任務(wù)——邏輯上大致等同于pod,不能自動(dòng)擴展。
因為所有類(lèi)型的自動(dòng)擴展都很重要,Amazon的用戶(hù)也希望ECS能夠添加任務(wù)自擴展的功能。“啟動(dòng)一個(gè)額外的實(shí)例意味著(zhù)擁有了運行附加任務(wù)的額外能力,但是這并不意味著(zhù)任何新任務(wù)都能夠啟動(dòng)。”ChrisMoyer,ACIInformation Group的技術(shù)副總裁說(shuō)。這是一家總部在紐約的Web內容聚合商,也是TechTarget的贊助商。
“如果你僅僅自動(dòng)擴展實(shí)例,其實(shí)對于處理額外負載并不會(huì )帶來(lái)什么幫助——你必須確實(shí)啟動(dòng)額外任務(wù)才能真正實(shí)現擴展。”
zone間的冗余
在ECS的開(kāi)發(fā)中,Amazon優(yōu)先提供了在相同的集群內,原生啟動(dòng)可用zone(AZ)的能力,從而基于客戶(hù)需求達到任務(wù)自擴展上的冗余。當ECS服務(wù)調度器啟動(dòng)新任務(wù)時(shí),它也嘗試自動(dòng)在集群里跨AZ均衡任務(wù)。“It's really easy--two or three commands,”hesaid。“這樣做很重要,因為單一的AZ可能出故障,因此如果兩個(gè)任務(wù)都在同一個(gè)AZ里,你的服務(wù)很可能就會(huì )出故障,”Moyer說(shuō)。
Google能夠通過(guò)命令行接口(CLI)在GKE里啟動(dòng)多個(gè)zone,Google的Aronchick說(shuō)。“這其實(shí)很容易——兩個(gè)或者三個(gè)命令,”他說(shuō)。
但是,這也是GKE客戶(hù)最希望擁有的功能列表:改進(jìn)WebUI,包括跨zone擴展集群。“UI還需要大量的優(yōu)化工作,”Dale Hopkins,Vendasta Technologies的首席架構師說(shuō)。UI目前只允許創(chuàng )建集群和一點(diǎn)點(diǎn)別的操作,Hopkins說(shuō)。“并且擴展集群并不直觀(guān)。”
交互性
ECS構建為一個(gè)擴展平臺,設計出發(fā)點(diǎn)是入侵客戶(hù)已有的工作流,主要代替用戶(hù)處理集群狀態(tài)。和已有工作流集成的一部分工作包括適應客戶(hù)已經(jīng)使用的工具,比如Apache Mesos來(lái)做高級調度。Amazon聲稱(chēng)擁有廣大的容器合作伙伴正在向Amazon ECS貢獻特性,比如監控、持續集成和安全。
同時(shí),Google已經(jīng)構建了云容器合作伙伴聯(lián)合體,允許Kubernetes跨多個(gè)云供應商部署——現在還是一個(gè)CLI特性,Aronchick說(shuō)。去年夏天Kubernetes1.0發(fā)布時(shí),Google領(lǐng)導創(chuàng )建了Cloud原生計算基金會(huì )。基金會(huì )成員包括企業(yè)云服務(wù)公司,比如IBM和RedHat,還包括終端用戶(hù)Box,eBay和Twitter。
“使用Kubernetes,實(shí)際上能夠部署到Amazon上,也可以部署Azure上,部署到IBM上,還可以部署到自己物理硬件的本地平臺上,”Descartes的Kelton說(shuō)。“這非常有吸引力,因為讓用戶(hù)有多種選擇。”
Google還有一個(gè)開(kāi)源項目,有上百個(gè)代碼提交者,一個(gè)月有上千次提交,這使得Kubernetes能夠快速添加新特性,比如水平pod自擴展。
“Google催生了Kubernetes,Google也很好地擴展了該社區,”JayLyman,451Research的分析師說(shuō)。
富人越富有
當然,和已經(jīng)確定市場(chǎng)地位,大家都很熟悉的第二種Amazon服務(wù)的集成,使得Amazon ECS對于新客戶(hù)而言更具吸引力。
一家總部位于紐約,給大型企業(yè)IT項目做咨詢(xún)的公司計劃在兩個(gè)新項目里使用ECS,其創(chuàng )始人,JohnD'Esposito說(shuō)。“驅動(dòng)我們使用ECS的主要因素是和已有可靠的基礎架構服務(wù),比如‘Elastic Load Balancing(彈性負載均衡),Virtual Private Cloud(虛擬私有云),Identity and Access Management(認證和訪(fǎng)問(wèn)管理)和Elastic Block Store(彈性塊存儲)’的無(wú)縫集成。”
GKE和計算引擎的定價(jià)對于客戶(hù)而言也很有吸引力。除了底層VM資源10分鐘為單元的計費,GKE免費贈送Kubernetes master——這點(diǎn)對于Vendasta的Hopkins很吸引人。
“直到使用大量機器之前,我都不需要為Kubernetes支付太多——GKE為第一組機器免費提供Kubernetes master,”他說(shuō)。
在Kubernetes和容器引擎出現之前,Hopkins和Kelton都已經(jīng)使用過(guò)Google的云服務(wù),包括Google App Engine。因此,在選擇部署到哪種云容器服務(wù)商時(shí),數據重力也是一大要素。
“我們的大部分數據都是PB級別的,因此無(wú)法輕松移動(dòng)或者拷貝,實(shí)際上不得不讓計算能力去靠近數據,”Kelton說(shuō)。目前大部分數據都在Google云平臺上,雖然Descartes也和AWS的合作伙伴合作。
雖然目前Google和AWS是云容器戰場(chǎng)的急先鋒,Amazon最大的競爭者仍然是Microsoft Azure,它已經(jīng)發(fā)布了自己的基于Linux的云容器服務(wù)的受限預覽版,今年還計劃發(fā)布Windows服務(wù)器的新版本來(lái)支持基于Windows的容器。
“大部分我們的客戶(hù)……也同時(shí)在使用Azure或者Amazon,”ChrisRiley說(shuō),他是HKM Consulting公司的合伙人。
“Microsoft已經(jīng)正在開(kāi)發(fā)一些很有意思的工具。如果我們考察第二種方案,很可能是Azure,而不是Google。”
因為很多Microsoft產(chǎn)品,簡(jiǎn)單化和易用性是設計優(yōu)先考慮的事情,Kristian Nese說(shuō),他是Lumagate的CTO,這是一家位于挪威的Microsoft Azure系統集成商。
“現在,當我們部署Azure容器服務(wù)時(shí),可能需要100行代碼,”Nese說(shuō)。“一旦你部署了Azure容器服務(wù),實(shí)際上部署了23種資源……如果你想手動(dòng)完成這些,很可能需要上千行代碼。”
Azure容器服務(wù)也在開(kāi)發(fā)自擴展功能,由一系列獨立的服務(wù)組成,正在技術(shù)預覽中,稱(chēng)為VM Scale Sets。Azure也會(huì )提供成熟并且熟悉的工具來(lái)管理容器,比如Azure Resource Manager,Nese補充道。