AWS在2015年正式發(fā)布了Amazon ECS,那時(shí)k8s還沒(méi)有現(xiàn)在這么火,ECS是AWS在容器上的第一個(gè)大的產(chǎn)品,也是最引人矚目的那個(gè)。2018年,AWS又正式推出了Amazon Elastic Kubernetes Service (也就是常說(shuō)的EKS,以下簡(jiǎn)稱(chēng)EKS),其實(shí)就是托管的k8s。它首先簡(jiǎn)化了k8s部署管理上的諸多麻煩,可以對(duì)接用戶(hù)本地的k8s集群,而且能與AWS許多原生的服務(wù)比如Amazon CloudWatch,Amazon CloudTrail,Amazon VPC,負(fù)載均衡等服務(wù)無(wú)縫結(jié)合著使用。

需要明確的是,EKS是AWS托管的k8s,跟開(kāi)源版本的k8s沒(méi)什么本質(zhì)上的區(qū)別,并不是k8s的一個(gè)分支,EKS可以提供跟k8s完全一致的API,能對(duì)接k8s現(xiàn)有的強(qiáng)大生態(tài),如果k8s有什么好玩的工具或者項(xiàng)目,EKS用戶(hù)也同樣能享受到。

CNCF的證言顯示,有51%的k8s工作負(fù)載運(yùn)行在AWS上。關(guān)于這個(gè)說(shuō)法筆者目前沒(méi)有找到更為具體的說(shuō)法,但至少也說(shuō)明了AWS托管的k8s(EKS)是一個(gè)非常受歡迎的服務(wù)。具體其中有多少人是因?yàn)榕耴8s的麻煩而使用EKS的呢?不得而知。

AWS的容器產(chǎn)品布局走到這一步,對(duì)于大部分用戶(hù)來(lái)說(shuō)可能已經(jīng)夠用了,但考慮到使用體驗(yàn),后來(lái)推出的AWS Fargate將使用體驗(yàn)更進(jìn)一步。

無(wú)論是ECS還是EKS,底層計(jì)算單元還是用的EC2主機(jī),用戶(hù)仍需要對(duì)容器集群的可用性、容量等進(jìn)行管理,需要管理操作系統(tǒng),需要升級(jí)維護(hù)操作系統(tǒng),熟悉AWS的朋友都知道AWS在倡導(dǎo)的Serverless概念,讓用戶(hù)無(wú)需關(guān)注基礎(chǔ)設(shè)施,只關(guān)注代碼本身,F(xiàn)argate的出發(fā)點(diǎn)一樣,也是讓用戶(hù)不關(guān)注基礎(chǔ)設(shè)施,只需關(guān)注用容器這件事本身即可。這對(duì)體驗(yàn)有多大幫助呢?

Fargate并不是獨(dú)立于ECS和EKS之外的一個(gè)單獨(dú)的服務(wù),它只是一種部署和運(yùn)行容器的方式(Launch Type),用戶(hù)在ECS里可以選擇用Fargate的方式部署容器,可以按照提示構(gòu)建集群,無(wú)需配置EC2這樣的基礎(chǔ)設(shè)施。同樣的,在ECS里也可以選擇EC2的方式部署容器,這樣就需要配置EC2的信息了,如果用戶(hù)愿意對(duì)底層基礎(chǔ)設(shè)施管理得更細(xì)致的話(huà),EC2的方式適合你。

有過(guò)基礎(chǔ)設(shè)施運(yùn)維經(jīng)驗(yàn)的人都知道管理基礎(chǔ)設(shè)施是一件非常非常麻煩的事兒,AWS現(xiàn)代化應(yīng)用產(chǎn)品市場(chǎng)負(fù)責(zé)人Aaron Kao舉例說(shuō),當(dāng)計(jì)算資源不夠的時(shí)候,就需要擴(kuò)充資源;當(dāng)資源有空閑的時(shí)候,還需要用戶(hù)自己去掉這些資源。有了Fargate就不用理會(huì)這些瑣碎的事情了。筆者也了解到,F(xiàn)argate是按照運(yùn)行時(shí)間的用量來(lái)計(jì)費(fèi)的,所以,在實(shí)際運(yùn)行中,F(xiàn)argate的按量付費(fèi)其實(shí)有成本優(yōu)勢(shì)。

創(chuàng)建ECS的Cluster時(shí)預(yù)設(shè)有三種創(chuàng)建方案,F(xiàn)argate無(wú)需設(shè)置EC2

在AWS平臺(tái)上用容器服務(wù),大的選項(xiàng)有兩個(gè):一個(gè)是選ECS還是EKS,一個(gè)是選EC2的方式還是Fargate。

