2020年,容器雲原生技術火的不能再火了。
上半年,DOIT發布了《行業雲原生應用白皮書》,下半年,阿里雲發布《雲原生架構白皮書》,騰訊雲發布《騰訊雲原生路線圖手冊》,華為雲也提出了雲原生2.0的概念,總之,2020年的輿論場上,容器雲原生很火,2021年也會繼續。
在2020年12月召開的AWS re:invent上,AWS並沒有發白皮書,也沒有造新概念,而是老老實實發布了三款產品服務:
分別是面向公眾的免費容器鏡像庫服務ECR Public,自動化的容器和Serverless部署工具AWS Proton,以及可以讓EKS本地化部署的Kubernetes發行版——EKS Distro。
三個發布都非常具有代表性,最具有突破性的是AWS Proton,它是對開發和運維人員職責的一次調整,能讓開發人員更專注於開發本身,是改變行業規則(Game Changer)的發布。
此外,AWS還發布了Docker Hub的免費替代品——ECR Public,開源了EKS源碼的EKS Distro(EKS-D),它將EKS延展到更多環境中,可視為AWS混合雲戰略的一次重要操作。
接下來,對於容器方面的三大發布做逐一的介紹。
ECR Public——Docker Hub的免費替代品2020年11月,Docker Hub對於免費用戶的容器拉取用量做了一些限制,匿名和免費註冊用戶每六個小時最多能發出100和200個容器鏡像拉取請求,想要繼續享受無限制的使用,則需要付費訂閱,費用為每人 5 美元/月,相當於一個入門級VPS的費用。
另外,對於存放在Docker Hub但6個月未活動的鏡像,則會被刪除,免費用戶需要注意保持鏡像的活躍度,付費用戶則可以就當什麼都沒發生過。
Docker Hub這一決定在於想壓縮成本,本身並沒什麼可說的,但開源社區的廣大用戶需要有一個能自由使用的鏡像庫,這時候雲廠商站出來提供這種免費服務,其實是一件好事,AWS最近發布的ECR Public正是在這一背景下才誕生的。
ECR(Amazon Elastic Container Registry)是AWS原本就有的私有的容器鏡像庫,新的ECR Public是公開對外的鏡像庫服務,私有的容器鏡像庫嚴格按存儲容量付費,而新的公開的ECR則有較大額度的免費空間,基本可以認為是免費服務。
從策略上來看,是在鼓勵將更多鏡像公開供更多人用。
所有ECR Public用戶都有50GB的免費存儲空間,如果超過這個限制,需要象徵性的支付點費用,所有匿名拉取鏡像的人每月有500GB的免費數據帶寬,註冊用戶能獲得5 TB的免費數據帶寬,如果是拉取到AWS的主機裡,則沒有拉取限制。
ECR Public的網站(gallery.ecr.aws/)上目前已經託管了一些容器,包括一部分AWS自己的鏡像,還有MySQL、Wordpress等百上千個AWS合作夥伴的鏡像,比如來自Bitnami, Canonical 和 HashiCorp的鏡像。
操作使用體驗方面,基本跟使用DockerHub沒區別,不過,ECR Public使用的時候需要安裝AWS Cli,如果不是AWS用戶則會覺得不太方便。好處是,由於ECR Public與AWS是集成的,比如,當AWS CodeBuild檢測到修改一個ECR Public裡的鏡像後,會自動創建一個新的容器應用,AWS用戶會覺得更方便。
ECR Public發布首先肯定會方便廣大用戶,尤其是AWS的用戶,這算是AWS作為大型公有雲服務商的一點應有的擔當吧。當然,由於與AWS有一定的綁定關係,所以,這其實也是AWS在拓展自己的雲原生應用生態。
AWS Proton——自動化的容器和Serverless部署工具亞馬遜AWS首席雲計算企業戰略顧問張俠在向中國區媒體介紹AWS Proton,將其稱之為一個Game Changer(改變規則)的發布。
AWS Proton是一個幫助運維人員自動配置管理基礎設施的服務,也是一個面向開發人員的Serverless應用和容器應用代碼的部署服務。它能讓運維人員做好運維的工作,讓開發人員可以只關注應用本身,能讓兩方面工作相互不影響。
AWS Proton集成和協調各種各樣的工具,包括基礎設施配置、代碼部署、監控和更新等各種工具,功能非常全面,負責編排和組織這些資源的是所謂的Template(模塊),它是AWS Proton的一個非常重要的元素,包括Environment Template和Service Template兩種。
運維團隊負責創建Environment Template,用它來設置各種環境配置資源,從而部署一致的運行環境。
同時,運維團隊會創建Service Template,設置與Environment Template兼容的基礎資源,CI/CD工作流和監控方面的內容。它集成了常用的CI/CD工作流和觀察工具,除了有AWS自己的相關方案,比如CodePipeline和CloudWatch,也會有第三方的工具。
開發團隊使用Service Template來部署應用,如果開發者有了寫好的代碼,將代碼與Service Template關聯起來,後續工作就由AWS Proton自己完成,它會自動調用Service Template裡相關的AWS服務和參數,自動把代碼交給CI/CD工作流來編譯、測試和部署。
部署完成後,AWS Proton會持續監控應用的運行狀態,如果後續Service Template有改動,AWS Proton會讓原來使用這個Template的應用按照新的Service Template升級到新版本,整個過程都處於監控狀態,如果新應用有問題,可以進行回滾。
AWS Proton也是一個重磅級的發布,它能改變容器和Serverless應用的部署和迭代方式,在一致的基礎設施平臺上支撐成千上萬個微服務和Serverless應用平穩運轉,它能改變開發和運維的工作狀態,讓開發者和運維人員各司其職,相互不影響。
目前處於預覽狀態,不是特別的成熟,但大致框架是完善的。
EKS Distro——AWS的Kubernetes發行版EKS Distro(EKS-D)是AWS的Kubernetes發行版,所謂Kubernetes發行版,主要是為了解決Kubernetes太難用的問題,發行版在Kubernetes基礎上做了許多延展,讓更多人能方便地用起來。目前,常見的Kubernetes發行版有Rancher,OpenShift以及KubeSphere(註:KubeSphere與EKS配合使用,已上線AWS Quick Starts)。
與這幾個不同的是,AWS的K8s發行版是從公有雲商用服務EKS中發展而來的。EKS是AWS託管的Kubernetes服務,它省去了用戶打理Kubernetes的麻煩。但是,考慮到並不是所有人都會用雲上的EKS,於是,AWS發布了EKS同款的開源軟體——EKS Distro。
作為Kubernetes發行版,我認為EKS Distro的優勢可以總結為以下四點:
首先,節省成本。對用戶來說,既然是開源的,那意味著收費上是免費的。
其次,高自由度,用戶可以在任意喜歡的環境中部署,包括本地硬體以及包括AWS在內的各種雲平臺上,這種自由度不僅能保護原有投資,也能更好滿足多樣化需求。
第三點,可以避免合規性問題。由於合規和數據安全方面的顧慮,有些數據不能遷移上雲,本地部署的K8s集群就顯得非常有必要。
第四點,降低管理複雜度。由於K8s大概每三到四個月就更新一次,在本地使用K8s需要花大量時間跟進K8s的更新,如果跟不上這個節奏,那將面臨許多風險,比如兼容性問題和安全風險。運行著一個不被支持的K8s就好比2021年還在用Windows 7一樣,心裡能踏實嗎?
AWS在提供EKS服務過程中自然就成了K8s的專家,知道如何提供安全、穩定、可靠的K8s服務,而這些經驗都將輸出到EKS的發行版中。
EKS Distro提供Amazon EKS用的安裝代碼,含有上遊開源的Kubernetes組件和第三方工具,包括資料庫、網絡、存儲等創建集群必要的組件,還有各種依賴包和更新補丁。EKS Distro目前已經可用,可以從Github上下載(github.com/aws/eks-dist)和測試。
更新節奏上,每當Amazon EKS更新後,EKS Distro都會很快跟進,EKS Distro所有代碼都是開源的,所有工具都是開源的,同時,也提供了統一的參考配置,以便可重複構建一致的K8s環境,也便於EKS Distro與Amazon EKS保持一致,用統一的API來對接管理。
不難發現,發布EKS Distro最大的意義是延展Amazon EKS的生態,讓用戶在本地更多環境中建立與Amazon EKS對接的環境,讓應用在雲上、本地以及更多環境中運行,並能自由流動,實現混合雲戰略,
2021年,AWS還計劃發布EKS Anywhere,將提供可安裝的軟體包來讓用戶在本地創建和運行K8s集群,會提供自動化的K8s集群生命周期管理工具,讓用戶可以在生產環境中進行備份、恢復、補丁、升級等操作,並儘可能保持業務的連續性。
ECS是AWS自己開發的容器服務,與EKS的定位相似。2021年,AWS還計劃發布ECS Anywhere,將ECS部署在本地。
張俠介紹說,有了ECS Anywhere,客戶就完全可以在on-premises環境中部署ECS的集群,通過ECS Anywhere把雲上和雲下的ECS都通過一套API來統一管理。
從EKS Distro,到EKS Anywhere,再到ECS Anywhere,瞄準的都是用戶本地環境,都是混合雲戰略的一部分。
結語三個關於容器雲原生的發布中,ECR Public有助於構建容器生態,EKS Distro(EKS-D)是AWS在混合雲戰略上的一個重要操作。
AWS Proton將改變開發和運維人員權責界線,讓開發人員更專注於開發本身,說是改變行業規則(Game Changer)的發布也不過分,權責的重新劃分關係不僅是誰承擔的工作量變多的問題,而且還有出了事兒誰負責的問題。但好在這一趨勢越來越明顯,這一轉變的推進也是勢在必行的。
本文主要參考內容來自AWS官方博客的總結,點擊閱讀原文進入AWS博客查看更多: