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