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

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

CNCF的證言顯示,有51%的k8s工作負載運行在AWS上。關于這個說法筆者目前沒有找到更為具體的說法,但至少也說明了AWS托管的k8s(EKS)是一個非常受歡迎的服務。具體其中有多少人是因為怕k8s的麻煩而使用EKS的呢?不得而知。

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

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

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

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

創(chuàng)建ECS的Cluster時預設有三種創(chuàng)建方案,F(xiàn)argate無需設置EC2

在AWS平臺上用容器服務,大的選項有兩個:一個是選ECS還是EKS,一個是選EC2的方式還是Fargate。

目前來看,筆者認為AWS其實更推薦用戶用ECS,看得出來ECS在AWS的生態(tài)上更為成熟一些,因為,截止現(xiàn)在,F(xiàn)argate只適用于ECS,據(jù)說很快也將支持EKS。而且,目前中國區(qū)用戶可以使用的容器服務有ECR,ECS還有Fargate,Aaron Kao還表示,下一步,很快EKS會在AWS中國區(qū)可用,包括AWS中國(北京)區(qū)域和AWS中國(寧夏)區(qū)域。

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

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

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

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

Aaron Kao介紹說,麥當勞使用AWS的ECS搭建微服務來支撐送貨上門的服務,短短四個月時間就將系統(tǒng)構建完成了。如今麥當勞的云原生微服務架構可以以100毫秒的延遲每秒支撐起兩萬個訂單。

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

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

Aaron Kao還表示,用戶一般會用EKS來進行企業(yè)應用的遷移上云,還有的客戶使用EKS進行機器學習。

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

當然,將Tensorflow分布式部署到k8s是因為Tensorflow 2.0有一些新的特性,但放眼未來,類似的應用肯定會越來越多,相信ECS或者k8s的使用場景也會越來越多,如果能降低使用門檻并提升使用體驗的話,容器將給我們帶來更大價值。

分享到

zhupb

相關推薦