10個(gè)業(yè)界流行的Kubernetes發(fā)行版
如果你需要大規(guī)模的容器編排,想必Kubernetes毋庸置疑是你的首要選擇,這一由谷歌推出的開源容器編排系統(tǒng)近年來發(fā)展飛速,大受業(yè)界及廣大用戶好評(píng)。
盡管如此,對(duì)于大多數(shù)用戶而言,Kubernetes存在著學(xué)習(xí)曲線陡峭、難以設(shè)置和配置的問題,導(dǎo)致終端用戶需要承擔(dān)繁重的管理工作。基于此,解決辦法并非單槍匹馬學(xué)習(xí)并直接上手Kubernetes,而是尋找一個(gè)完善的容器技術(shù)解決方案,這種方案通常將Kubernetes納為其支持和維護(hù)的組件之一,使用起來通常更直觀和簡潔,如此一來便極大程度降低了Kubernetes的上手門檻。
在本文中,我列出了10個(gè)業(yè)界比較流行的Kubernetes相關(guān)產(chǎn)品,包括了Kubernetes發(fā)行版、容器工具、不同的供應(yīng)商提供的Linux內(nèi)核等等。
本文的列表不包括Amazon EKS或者Google Kubernetes Engine(GKE)這樣的云服務(wù),僅僅列出了可以在本地運(yùn)行或作為云托管的軟件發(fā)行版。
目 錄
- Rancher 2.0
- CoreOS Tectonic/Red Hat CoreOS
- Canonical Distribution of Kubernetes(CDK)
- Docker 社區(qū)版 / Docker 企業(yè)版
- Heptio Kubernetes 訂閱
- Kontena Pharos
- Pivotal 容器服務(wù) (PKS)
- Red Hat OpenShift
- SUSE 容器服務(wù)平臺(tái)
- Telekube
十大Kubernetes發(fā)行版
嚴(yán)格來說,Rancher 2.0并不是一個(gè)單純的Kubernetes發(fā)行版,而是一個(gè)開源的Kubernetes管理平臺(tái)。Rancher 2.0 為企業(yè)用戶提供Kubernetes-as-a-Service (Kubernetes即服務(wù)),且能夠?qū)崿F(xiàn)多Kubernetes集群的統(tǒng)一納管,不論這些Kubernetes集群在何處、以何種方式部署。這解決了生產(chǎn)環(huán)境中企業(yè)用戶可能面臨的基礎(chǔ)設(shè)施不同的困境。Rancher 2.0能統(tǒng)一納管來自Google(GKE)、Amazon(EKS)和Azure(AKS)等公有云上托管的Kubernetes服務(wù)的平臺(tái)。
Rancher Labs公司在2019年發(fā)布了提供輕量級(jí)的Kubernetes發(fā)行版,K3s。這款產(chǎn)品專為在資源有限的環(huán)境中運(yùn)行Kubernetes的研發(fā)和運(yùn)維人員設(shè)計(jì)。其每個(gè)服務(wù)器實(shí)例僅需512MB RAM以及200MB的磁盤空間。它刪除了舊的、非必須的代碼,整合正在運(yùn)行的打包進(jìn)程,使用containerd代替Docker作為運(yùn)行時(shí)的容器引擎,并在除etcd之外引入了SQLite 作為可選的數(shù)據(jù)存儲(chǔ),通過這些變化極大地減少了運(yùn)行所需的空間和資源。
CoreOS Tectonic/Red Hat CoreOS
CoreOS提供以容器為中心的Linux發(fā)行版,它兼容Docker,但又有固定的鏡像格式、它自己的runtime、以及一個(gè)“企業(yè)級(jí)Kubernetes發(fā)行版”。上述這些共同構(gòu)成了CoreOS Tectonic堆棧的基礎(chǔ)。
CoreOS操作系統(tǒng)Container Linux是業(yè)界的一大流行產(chǎn)品,它的亮點(diǎn)之一在于它就像一組容器化組件,用戶無需關(guān)閉正在運(yùn)行的應(yīng)用程序,即可將操作系統(tǒng)的自動(dòng)更新整合到生產(chǎn)環(huán)境中。CoreOS還可以對(duì)Kubernetes進(jìn)行“一鍵式”更新。此外,CoreOS Tectonic可以在Amazon Web Services、Microsoft Azure以及裸機(jī)上運(yùn)行。
Red Hat收購了CoreOS之后,計(jì)劃將其集成到Red Hat OpenShift中。Container Linux將被重新命名為Red Hat CoreOS。此舉預(yù)計(jì)將在2020年之前完成,在此之前Container Linux將繼續(xù)得到支持。根據(jù)Red Hat的說法,過渡后將提供“幾乎所有”CoreOS Tectonic的功能。
Canonical Distribution of Kubernetes(CDK)
Canonical,Ubuntu Linux的制造商,也擁有自己的Kubernetes發(fā)行版,即Canonical Distribution of Kubernetes(CDK)。該發(fā)行版的一大賣點(diǎn)是它是一款廣泛受到支持、易于理解且普遍部署的Ubuntu Linux發(fā)行版。Canonical聲稱其堆棧既可以在任何云上運(yùn)行,也可以在本地部署,并支持CPU和GPU驅(qū)動(dòng)的工作負(fù)載。付費(fèi)客戶還能享受Canonical的工程師遠(yuǎn)程管理他們的Kubernetes集群的服務(wù)。
Canonical的Kubernetes發(fā)行版也有輕量級(jí)版本的,叫Microk8s。開發(fā)人員以及Kubernetes新手可以在筆記本或者臺(tái)式機(jī)上安裝Microk8s,將其用于測試、實(shí)驗(yàn),甚至在那些硬件配置低的生產(chǎn)環(huán)境中使用。
此外,Canonical和Rancher Labs共同開發(fā)了一個(gè)產(chǎn)品叫做“云原生平臺(tái)(Cloud Native Platform,簡稱CNP)”,它將Canonical的Kubernetes發(fā)行版和Rancher的容器管理平臺(tái)相匹配。如此,就可以使用Kubernetes管理運(yùn)行在每個(gè)集群上的容器并且用Rancher管理多Kubernetes集群。目前,CNP已經(jīng)在Rancher 2.x的版本中可以使用。
Docker 社區(qū)版 / Docker 企業(yè)版
對(duì)于很多人來說,Docker僅僅是容器。但實(shí)際上,2014年之后Docker也有它自己的集群和編排系統(tǒng),Docker Swarm,而這一系統(tǒng)曾是Kubernetes的競爭對(duì)手。直到2017年10月,Docker宣布將在其未經(jīng)修改的、永久標(biāo)準(zhǔn)的狀態(tài)中添加Kubernetes作為標(biāo)準(zhǔn)打包方式,這一調(diào)整涵蓋了Docker Community Edition和Docker Enterprise 2.0及以后的版本。
Docker Enterprise 3.0添加了Docker Kubernetes服務(wù),這一Kubernetes集成可以保持開發(fā)人員桌面和生產(chǎn)部署環(huán)境中Kubernetes版本一致。
簡而言之,Docker公司已經(jīng)意識(shí)到Kubernetes比Swarm更適合管理龐大、復(fù)雜的容器環(huán)境。然而,Docker依然包括其原始的集群系統(tǒng)“swarm 模式”,它更適用于那些不太復(fù)雜的工作,例如部署一個(gè)無需擴(kuò)展太多的本地的、受保護(hù)的應(yīng)用程序或者維護(hù)不需要修改的現(xiàn)有swarm模式集群。
Kubernetes的兩位創(chuàng)始人Craig McLuckie和Joe Beda,創(chuàng)辦了Heptio,主要圍繞Kubernetes提供服務(wù)和產(chǎn)品。他們第一個(gè)主打產(chǎn)品是一個(gè)付費(fèi)的Kubernetes部署服務(wù), Heptio Kubernetes Subscription(HKS)。Heptio提供全天候的技術(shù)支持,收費(fèi)是每月2000美元及以上。
Heptio的主要優(yōu)勢在于它是企業(yè)級(jí)的Kubernetes,又不害怕廠商鎖定。它可以在公有云或者私有硬件上運(yùn)行部署。所有Heptio提供的用于管理Kubernetes配置的工具都是開源的,并且修復(fù)程序可以直接交付到支持的集群。
2018年VMware收購了Heptio,不過此次收購目前暫未影響Heptio的產(chǎn)品計(jì)劃。
Kontena Pharos的定位是“Kubernetes that just works”,它與Red Hat的Linux產(chǎn)品擁有大致相同的“劇本”。底層架構(gòu)是經(jīng)過CNCF認(rèn)證的Kubernetes發(fā)行版,可以在Apache 2許可下使用(和Fedora或CentOS一樣)。付費(fèi)客戶可以獲得專業(yè)級(jí)功能、技術(shù)咨詢、支持服務(wù)和特定固定價(jià)格的產(chǎn)品,比如遷移到云原生基礎(chǔ)設(shè)施。
核心Pharos發(fā)行版默認(rèn)配置了自動(dòng)安全更新和多個(gè)容器運(yùn)行時(shí)等基本功能。付費(fèi)的版本則添加了企業(yè)工具,比如Kontena Lens面板、Kontena Storage分布式存儲(chǔ)系統(tǒng)、備份、負(fù)載均衡以及在內(nèi)網(wǎng)隔離環(huán)境中部署集群。
專業(yè)版有30天的試用期,訂閱的費(fèi)用為每月近3000美元起。而開源的版本則沒有時(shí)間的限制也不需要許可費(fèi)用。
Pivotal,以其在Cloud Foundry上的表現(xiàn)而為人熟知,它擁有企業(yè)級(jí)Kubernetes服務(wù),即Pivotal Container Service(PKS)。PKS吸取了許多其他Pivotal項(xiàng)目的靈感,例如,它使用曾經(jīng)用于Pivotal的Cloud Foundry的Kubo項(xiàng)目來啟動(dòng)和管理Kubernetes集群。
PKS一個(gè)突出的特性是與VMware虛擬機(jī)堆棧緊密集成,事實(shí)上,PKS是VMware-Pivotal的聯(lián)合項(xiàng)目。運(yùn)行在PKS上的容器可以訪問在vSphere上運(yùn)行的虛擬機(jī)可用的服務(wù),譬如VMware VSAN中的持久存儲(chǔ)。此外,PKS可以通過用于在公有云和私有云環(huán)境中管理VMware基礎(chǔ)設(shè)施的VMware Cloud Foundation進(jìn)行管理。
簡而言之,任何使用VMware并且對(duì)Kubernetes越來越感興趣的企業(yè)可能希望研究PKS以充分利用他們現(xiàn)有的VMware設(shè)置。
OpenShift是紅帽的PaaS產(chǎn)品,最初使用與Heroku buildpack類似的“盒式磁帶”打包應(yīng)用程序,然后將其部署在稱為“齒輪”的容器中。然后Docker出現(xiàn)了,OpenShift經(jīng)過了重新設(shè)計(jì),使用新的容器鏡像和運(yùn)行時(shí)標(biāo)準(zhǔn)。不可避免地,Red Hat采用了Kubernetes作為OpenShift中的編排技術(shù)。
OpenShift還為PaaS中的所有組件提供抽象化和自動(dòng)化。這種抽象和自動(dòng)化擴(kuò)展到Kubernetes,會(huì)帶來相當(dāng)大的管理負(fù)擔(dān),因此OpenShift可以用來緩解這一過程,作為部署PaaS的更為重要的一部分。
如上文所提到的,CoreOS Tectonic正在合并到Red Hat OpenShift中,雖然技術(shù)合并預(yù)計(jì)要到2020年才能完成。
因Linux 發(fā)行版而在歐洲廣為人知的SUSE也擁有 SUSE CaaS平臺(tái)。概念上,SUSE CaaS平臺(tái)讓人想起CoreOS Tectonic,它結(jié)合了運(yùn)行容器的裸機(jī)“微型”操作系統(tǒng)、Kubernetes、內(nèi)置的鏡像倉庫和集群配置工具。
SUSE CaaS Platform3于2018年發(fā)布,在這一版本中添加了多主機(jī)功能以使集群更能適應(yīng)主節(jié)點(diǎn)崩潰和內(nèi)核調(diào)整功能,以便對(duì)包含的Linux內(nèi)核進(jìn)行自定義調(diào)整。
SUSE CaaS平臺(tái)可以在公有云和本地裸機(jī)上運(yùn)行,但需注意SUSE目前無法支持任何與底層云基礎(chǔ)架構(gòu)的集成。這意味著SUSE CaaS平臺(tái)不是為了補(bǔ)充Amazon EKS或Google Kubernetes Engine而設(shè)計(jì)的,而是為了規(guī)避他們,讓您可以跨多個(gè)云和數(shù)據(jù)中心運(yùn)行容器。
Teleport SSH服務(wù)器的所屬公司Gravitational開發(fā)了Gravity,這是一種在本地或遠(yuǎn)程集群上運(yùn)行的“強(qiáng)化生產(chǎn)”Kubernetes發(fā)行版。Gravity的定位是私有SaaS平臺(tái)的解決方案或在多個(gè)區(qū)域及托管提供商中運(yùn)行Kubernetes-as-a-service。
Gravity上的應(yīng)用程序要想在Kubernetes上的容器中運(yùn)行,必須做一些前提準(zhǔn)備。它們必須首先被打包成“Bundles”,這些“Bundles”之后會(huì)被發(fā)布到Kubernetes集群進(jìn)行分發(fā)。這些“綁定”屬于額外工作,除此之外我們常見的部署容器應(yīng)用程序所需的準(zhǔn)備工作也仍然需要做,不過Bundle清單也是Gravity唯一需要的額外工作了。
Gravity包含拍攝整個(gè)Kubernetes集群的快照的功能,其中包括所有的應(yīng)用程序和配置,并且用戶可以部署快照到任意其他Kubernetes環(huán)境中。
結(jié) 語
Kubernetes和容器正在改變應(yīng)用程序的創(chuàng)建、部署以及管理的方式。而本文列出的這些Kubernetes發(fā)行版,正在引領(lǐng)著這場變革。