云中的容器:你有哪些選擇?
譯文【51CTO.com快譯】云計(jì)算為微服務(wù)架構(gòu)的部署帶來了新的可能性,而托管和非托管的容器服務(wù)以及無服務(wù)器托管選項(xiàng)徹底改變了云中容器工作負(fù)載的部署。
雖然云中容器生態(tài)系統(tǒng)的非托管選項(xiàng)或企業(yè)采用自己構(gòu)建的方法可以讓其更好地控制堆棧,但需要擁有解決方案的端到端生命周期、安全性和運(yùn)營。另一方面,托管容器服務(wù)由于與企業(yè)當(dāng)前的云生態(tài)系統(tǒng)、最佳實(shí)踐、安全性和模塊化的內(nèi)置集成,可以使其使用更加簡(jiǎn)單并且更受歡迎。
全球領(lǐng)先的三家云計(jì)算提供商(AWS、Azure和GCP)都擁有強(qiáng)大的產(chǎn)品和服務(wù)組合,以支持用于云原生和混合部署的容器化工作負(fù)載。Kubernetes仍然是云中最受歡迎的容器編排解決方案。這種企業(yè)級(jí)解決方案也是生產(chǎn)部署的首選平臺(tái)。每個(gè)主要的云計(jì)算服務(wù)提供商都提供了本地托管的Kubernetes服務(wù)以及獨(dú)立的容器解決方案。這些解決方案都可以輕松地與企業(yè)采用的云平臺(tái)提供的強(qiáng)大支持服務(wù)生態(tài)系統(tǒng)相集成,其中包括容器注冊(cè)、身份和訪問管理以及安全監(jiān)控。
本文將探討在云中部署容器的一些更流行的選項(xiàng)和用例。
云中容器工作負(fù)載的流行選項(xiàng)
全球主要的云計(jì)算服務(wù)提供商都為容器工作負(fù)載托管提供了許多可用選項(xiàng),以下進(jìn)行下探討。
1.AWS
AWS云平臺(tái)為容器工作負(fù)載提供了多種服務(wù),最受歡迎的是EKS、ECS和Fargate。它還提供擴(kuò)展的服務(wù)和工具生態(tài)系統(tǒng),例如用于機(jī)器學(xué)習(xí)的AWS深度學(xué)習(xí)容器、Amazon Elastic Container Registry和用于混合部署的EKS Anywhere(將在今年推出)。
(1)Amazon Elastic Kubernetes Service
Amazon Elastic Kubernetes Service(EKS)可用于在AWS云平臺(tái)中創(chuàng)建托管的Kubernetes集群,其中部署、擴(kuò)展和修補(bǔ)都由平臺(tái)本身管理。該服務(wù)已通過Kubernetes認(rèn)證,并使用Amazon EKS Distro(Kubernetes的開源版本)。
由于控制平臺(tái)由AWS管理,該解決方案可在零停機(jī)時(shí)間的情況下自動(dòng)獲取最新的安全更新,并確保容器的安全托管環(huán)境。該服務(wù)還確保了高可用性,實(shí)現(xiàn)了99.95%正常運(yùn)行時(shí)間的服務(wù)等級(jí)協(xié)議(SLA)——通過跨多個(gè)AWS可用區(qū)部署Kubernetes的控制平臺(tái)來實(shí)現(xiàn)。
AWS對(duì)EKS群集的統(tǒng)一費(fèi)率為每小時(shí)0.1美元,并且對(duì)工作節(jié)點(diǎn)使用的EC2實(shí)例或EBS卷收取額外費(fèi)用。通過選擇用于開發(fā)和測(cè)試環(huán)境的EC2 Spot實(shí)例,以及用于生產(chǎn)部署的保留實(shí)例,可以降低成本。
如果企業(yè)計(jì)劃在AWS云平臺(tái)上進(jìn)行基于微服務(wù)的應(yīng)用程序的生產(chǎn)部署、擴(kuò)展Web應(yīng)用程序、與機(jī)器學(xué)習(xí)模型集成、批處理作業(yè)等,那么采用EKS是最有利的。
(2)AWS Fargate
AWS Fargate是一種適用于容器的無服務(wù)器計(jì)算服務(wù),可與Amazon EKS和Amazon ECS集成。它減少了運(yùn)營開銷,因?yàn)槠髽I(yè)不必為托管容器部署和配置底層基礎(chǔ)設(shè)施,而且只需為用于運(yùn)行工作負(fù)載的計(jì)算容量付費(fèi)。
容器在具有專用內(nèi)核運(yùn)行時(shí)的隔離環(huán)境中運(yùn)行,從而確保提高工作負(fù)載的安全性。企業(yè)還可以利用Spot實(shí)例(用于開發(fā)/測(cè)試環(huán)境)并計(jì)算承諾使用量的節(jié)省計(jì)劃,以降低總體成本。如果企業(yè)希望以最小的開發(fā)和管理開銷從單體架構(gòu)切換到基于微服務(wù)的架構(gòu),AWS Fargate可以提供巨大的優(yōu)勢(shì)。
(3)Amazon Elastic Container Service
Amazon Elastic ContainerService(ECS)可用于在自我管理的EC2實(shí)例集群或Fargate管理的無服務(wù)器基礎(chǔ)設(shè)施中托管容器服務(wù)。前一種方法可以更好地控制托管容器工作負(fù)載的端到端堆棧。
此外,它還提供了服務(wù)的集中可見性以及通過API調(diào)用管理它們的能力。如果將EC2用于底層集群,則同樣的管理功能也可用于ECS。但是,集群管理、擴(kuò)展和操作層都由平臺(tái)處理,從而消除了這種開銷。
ECS是一項(xiàng)區(qū)域服務(wù),可在AWS區(qū)域內(nèi)的各個(gè)可用區(qū)中高度可用,確保托管的容器工作負(fù)載的可用性。
2.Microsoft Azure
Microsoft Azure提供托管Kubernetes服務(wù)以及用于部署獨(dú)立容器實(shí)例的選項(xiàng)。Azure容器注冊(cè)表、與安全中心的集成和容器映像掃描只是支持容器工作負(fù)載生態(tài)系統(tǒng)的其他一些Azure增值服務(wù)。
(1)Azure Kubernetes Service
托管Kubernetes服務(wù)Azure Kubernetes Service (AKS)是當(dāng)今公共云中最受歡迎的容器托管服務(wù)之一。它由托管主節(jié)點(diǎn)的控制平臺(tái)組成,由公開Kubernetes API的Azure平臺(tái)管理;然后是客戶管理的代理節(jié)點(diǎn),其中部署了容器工作負(fù)載。
該平臺(tái)處理所有集群管理活動(dòng),例如健康監(jiān)控和維護(hù)。它還提供與Azure RBAC和Azure AD的輕松集成以進(jìn)行群集管理、與Azure Monitor的內(nèi)置集成,以及使用Docker Registry或Azure Container Registry檢索容器映像的靈活性。
AKS可以在不收取集群管理費(fèi)用的情況下使用,同時(shí)保持99.5%的服務(wù)等級(jí)協(xié)議(SLA)。企業(yè)只需按每秒計(jì)費(fèi)模型為用于AKS群集的虛擬機(jī)(VM)實(shí)例、存儲(chǔ)和網(wǎng)絡(luò)資源付費(fèi)。還可以選擇以每集群每小時(shí)0.1美元的價(jià)格采用正常運(yùn)行時(shí)間服務(wù)等級(jí)協(xié)議(SLA)??梢栽谌杭渴鹌陂g使用Azure可用性區(qū)域配置高可用性。如果購買了可選的正常運(yùn)行時(shí)間服務(wù)等級(jí)協(xié)議(SLA),此類群集的服務(wù)等級(jí)協(xié)議(SLA)為99.95%,而不使用可用性區(qū)域的群集的服務(wù)等級(jí)協(xié)議(SLA)為99.9%。在這兩種情況下,客戶都需要為托管工作負(fù)載的代理節(jié)點(diǎn)付費(fèi)。
(2)Azure容器實(shí)例
Azure容器實(shí)例提供了一種易于使用的解決方案,用于在Azure中部署容器,而無需部署編排平臺(tái)。由于容器實(shí)例不需要配置任何虛擬機(jī),因此實(shí)例可在幾秒鐘內(nèi)啟動(dòng)。該服務(wù)還使企業(yè)可以靈活地配置工作負(fù)載所需的CPU內(nèi)核和內(nèi)存,并且只需為此付費(fèi)。該服務(wù)可以與Azure Files集成以進(jìn)行持久存儲(chǔ)、連接到Azure虛擬網(wǎng)絡(luò),還可以與Azure Monitor集成以進(jìn)行資源使用監(jiān)控。
Azure容器實(shí)例更適合為不需要高級(jí)功能(如按需縮放或多容器服務(wù)發(fā)現(xiàn))的簡(jiǎn)單應(yīng)用程序部署隔離的容器實(shí)例。
(3)用于容器的Azure Web App
Azure Web App允許企業(yè)使用來自Docker Hub或Azure容器注冊(cè)表的容器映像在服務(wù)上部署容器。后端操作系統(tǒng)補(bǔ)丁、容量管理和服務(wù)的負(fù)載平衡由平臺(tái)處理,該服務(wù)通過基于配置的擴(kuò)展規(guī)則的擴(kuò)展或向外擴(kuò)展選項(xiàng)實(shí)現(xiàn)按需擴(kuò)展。這也有助于成本管理,即在非高峰時(shí)間自動(dòng)降低成本。該服務(wù)還確保了高可用性,因?yàn)槿萜鞣?wù)可以跨多個(gè)Azure區(qū)域部署。
3.谷歌云平臺(tái)(GCP)
Kubernetes起源于谷歌公司的內(nèi)部項(xiàng)目,為在云中和內(nèi)部部署設(shè)施托管的托管容器提供了一套強(qiáng)大的產(chǎn)品。
(1)Google Kubernetes Engine
Google Kubernetes Engine(GKE)是來自谷歌云平臺(tái)的托管Kubernetes服務(wù),可用于托管高度可用且可擴(kuò)展的容器工作負(fù)載。如果企業(yè)需要在隔離環(huán)境中運(yùn)行容易受到安全威脅的工作負(fù)載,它還提供了GKE沙箱選項(xiàng)。
與其他云計(jì)算服務(wù)提供商提供的托管Kubernetes服務(wù)一樣,GKE提供故障節(jié)點(diǎn)的自動(dòng)修復(fù)、升級(jí)和按需擴(kuò)展。它還可以與GCP監(jiān)控服務(wù)集成,以深入了解已經(jīng)部署應(yīng)用程序的運(yùn)行狀況。
如果企業(yè)計(jì)劃托管圖形密集型、高性能計(jì)算(HPC)和機(jī)器學(xué)習(xí)工作負(fù)載,則可以在部署期間通過GPU和TPU等專用硬件加速器來增強(qiáng)GKE。最后,GKE為每秒計(jì)費(fèi)和可容忍停機(jī)的開發(fā)環(huán)境提供了一個(gè)選項(xiàng),可以為企業(yè)的集群使用搶占式虛擬機(jī)以進(jìn)一步降低成本。
(2)Cloud Run
如果企業(yè)希望在GCP中運(yùn)行容器化應(yīng)用程序,而無需管理底層基礎(chǔ)設(shè)施的開銷,Cloud Run是一種很好的選擇。使用這種完全托管的容器無服務(wù)器托管服務(wù),只需為容器消耗的資源付費(fèi)。
Cloud Run也可以部署到Anthos GKE集群或內(nèi)部部署工作負(fù)載中。Cloud Run與其他GCP服務(wù)(例如Cloud Code、Cloud Logging、Monitoring、Artifact Registry和Cloud Build)完美集成,可以滿足企業(yè)所有容器化應(yīng)用程序開發(fā)需求。
4.混合部署
對(duì)于許多企業(yè)來說,其云采用之旅的第一步是實(shí)施混合部署,其中容器化應(yīng)用程序的某些組件保留在內(nèi)部部署設(shè)施,而其他組件則移至云端。有多種流行的工具和服務(wù)可用于幫助滿足混合云和多云部署的需求,所有的主要云計(jì)算提供商都在這一領(lǐng)域進(jìn)行了重點(diǎn)投資。
(1)Azure Arc
Azure Arc為在內(nèi)部部署以及跨多云環(huán)境中部署的服務(wù)器、數(shù)據(jù)服務(wù)和Kubernetes集群提供基于Azure的統(tǒng)一管理平臺(tái)。
啟用Azure Arc的Kubernetes群集支持多個(gè)流行的Kubernetes發(fā)行版,這些發(fā)行版已通過云原生計(jì)算基金會(huì)(CNCF)的認(rèn)證。該服務(wù)允許組織在Azure中跨異構(gòu)環(huán)境列出Kubernetes集群以獲得統(tǒng)一視圖,并支持與Azure管理功能(例如Azure Policy和Azure Monitor)的集成。
(2)Google Anthos
谷歌云平臺(tái)(GCP)的Anthos是一種全面而先進(jìn)的解決方案,可用于在云端和內(nèi)部部署托管的Kubernetes集群。Anthos提供了一個(gè)GKE本地選項(xiàng),企業(yè)可以使用它來將新的GKE集群部署到本地私有云中,也可以向Anthos注冊(cè)現(xiàn)有的非GKE集群。GKE on AWS在多云場(chǎng)景中提供幫助,可以使用Anthos UI中的管理服務(wù)在AWS中創(chuàng)建、更新或刪除兼容的GKE環(huán)境。與此同時(shí),Anthos Config Management和Service Mesh解決方案有助于策略自動(dòng)化、安全管理和對(duì)跨多個(gè)集群部署的應(yīng)用程序的可見性,以獲得統(tǒng)一的管理體驗(yàn)。
(3)AWS Outposts
AWS Outposts是一種混合云服務(wù),可將AWS服務(wù)(包括EKS等容器服務(wù))引入企業(yè)的內(nèi)部部署的數(shù)據(jù)中心。這一服務(wù)由AWS安裝、更新和完全管理。該解決方案可以連接到本地AWS區(qū)域以獲得混合體驗(yàn),其中AWS Outposts中的服務(wù)可以直接連接到云中的服務(wù)。
AWS Outposts的目標(biāo)客戶是那些喜歡在內(nèi)部部署設(shè)施部署容器化工作負(fù)載以進(jìn)行數(shù)據(jù)駐留、本地處理等,同時(shí)可以靈活地將AWS云平臺(tái)的支持服務(wù)用于其應(yīng)用程序的客戶。
最近發(fā)布的EKS Anywhere是另一種選擇,旨在為混合部署提供與Amazon EKS相同的體驗(yàn)。EKS Anywhere預(yù)計(jì)將于2021年推出。
選擇合適的容器服務(wù)
由于云中有各種各樣的服務(wù)可用于托管容器化工作負(fù)載,為企業(yè)的需求選擇合適的服務(wù)的第一步是將其特定應(yīng)用程序需求映射到給定服務(wù)的功能。建議使用主要云計(jì)算服務(wù)提供商提供的托管容器服務(wù),因?yàn)樗鼈兛梢愿玫嘏c企業(yè)采用的云平臺(tái)服務(wù)集成。
企業(yè)在為其應(yīng)用程序選擇最佳容器服務(wù)時(shí),可以選擇生產(chǎn)就緒服務(wù),同時(shí)避免潛在的供應(yīng)商鎖定。企業(yè)還應(yīng)該考慮解決方案的未來路線圖,以及易于監(jiān)控、日志記錄、可用性、可擴(kuò)展性、安全管理和自動(dòng)化。
從托管Kubernetes服務(wù)開始是一個(gè)很好的選擇,因?yàn)镵ubernetes最適合可擴(kuò)展、安全且高度可用的生產(chǎn)部署。如果對(duì)混合集成有明確的要求,其中一些容器化工作負(fù)載可能保留在內(nèi)部部署設(shè)施中,可以選擇Azur eArc或Google Anthos等混合解決方案。最后,如果企業(yè)正在尋找簡(jiǎn)單的隔離容器部署,那么無服務(wù)器解決方案可能是一個(gè)最佳的選擇。
原文標(biāo)題:Containers in the Cloud: What Are Your Options?,作者:Kentaro Wakayama
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】