目前來(lái)看,筆者認(rèn)為AWS其實(shí)更推薦用戶(hù)用ECS,看得出來(lái)ECS在AWS的生態(tài)上更為成熟一些,因?yàn)椋刂宫F(xiàn)在,F(xiàn)argate只適用于ECS,據(jù)說(shuō)很快也將支持EKS。而且,目前中國(guó)區(qū)用戶(hù)可以使用的容器服務(wù)有ECR,ECS還有Fargate,Aaron Kao還表示,下一步,很快EKS會(huì)在AWS中國(guó)區(qū)可用,包括AWS中國(guó)(北京)區(qū)域和AWS中國(guó)(寧夏)區(qū)域。

結(jié)合用戶(hù)實(shí)際情況,如果用戶(hù)原來(lái)就在用k8s的話(huà),上云最好是選EKS,如果沒(méi)有本地的容器資源的話(huà),AWS推薦用戶(hù)上ECS。如果用戶(hù)想掌控更多細(xì)節(jié),那就推薦選EC2的方式部署,反之則選擇Fargate。不過(guò),這里的選擇并不像雙十一店家那樣的殘酷“二選一”,即使選了ECS和EKS,也可以通過(guò)APP Mesh來(lái)統(tǒng)一監(jiān)控和管理容器服務(wù)。對(duì)服務(wù)體驗(yàn)還是比較友好的。

AWS的容器服務(wù)除了ECS和EKS之外,還有就是Amazon EC2 Container Registry(ECR)。ECR是AWS的鏡像庫(kù),用戶(hù)可以上傳保存自己的容器鏡像,從這里拉取鏡像用到EKS和ECS上,用戶(hù)可以基于AWS的各種服務(wù)構(gòu)建CI/CD的Pipeline。

那么大家都是怎么用容器的呢?

在普遍的印象中,容器這種新技術(shù)更多只是在互聯(lián)網(wǎng)公司流行,但從Aaron Kao的介紹中了解到,其實(shí)用容器的已經(jīng)不僅僅是互聯(lián)網(wǎng)公司,還能看到許多傳統(tǒng)企業(yè)。

Aaron Kao介紹說(shuō),麥當(dāng)勞使用AWS的ECS搭建微服務(wù)來(lái)支撐送貨上門(mén)的服務(wù),短短四個(gè)月時(shí)間就將系統(tǒng)構(gòu)建完成了。如今麥當(dāng)勞的云原生微服務(wù)架構(gòu)可以以100毫秒的延遲每秒支撐起兩萬(wàn)個(gè)訂單。

Fidelity(富達(dá))使用EKS運(yùn)行一些企業(yè)級(jí)的大型工作負(fù)載,可以管理數(shù)以千計(jì)的應(yīng)用以及數(shù)以百計(jì)的DevOps團(tuán)隊(duì),這樣它就可以把重點(diǎn)專(zhuān)注在創(chuàng)新上。

Turner是一家美國(guó)的媒體巨頭,擁有包括CNN、TNT、TBS等品牌,Turner使用Fargate打造了一個(gè)網(wǎng)站共享服務(wù)平臺(tái),降低了成本,而且縮短了開(kāi)發(fā)時(shí)間。

Aaron Kao還表示,用戶(hù)一般會(huì)用EKS來(lái)進(jìn)行企業(yè)應(yīng)用的遷移上云,還有的客戶(hù)使用EKS進(jìn)行機(jī)器學(xué)習(xí)。

容器化應(yīng)用后進(jìn)行遷移是許多企業(yè)上云的重要一步,將EKS與機(jī)器學(xué)習(xí)結(jié)合的需求也非常普遍,機(jī)器學(xué)習(xí)的工作負(fù)載有時(shí)候會(huì)非常大,非常費(fèi)時(shí),EKS能將機(jī)器學(xué)習(xí)的負(fù)載分散到多個(gè)設(shè)備上,從而加速訓(xùn)練周期。業(yè)內(nèi)有許多將k8s與Tensorflow結(jié)合的做法,有的還發(fā)布了開(kāi)源項(xiàng)目,AWS發(fā)布博客介紹了在EKS上使用 Kubeflow 進(jìn)行分布式 TensorFlow 訓(xùn)練。

當(dāng)然,將Tensorflow分布式部署到k8s是因?yàn)門(mén)ensorflow 2.0有一些新的特性,但放眼未來(lái),類(lèi)似的應(yīng)用肯定會(huì)越來(lái)越多,相信ECS或者k8s的使用場(chǎng)景也會(huì)越來(lái)越多,如果能降低使用門(mén)檻并提升使用體驗(yàn)的話(huà),容器將給我們帶來(lái)更大價(jià)值。

分享到

zhupb

相關(guān)推薦