Serdar Yegulalp ?陳琳華
Kubernetes和容器正在改變應(yīng)用的構(gòu)建、部署和管理方式。以下這些發(fā)行版正在引領(lǐng)這一變革。
如果你需要大規(guī)模的容器編排,就可以借助Kubernetes這個(gè)項(xiàng)目。這個(gè)出自谷歌的開(kāi)源容器編排系統(tǒng)備受好評(píng),不僅得到了良好的支持,而且發(fā)展勢(shì)頭迅猛。
盡管如此,Kubernetes仍存在龐大、復(fù)雜,并且難以搭建和配置的問(wèn)題。不僅如此,它還將許多繁重的工作留給了終端用戶。因此,最好的方法是不要自己?jiǎn)为?dú)去嘗試它們,而是尋找一個(gè)含有Kubernetes的完整的容器解決方案。在這個(gè)解決方案中,Kubernetes會(huì)被作為組件得到支持和維護(hù)。
我在這里列出了12個(gè)最具知名度的Kubernetes解決方案,它們實(shí)際上是整合了Kubernetes和容器工具的發(fā)行版,也就是由眾多廠商推出的帶有Linux內(nèi)核和用戶層的發(fā)行版。
需要注意的是,本文重點(diǎn)關(guān)注的是可在本地運(yùn)行或可被云托管的軟件發(fā)行版,不包括如亞馬遜EKS或谷歌Kubernetes引擎等專用的云服務(wù)。
CoreOS Tectonic
CoreOS提供了專注于容器的Linux發(fā)行版,并且可以與Docker兼容,不過(guò)它有著自己的鏡像格式和運(yùn)行環(huán)境。與此同時(shí),還提供了一款“企業(yè)級(jí)Kubernetes”發(fā)行版。兩者一起共同構(gòu)成了CoreOS Tectonic堆棧的基礎(chǔ)。
CoreOS操作系統(tǒng)Container Linux與眾不同,主要是因?yàn)樗鼈儽蛔鳛橐惶兹萜骰M件交付。這樣一來(lái),操作系統(tǒng)的自動(dòng)更新可以在不影響應(yīng)用正常運(yùn)行的情況下順暢地進(jìn)入到生產(chǎn)環(huán)境中。CoreOS還表示他們可以對(duì)Kubernetes進(jìn)行“一鍵”更新。CoreOS Tectonic可以在亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)、微軟Azure和裸機(jī)上運(yùn)行。
Canonical 版的Kubernetes發(fā)行版
Ubuntu Linux的開(kāi)發(fā)商Canonical也推出了自己的Kubernetes發(fā)行版。Canonical版的Kubernetes發(fā)行版的一大賣點(diǎn)是它們立足于已得到廣泛推崇并部署的Ubuntu Linux發(fā)行版。Canonical稱,其堆??梢栽谌魏卧贫嘶虮镜剡\(yùn)行,并且支持由CPU和GPU驅(qū)動(dòng)的工作負(fù)載。付費(fèi)用戶可以讓Canonical工程師遠(yuǎn)程管理他們的Kubernetes集群。
Canonical 和 Rancher 實(shí)驗(yàn)室共同推出了 一款名為“云原生平臺(tái)”(Cloud Native Platform)的產(chǎn)品,該產(chǎn)品將 Canonical的Kubernetes發(fā)行版與Rancher的容器管理平臺(tái)整合到了一起。其理念是使用Kubernetes來(lái)管理每個(gè)集群中運(yùn)行的容器,同時(shí)使用Rancher來(lái)管理多個(gè)Kubernetes集群。Cloud Native Platform 將隨 Rancher 2.0 一起推出,目前僅提供了測(cè)試預(yù)覽版。
Docker 社區(qū)版/Docker 企業(yè)版
對(duì)于我們當(dāng)中的大多數(shù)人來(lái)說(shuō),Docker就是容器。自2014 年以來(lái),Docker 擁有了自己的集群和編排系統(tǒng)Docker Swarm,直到近期它們還是 Kubernetes 的競(jìng)爭(zhēng)對(duì)手。然而在2017 年 10 月,Docker宣布將不做任何修改處于原本狀態(tài)的Kubernetes作為Docker社區(qū)版和 Docker Enterprise 2.0 的標(biāo)準(zhǔn)插入式組件。
簡(jiǎn)而言之,Docker公司已經(jīng)認(rèn)識(shí)到自己將會(huì)遇到大麻煩,并承認(rèn)Kubernetes比Swarm更適合管理大型復(fù)雜的容器環(huán)境。盡管如此,Docker仍然為低強(qiáng)度工作保留了其初始的集群系統(tǒng)(即“Swarm 模式”),比如位于防火墻后面的本地應(yīng)用,這些應(yīng)用在數(shù)量上不會(huì)有大的增長(zhǎng)。
Heptio Kubernetes付費(fèi)版
為了提供基于 Kubernetes 的服務(wù)和產(chǎn)品,Kubernetes 的兩位發(fā)明者Craig McLuckie 和Joe Beda 共同創(chuàng)立了Heptio。他們的第一個(gè)主要產(chǎn)品是Heptio Kubernetes 付費(fèi)版(HKS),這是一項(xiàng)需要付費(fèi)的 Kubernetes 部署服務(wù),由Heptio提供24/7 全天候支持。起步價(jià)為每月 2000 美元。
Heptio的主要賣點(diǎn)是提供沒(méi)有廠商鎖定的企業(yè)級(jí)Kubernetes。該產(chǎn)品可以運(yùn)行在公有云或私有硬件上。由Heptio提供的所有Kubernetes配置管理工具都是開(kāi)源的,補(bǔ)丁可以直接推送到受支持的集群。
Mesosphere DC/OS
Mesosphere DC/OS通過(guò)Apache Mesos將一組機(jī)器轉(zhuǎn)變成可動(dòng)態(tài)分配給多個(gè)應(yīng)用的單個(gè)資源。Kubernetes被支持作為DC/OS 上眾多應(yīng)用程序包中的一個(gè),允許用戶跨 DC/OS 群集安裝、運(yùn)行和更新Kubernetes。
DC/OS 本質(zhì)上是否是一個(gè)Kubernetes發(fā)行版值得商榷。這主要是考慮到Kubernetes 并不完全是 DC/OS 的一部分,但可以像其他被支持的應(yīng)用一樣通過(guò)DC/OS來(lái)部署,就像Linux應(yīng)用可通過(guò)Linux發(fā)行版的軟件包管理系統(tǒng)進(jìn)行管理一樣。盡管如此,Mesosphere使用Kubernetes的方式嚴(yán)格遵循Kubernetes 的工作方式。例如,他們使用Kubernetes 的主流社區(qū)發(fā)行版以確保與現(xiàn)有工具集有著高度的兼容性。
Mirantis云平臺(tái)
正如 Mirantis 所言,Mirantis云平臺(tái)將OpenStack、Kubernetes 或兩者的組合作為“敏捷基礎(chǔ)設(shè)施平臺(tái)”的基礎(chǔ)。簡(jiǎn)而言之,Mirantis Cloud Platform 是一個(gè)用于編排虛擬機(jī)、容器和裸機(jī)服務(wù)器的單一集成解決方案。該平臺(tái)以“DevOps 方式”管理部署在該平臺(tái)上的應(yīng)用程序,使用 Salt 作為配置管理工具,并集成 CI/CD 支持以確保應(yīng)用程序被正確部署。
Mirantis云平臺(tái)能夠直接在裸機(jī)、OpenStack集群或公有云上運(yùn)行Kubernetes。據(jù)Mirantis稱,Mirantis云平臺(tái)可以更容易地與Kubernetes協(xié)同工作,原因在于配置Kubernetes底層基礎(chǔ)設(shè)施的工作不會(huì)落在終端用戶身上。
Platform9 托管的Kubernetes
大多數(shù)Kubernetes發(fā)行版將重點(diǎn)放在了讓 Kubernetes 從內(nèi)到外和從上到下都易管理上。Platform9托管的Kubernetes可以在本地的裸機(jī)或遠(yuǎn)程的公有云等任意環(huán)境中運(yùn)行,并可由 Platform9的工程師作為服務(wù)進(jìn)行遠(yuǎn)程管理。
在客戶的監(jiān)督下,Platform9大約每六周就會(huì)對(duì)托管的Kubernetes進(jìn)行一次更新。 Platform9還提供了一些正常情況下必須手動(dòng)添加至Kubernetes集群中的功能,比如針對(duì)多租戶場(chǎng)景的用戶配額。此外,Platform9還提供了與無(wú)服務(wù)器計(jì)算服務(wù)(“函數(shù)即服務(wù)”系統(tǒng))的Platform9 Fission 項(xiàng)目的集成功能,其可在容器化環(huán)境下與大多數(shù)編程語(yǔ)言協(xié)同工作。
Rancher 2.0
Rancher 實(shí)驗(yàn)室已經(jīng)將Kubernetes集成到了他們2.0 版本的Rancher容器管理平臺(tái)中,不過(guò)目前Rancher 2.0還處于測(cè)試階段。相比其他的Kubernetes發(fā)行版,Rancher 2.0 在更高的層級(jí)上工作,其位于Linux主機(jī)、Docker容器和 Kubernetes 節(jié)點(diǎn)之上,可以在不考慮位置和基礎(chǔ)設(shè)施的情況下獨(dú)立管理所有這些節(jié)點(diǎn)。它們甚至可以管理位于亞馬遜EKS、谷歌Kubernetes引擎、微軟Azure容器服務(wù)和其他Kubernetes即服務(wù)云上的Kubernetes集群。
Rancher 也有自己的Kubernetes發(fā)行版。Rancher的目的是消除搭建Kubernetes 集群和為特定環(huán)境定制的Kubernetes時(shí)所遇到的繁瑣工作,同時(shí)防止一些自定義功能妨礙Kubernetes進(jìn)行順暢的升級(jí),這對(duì)于那些快速發(fā)展和經(jīng)常性更新的項(xiàng)目來(lái)說(shuō)是一個(gè)非常重要的考慮。
紅帽O(jiān)penShift
作為紅帽的平臺(tái)即服務(wù)(PaaS) 產(chǎn)品,紅帽O(jiān)penShift最初使用的是類似于Heroku buildpack的“cartridges”來(lái)打包應(yīng)用,然后把它們部署到名為“gears”的容器中。在Docker出現(xiàn)后,OpenShift被進(jìn)行了重寫,以便利用新的容器鏡像和運(yùn)行時(shí)標(biāo)準(zhǔn)。紅帽也不可避免地將Kubernetes作為OpenShift內(nèi)的編排技術(shù)。
OpenShift創(chuàng)建的目的是為了向 PaaS中的所有組件提供抽象和自動(dòng)化。這種抽象和自動(dòng)化也擴(kuò)展到了Kubernetes,這也帶來(lái)了相當(dāng)大的管理負(fù)擔(dān),而OpenShift 可以用來(lái)在PaaS大型部署任務(wù)中緩解這些負(fù)擔(dān)。有興趣的讀者可以查閱InfoWorld網(wǎng)站關(guān)于紅帽O(jiān)penShift 3的測(cè)評(píng),以了解更多信息。
Stackube
作為專門用于運(yùn)行容器的Hyper.sh云服務(wù)的開(kāi)發(fā)商,HyperHQ開(kāi)發(fā)出了一個(gè)“以 Kubernetes為中心的OpenStack發(fā)行版”,即Stackube。通常情況下,OpenStack 使用一個(gè)名為Nova的組件來(lái)配置和管理計(jì)算節(jié)點(diǎn),Stackube則使用的是 Kubernetes替代了Nova。除此之外,它們使用的是“不做任何修改的原”O(jiān)penStack 和 Kubernetes,所有其他額外細(xì)節(jié)都由OpenStack插件進(jìn)行處理。
HyperHQ稱,Stackube的主要優(yōu)勢(shì)是它們可以根據(jù)使用哪個(gè)容器運(yùn)行環(huán)境提供多種不同類型的多租戶。對(duì)于“軟”多租戶來(lái)說(shuō),他們可以使用Docker,如果想實(shí)現(xiàn)企業(yè)級(jí)的資源分離,那么他們可以使用HyperContainer,因?yàn)楹笳呤褂昧斯芾沓绦蚣?jí)的隔離
SUSE云即服務(wù)(CaaS)平臺(tái)
以在歐洲廣泛使用的Linux發(fā)行版而聞名的SUSE也推出了SUSE CaaS平臺(tái)。在概念上,它們會(huì)讓人聯(lián)想到CoreOS Tectonic,后者為一套裸機(jī)“微”操作系統(tǒng),能夠運(yùn)行容器和作為容器編排系統(tǒng)的Kubernetes、內(nèi)置的鏡像注冊(cè)表和集群配置工具。
SUSE CaaS平臺(tái)能夠在公有云和本地裸機(jī)上運(yùn)行,不過(guò)需要注意的是SUSE目前并不支持與底層云基礎(chǔ)設(shè)施的任何集成。這意味著SUSE CaaS平臺(tái)的設(shè)計(jì)不是作為亞馬遜EKS或谷歌Kubernetes引擎的補(bǔ)充而設(shè)計(jì)的,而是為了戰(zhàn)勝這些產(chǎn)品,讓用戶可以跨多個(gè)云和數(shù)據(jù)中心運(yùn)行容器。
Telekube
Teleport SSH服務(wù)器的開(kāi)發(fā)商Gravitational推出了可在在本地或遠(yuǎn)程集群上運(yùn)行的“生產(chǎn)強(qiáng)化型”Kubernetes 發(fā)行版,即Telekube。Telekube 定位為私有軟件即服務(wù)(SaaS)平臺(tái)解決方案,可跨多個(gè)地區(qū)或托管服務(wù)提供商將Kubernetes 作為一項(xiàng)服務(wù)予以運(yùn)行。
Telekube 上的應(yīng)用必須具備能夠在Kubernetes上的容器中運(yùn)行的能力。此外,它們必須被打包至“Bundls”中,隨后“Bundls”將被發(fā)布到Kubernetes集群中。在部署基于容器的應(yīng)用之前,雖然還需要為捆綁做一些額外的工作,不過(guò)Bundle 清單是用戶唯一需要維護(hù)的Telekube額外工作。
本文作者Serdar Yegulalp為InfoWorld網(wǎng)站資深撰稿人,長(zhǎng)期關(guān)注機(jī)器學(xué)習(xí)、容器、開(kāi)發(fā)運(yùn)營(yíng)和Python生態(tài)系統(tǒng),并定期對(duì)上述內(nèi)容進(jìn)行總結(jié)。
原文網(wǎng)址
https://www.infoworld.com/article/3265059/containers/12-kubernetes-distributions-leading-the-container-revolution.html