解讀5大Kubernetes服務(wù)托管云平臺,谷歌云略勝一籌!
作為一個用于自動化容器化應(yīng)用程序的部署,擴展和管理的開源系統(tǒng),Kubernetes的受歡迎程度非常高。越來越多地云提供商開始提供將Kubernetes作為托管和托管服務(wù)的平臺。
在本文中,我們將介紹托管和自托管服務(wù)之間的一些差異,并分析目前可用的五種流行服務(wù):Google的Kubernetes引擎,Azure Kubernetes服務(wù)(AKS),亞馬遜針對Kubernetes的彈性容器服務(wù)(Amazon EKS),以及IBM的云容器服務(wù)和Rackspace。
托管與自托管
Kubernetes是業(yè)界領(lǐng)先的開源容器編排框架。由谷歌創(chuàng)建,目前由云原生計算基金會(CNCF)維護,由于其處理大型集群的能力,成為了容器市場的香餑餑。目前,由于其活躍的社區(qū)和功能集,它正被企業(yè),政府,云提供商和供應(yīng)商采用。
如果你沒有一定的專業(yè)技術(shù)知識積累,自托管Kubernetes可能會非常困難。在多臺計算機上有大量的網(wǎng)絡(luò),服務(wù)發(fā)現(xiàn)設(shè)置和Linux配置。此外,由于Kubernetes管理你的整個基礎(chǔ)架構(gòu),你必須更新它以防止攻擊。從版本1.8開始,Kubernetes提供了一個名為kubeadm的工具,允許用戶在一臺機器上運行Kubernetes以進行測試。
另一方面,如果你選擇托管或管理Kubernetes,則不需要了解很多或者對基礎(chǔ)架構(gòu)有很多經(jīng)驗。只需要在云提供商中訂閱,它就會部署并保持所有內(nèi)容的運行和更新。
當(dāng)你準(zhǔn)備擴展到更多計算機和更高的可用性時,會發(fā)現(xiàn)托管解決方案是最容易創(chuàng)建和維護的,并且有可供選擇的全部可能性和服務(wù)。以下,我們也將討論市場上最主流的托管服務(wù)并逐一進行分析。
托管服務(wù)
這里選擇了五個托管服務(wù),并將分別對它們進行分析,并將它們與一些流行的Kubernetes功能進行比較,以便你自己決定。
谷歌的Cloud Kubernetes引擎
Google的Kubernetes引擎是Kubernetes最早托管的服務(wù)之一。由于Google是Kubernetes的最初創(chuàng)建者,因此它是最先進的Kubernetes管理者之一,具有廣泛的功能。
Azure Kubernetes服務(wù)(AKS)
Azure KubernetesService是用于托管Kubernetes的微軟解決方案。該服務(wù)最近向公眾開放,但微軟此前提供了一個名為Azure容器服務(wù)的舊版托管服務(wù)。使用較舊的服務(wù),用戶可以在Kubernetes,DC/OS和Docker Swarm之間進行選擇,但它沒有Kubernetes在其新服務(wù)上可用的詳細(xì)程度。
亞馬遜針對Kubernetes的彈性容器服務(wù)(Amazon EKS)
亞馬遜的EKS是最新的服務(wù)之一。最近,亞馬遜接受了創(chuàng)建自己的托管Kubernetes實例而非專有實例的挑戰(zhàn)。該服務(wù)經(jīng)過Kubernetes認(rèn)證,可以在一個集群中管理多個AWS區(qū)域。
IBM的云容器服務(wù)
IBM的云容器服務(wù)自2018年3月開始提供,因此它是主要云上可用的最早管理的服務(wù)之一。盡管名頭不如以上的三個那么大,但IBM Cloud正在快速增長。
Rackspace KAAS
Rackspace Kubernetes即服務(wù)于2018年6月推出,仍然具有許多最佳的Kubernetes功能,Rackspace是一家多云咨詢公司,因此可以通過許多其他云提供多云可移植性等解決方案。
托管服務(wù)比較
我選擇了一些Kubernetes特性,并比較了它們在每個托管服務(wù)上的實現(xiàn)方式。
自動更新
要將集群版本更新為最新版本,需要使用自動更新。Google Cloud提供自動更新,無需手動操作,Azure和IBM提供按需版本升級。自從推出最新版本(v1.10)以來,AWS和Rackspace將如何運作尚不清楚。
負(fù)載平衡和網(wǎng)絡(luò)
有兩種類型的負(fù)載平衡:內(nèi)部和公共服務(wù)。顧名思義,內(nèi)部負(fù)載均衡在容器實例之間分配調(diào)用,而公共負(fù)載實例將容器實例分發(fā)到外部集群。
本機負(fù)載平衡意味著將使用自己的云架構(gòu)而不是基于軟件的內(nèi)部負(fù)載平衡來服務(wù)。圖2顯示了一個Azure儀表板,其中包含Kubernetes解決方案使用的云本地負(fù)載均衡。
自動擴展
Kubernetes可以本地擴展容器實例以解決性能瓶頸,這是其主要功能之一,并且是任何Kubernetes托管或自托管版本的一部分。然而,當(dāng)根據(jù)資源利用率增加或減少在集群上運行的節(jié)點(VM)的數(shù)量時,只有少數(shù)托管服務(wù)提供解決方案。
自動擴展解決方案提供了一種在白天工作負(fù)載變化時降低集群成本的簡便方法。例如,如果你的應(yīng)用程序主要在商業(yè)時間使用,Kubernetes會增加節(jié)點數(shù)以在高峰時段提供更多CPU和內(nèi)存,而在高峰時段后減少到僅一個節(jié)點。如果沒有自動擴展,則必須手動更改節(jié)點數(shù)或?qū)⑵浔A魹楦?并支付更多)以便能夠處理高峰時段。
Google Cloud提供了一種更簡單的解決方案:可以調(diào)整GUI或CLI,指定VM大小以及最小和最大節(jié)點數(shù)。其他一切都由提供商管理。亞馬遜EKS排名第二,它使用AWS自己的自動擴展器,可用于其云端的任何內(nèi)容,但與Google Cloud相比,配置起來更加困難。Azure缺少此功能,但Kubernetes本身提供的名為Kubernetes autoscale的工具可為你提供所需的一切。遺憾的是,IBM和Rackspace云不提供此功能。
節(jié)點池
節(jié)點池是有用的Kubernetes功能,允許你在集群中使用不同類型的計算機。例如,數(shù)據(jù)庫實例需要更快的存儲,而CPU重型軟件則根本不需要更快的存儲。
谷歌云擁有此功能,亞馬遜EKS也在追趕。Azure在其路線圖上有,并承諾它將在今年年底交付。目前,IBM和Rackspace沒有關(guān)于何時可用的信息。
多個區(qū)域
多個區(qū)域允許集群位于世界上的多個區(qū)域中。這樣可以降低每個請求的延遲,有時還可以降低成本??梢詫⒓号渲脼橹甘靖浇?jié)點響應(yīng)請求。
目前,只有Google Cloud和IBM云提供多個區(qū)域。
RBAC
基于角色的訪問控制(RBAC)為管理員提供了一種通過Kubernetes的API動態(tài)配置策略的方法。所有評估的托管服務(wù)都提供RBAC實現(xiàn)。
裸金屬集群
虛擬機是位于計算機和物理硬件之間的仿真層中的計算機。這種高度優(yōu)化的層,增加了計算消耗。在便攜性和沙箱方面,容器類似于VM,但它們可以直接接觸硬件,這是一個巨大的優(yōu)勢。
裸金屬機器只是出租的物理硬件。它們的部署非常復(fù)雜,并且由于運營成本較高,付款與VM不同。目前,只有三個云提供商允許集群節(jié)點成為裸機:IBM,Rackspace和AWS。
結(jié)論
Kubernetes是DevOps的一個新起點。因此,幾乎所有主要的云提供商都在競相為Kubernetes提供更好,更簡單的解決方案。管理Kubernetes本身可能既困難又昂貴,任何程度的自動管理都可以充分降低成本并提高可靠性。
使用Kubernetes還提供了一種避免供應(yīng)商鎖定解決方案的有效方法:由于每個云提供商都已擁有自己的Kubernetes實例,因此在維護所有腳本的同時更容易更改提供程序。
由于Google的領(lǐng)導(dǎo)地位和Kubernetes的參與,GoogleCloud對于任何新集群都是一個不錯的選擇:大多數(shù)功能從一開始就可用,并且可以快速應(yīng)用新的更新。對于較大的部署,請嘗試避免忽略節(jié)點組的服務(wù),每個鏡像都有不同的要求,這些要求將更適合不同的計算機。對于CPU綁定流程(例如批處理或大數(shù)據(jù)分析),提供裸機(例如IBM和Rackspace)的解決方案可能會提供更好的性能。