使Kubernetes變得更好的11種工具
譯文【51CTO.com快譯】很少有計(jì)算平臺(tái)可以滿足所有需求,哪怕是那些功能強(qiáng)大、規(guī)模巨大的計(jì)算平臺(tái)。雖然Kubernetes一打開就很有用,但還遠(yuǎn)遠(yuǎn)不夠。總是能找到默認(rèn)Kubernetes功能集不盡如人意或完全忽視的用例或需求,前者如數(shù)據(jù)庫支持,后者如持續(xù)交付。
這時(shí)候更廣泛的Kubernetes社區(qū)挺身而出,提供了針對這種容器編排框架的諸多附件、擴(kuò)展件和第三方產(chǎn)品。以下是我們發(fā)現(xiàn)的11款主要的Kubernetes配套工具。一些可以補(bǔ)充任何Kubernetes集群,另一些可以滿足Kubernetes無法滿足的特定需求。
Gravity:易于移植的Kubernetes集群
如果你要將應(yīng)用程序部署到Kubernetes中,許多應(yīng)用程序都有Helm圖表來引導(dǎo)和自動(dòng)化該過程。但是如果你想直接拿來Kubernetes集群并將其部署在某個(gè)地方該怎么辦呢?
Gravity可以為Kubernetes集群、容器注冊中心以及運(yùn)行中應(yīng)用程序創(chuàng)建快照,名為“應(yīng)用程序bundle”。bundle只是一個(gè).tar文件而已,可以在Kubernetes運(yùn)行的任何地方復(fù)制集群。
Gravity還確保目標(biāo)基礎(chǔ)架構(gòu)可以支持與源基礎(chǔ)架構(gòu)同樣的行為要求,并確保目標(biāo)上的Kubernetes運(yùn)行時(shí)環(huán)境狀況良好。企業(yè)版Gravity添加了安全功能,包括基于角色的訪問控制以及跨多個(gè)集群部署同步安全配置的功能。
Kaniko:在Kubernetes集群中構(gòu)建容器
大多數(shù)容器映像是在容器堆棧外面的系統(tǒng)上構(gòu)建。不過有時(shí)候,你想要在容器堆棧里面執(zhí)行構(gòu)建過程,比如在運(yùn)行中容器里面或在Kubernetes集群上的某個(gè)位置。
Kaniko在容器環(huán)境中執(zhí)行容器構(gòu)建,但不依賴Docker之類的容器守護(hù)進(jìn)程完成其工作。 Kaniko拿來基本映像后提取文件系統(tǒng),然后在所提取文件系統(tǒng)上面的用戶空間中執(zhí)行所有構(gòu)建命令,并在每個(gè)命令后獲取文件系統(tǒng)的快照。
請注意,Kaniko目前無法構(gòu)建Windows容器。
Kedge:簡潔的Kubernetes部署定義
Kubernetes最飽受詬病的地方是其清單或應(yīng)用程序定義有多重疊復(fù)雜而冗長。它們編寫和維護(hù)起來很痛苦,于是難怪人們求助于第三方工具以減少痛苦。
Kedge提供了一種更簡單更簡潔的語法。你可以為Kedge提供Kubernetes定義文件的簡單版本,Kedge可以將該簡單定義擴(kuò)展為完整的Kubernetes定義。與下面介紹的Koki Short不同,Kedge并不為聲明文件使用模塊化語法。它只是將應(yīng)用程序定義簡化為常見快捷方式。
請注意,Kedge的上一個(gè)版本是2018年4月發(fā)布的。
Koki Short:易于管理的Kubernetes清單
與上面的Kedge一樣,Koki Short這個(gè)項(xiàng)目旨在改善應(yīng)用程序定義或清單在Kubernetes中的工作方式。與Kedge定義一樣,Short定義使用一種簡短的語法來描述Kubernetes容器,可以轉(zhuǎn)換成完整的語法并再次轉(zhuǎn)換回去。與Kedge定義不同,Short定義還是模塊化的,這意味著來自一個(gè)Short聲明的詳細(xì)信息可以在其他聲明中重復(fù)使用,那樣就可以簡明地定義擁有通用元素的許多pod。
Kubecost:運(yùn)行中Kubernetes的成本度量指標(biāo)
大多數(shù)Kubernetes管理工具專注于易用性、監(jiān)視和了解pod行為等方面。但如何監(jiān)視與運(yùn)行中Kubernetes有關(guān)的成本(用美元和美分來度量)呢?
Kubecost使用實(shí)時(shí)Kubernetes度量指標(biāo)以及從幾大云提供商上運(yùn)行的集群獲得的實(shí)際成本信息,提供顯示每個(gè)集群部署每月成本的儀表板視圖。內(nèi)存、CPU、GPU和存儲(chǔ)的成本全部按Kubernetes組件(容器、pod、服務(wù)和部署等)加以細(xì)分。
Kubecost還可以跟蹤“集群外”資源(比如Amazon S3存儲(chǔ)桶)的成本,不過這目前僅限于AWS。成本方面的數(shù)據(jù)甚至可以發(fā)回Prometheus以共享,那樣你可以使用該數(shù)據(jù)以編程方式更改集群行為。
KubeDB:在Kubernetes中運(yùn)行生產(chǎn)數(shù)據(jù)庫
數(shù)據(jù)庫在Kubernetes中一直很難優(yōu)雅地運(yùn)行,而原生的Kubernetes功能集無法直接解決數(shù)據(jù)庫的許多特定問題。
KubeDB讓管理員可以創(chuàng)建Kubernetes operator以管理數(shù)據(jù)庫。運(yùn)行備份、克隆、監(jiān)視、快照和聲明式創(chuàng)建數(shù)據(jù)庫都是其功能的一部分。還支持集群,但僅針對某些數(shù)據(jù)庫——比如它適用于PostgreSQL,但還不適用于MySQL。
Kube-monkey:面向Kubernetes的混沌猴子
對系統(tǒng)進(jìn)行壓力測試的一種有效方法是隨機(jī)破壞系統(tǒng),這就是Netflix的Chaos Monkey(混沌猴子)背后的理論。Chaos Monkey是一種混沌工程工具,可隨機(jī)終止生產(chǎn)環(huán)境中運(yùn)行的虛擬機(jī)和容器,以“鼓勵(lì)”開發(fā)人員構(gòu)建更具彈性的系統(tǒng)。Kube-monkey實(shí)施了同樣的基本理念,對Kubernetes集群進(jìn)行壓力測試。其工作原理是,隨機(jī)終止你專門指定的一個(gè)集群中的pod,還可以進(jìn)行微調(diào)以便在特定的時(shí)間窗口內(nèi)運(yùn)行。
Kubernetes Ingress Controller for AWS
Kubernetes通過一項(xiàng)名為Ingress的服務(wù)為集群提供外部負(fù)載均衡和網(wǎng)絡(luò)服務(wù)。AWS提供負(fù)載均衡功能,但并不自動(dòng)將這些服務(wù)耦合到Kubernetes的工具。Kubernetes Ingress Controller for AWS填補(bǔ)了這個(gè)空白。
Kubernetes Ingress Controller for AWS自動(dòng)管理集群中每個(gè)Ingress對象的AWS資源,為新的Ingress資源創(chuàng)建負(fù)載均衡系統(tǒng),并為已刪除的Ingress資源刪除負(fù)載均衡系統(tǒng),利用AWS CloudFormation來確保集群的一致狀態(tài)。它還自動(dòng)管理集群中使用的其他元素,比如SSL證書和EC2自動(dòng)擴(kuò)展組。
Skaffold:Kubernetes的迭代開發(fā)
Skaffold是谷歌自己的Kubernetes工具之一,可以對Kubernetes應(yīng)用程序執(zhí)行持續(xù)部署。你對源代碼進(jìn)行更改時(shí),Skaffold可自動(dòng)檢測到更改,觸發(fā)構(gòu)建和部署過程,并在出現(xiàn)任何錯(cuò)誤時(shí)發(fā)出警告。Skaffold完全在客戶端運(yùn)行。它可以在現(xiàn)有的CI/CD管道中使用,與幾個(gè)外部構(gòu)建工具(主要是谷歌自己的Bazel)整合起來。
Teresa:Kubernetes上的簡單PaaS
Teresa是一個(gè)應(yīng)用程序部署系統(tǒng),可在Kubernetes上作為簡單的PaaS來運(yùn)行。組織成團(tuán)隊(duì)的用戶可以部署和管理屬于他們的應(yīng)用程序。這使得負(fù)責(zé)特定應(yīng)用程序的人處理該應(yīng)用程序更容易一點(diǎn),沒必要直接與Kubernetes打交道。
Tilt:將容器更新版發(fā)送到Kubernetes集群
由Windmill Engineering開發(fā)的Tilt可實(shí)時(shí)監(jiān)測對Dockerfile的更改,然后將那些更改增量部署到Kubernetes集群中的相應(yīng)容器。實(shí)際上,它允許開發(fā)人員僅通過更新Dockerfile即可實(shí)時(shí)更新活動(dòng)集群。Tilt在集群內(nèi)執(zhí)行構(gòu)建,推送的唯一更改是源代碼。
原文標(biāo)題:11 tools that make Kubernetes better,作者:Serdar Yegulalp
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】