使Kubernetes更好用的22個(gè)開源工具
利用這些Kubernetes輔助工具來(lái)簡(jiǎn)化應(yīng)用程序定義,增強(qiáng)監(jiān)控,簡(jiǎn)化云部署等。
Kubernetes已成為一種大規(guī)模部署容器化應(yīng)用程序的標(biāo)準(zhǔn)。但是,如果Kubernetes幫助我們馴服龐大而復(fù)雜的容器部署,那么有什么可以幫助我們馴服Kubernetes? 它也可能很復(fù)雜,令人困惑,也很難管理。
隨著Kubernetes的成長(zhǎng)和發(fā)展,它的一些過(guò)度行為很可能會(huì)逐步完善。但有些人并沒(méi)有等待Kubernetes更容易使用,已經(jīng)將自己的解決方案用于生產(chǎn)環(huán)境中Kubernetes碰到的許多常見問(wèn)題。
在這里,我們重點(diǎn)介紹22個(gè)開源項(xiàng)目和第三方工具,它們以各種方式簡(jiǎn)化Kubernetes,從簡(jiǎn)化命令行交互到簡(jiǎn)化應(yīng)用程序部署語(yǔ)法,再到與AWS集成,為多個(gè)集群提供服務(wù)。
1. Bitnami Cabin:適用于iOS和Android的Kubernetes儀表板
現(xiàn)代的Web應(yīng)用程序或服務(wù)怎么能沒(méi)有某種移動(dòng)界面。Cabin為Kubernetes管理員提供了可從iOS或Android智能手機(jī)訪問(wèn)的Kubernetes儀表板版本。完整的Kubernetes儀表板中提供的許多功能都可以從Cabin啟動(dòng),包括Helm圖表,擴(kuò)展部署,讀取pod日志以及訪問(wèn)Kubernetes托管的基于Web的應(yīng)用程序。
2. Goldpinger:可視化Kubernetes集群
人類是視覺(jué)生物。圖形和圖表使我們更容易理解全局。考慮到Kubernetes集群的范圍和復(fù)雜性,可以使用我們可以獲得的所有視覺(jué)協(xié)助。
由Bloomberg技術(shù)部門開源的名字有趣Goldpinger,是一個(gè)在Kubernetes集群內(nèi)運(yùn)行的簡(jiǎn)單工具,它顯示了節(jié)點(diǎn)之間關(guān)系的交互式地圖。健康節(jié)點(diǎn)以綠色顯示,不健康節(jié)點(diǎn)以紅色顯示。只需單擊節(jié)點(diǎn)即可獲取詳細(xì)信息。你可以使用Swagger自定義API,以進(jìn)行其他報(bào)告,指標(biāo)或其他集成。
3. Gravity:便攜式Kubernetes集群
如果你想將應(yīng)用程序部署到Kubernetes,許多應(yīng)用程序都會(huì)使用Helm圖表來(lái)指導(dǎo)和自動(dòng)化該過(guò)程。但是,如果你想按原樣使用Kubernetes集群并將其部署到某個(gè)地方呢?
Gravity獲取Kubernetes集群及其容器注冊(cè)表及其運(yùn)行應(yīng)用程序(稱為“應(yīng)用程序包”)的快照。程序包只是一個(gè).tar文件,可以在Kubernetes運(yùn)行的任何地方復(fù)制集群。
Gravity還確保目標(biāo)基礎(chǔ)結(jié)構(gòu)可以支持與源相同的行為要求,并且目標(biāo)上的Kubernetes運(yùn)行時(shí)也可以滿足要求。Gravity的企業(yè)版增加了安全功能,包括基于角色的訪問(wèn)控制,以及跨多個(gè)集群部署同步安全配置的能力。
4. K9s:全屏Kubernetes CLI UI
管理員喜歡“單一屏幕”實(shí)用程序。K9s是Kubernetes集群的全屏CLI UI。它一目了然地為你提供了運(yùn)行pod,日志和部署的視圖,以及對(duì)shell的快速訪問(wèn)。請(qǐng)注意,你需要在用戶和命名空間級(jí)別授予用戶Kubernetes讀取權(quán)限,以使K9正常工作。
5. Kaniko:在Kubernetes集群中構(gòu)建容器
大多數(shù)容器鏡像都構(gòu)建在容器堆棧外部的系統(tǒng)上。但有時(shí),你希望在容器堆棧中執(zhí)行構(gòu)建過(guò)程,例如,在正在運(yùn)行的容器內(nèi)或Kubernetes集群上的某個(gè)位置。
Kaniko在容器環(huán)境中執(zhí)行容器構(gòu)建,但不依賴像Docker這樣的容器守護(hù)進(jìn)程來(lái)完成其工作。Kaniko獲取基本鏡像,提取文件系統(tǒng),然后在提取的文件系統(tǒng)頂部的用戶空間中執(zhí)行所有構(gòu)建命令,在每個(gè)命令之后獲取文件系統(tǒng)的快照。
請(qǐng)注意,Kaniko目前無(wú)法構(gòu)建Windows容器。
6. Kedge:簡(jiǎn)明的Kubernetes部署定義
關(guān)于Kubernetes最常見的抱怨是它的清單或應(yīng)用程序定義有多復(fù)雜和冗長(zhǎng)。他們寫作很痛苦,維持著痛苦,所以人們不得不求助于第三方工具來(lái)解決問(wèn)題。
Kedge提供了更簡(jiǎn)單,更簡(jiǎn)潔的語(yǔ)法。您向Kedge提供了Kubernetes定義文件的簡(jiǎn)單版本,Kedge將這個(gè)簡(jiǎn)單的定義擴(kuò)展為其完整的Kubernetes版本。與Koki Short(見下文)不同,Kedge的聲明文件不使用模塊化語(yǔ)法;它只是將應(yīng)用程序定義歸結(jié)為常見的快捷方式。
請(qǐng)注意,Kedge當(dāng)前一個(gè)版本是在2018年4月。
7. Koki Short:可管理的Kubernetes清單
Koki Short像上面的Kedge,是一個(gè)改進(jìn)應(yīng)用程序定義或表現(xiàn)方式在Kubernetes中工作的項(xiàng)目。與Kedge定義一樣,Koki Short使用縮寫語(yǔ)法來(lái)描述Kubernetes pod,它可以轉(zhuǎn)換為完整的語(yǔ)法,然后再轉(zhuǎn)換回來(lái)。與Kedge定義不同,Koki Short也是模塊化的,這意味著來(lái)自一個(gè)Short聲明的細(xì)節(jié)可以在其他聲明中重復(fù)使用,因此可以簡(jiǎn)潔地定義許多具有共同元素的pod。
8. Kops:Kubernetes集群的命令行操作
Kops由Kubernetes團(tuán)隊(duì)開發(fā),允許你從命令行管理Kubernetes集群。它支持在AWS和GCE上運(yùn)行的集群,VMware vSphere和其他環(huán)境正在開發(fā)中。除了自動(dòng)化設(shè)置和拆卸過(guò)程外,Kops還可以幫助實(shí)現(xiàn)其他類型的自動(dòng)化。例如,它可以生成Terraform配置以允許使用Terraform重新部署集群。
9. Kubebox:Kubernetes的終端控制臺(tái)
作為Kubernetes的高級(jí)終端控制臺(tái),Kubebox不僅為Kubernetes及其API提供了美化外殼。它提供內(nèi)存和CPU利用率的交互式顯示,pod列表,運(yùn)行日志和配置編輯器。最重要的是,它可作為L(zhǎng)inux,Windows和MacOS的獨(dú)立應(yīng)用程序提供。
10. Kubecost:運(yùn)行Kubernetes的指標(biāo)成本
大多數(shù)Kubernetes管理工具都側(cè)重于易用性,監(jiān)控,對(duì)pod行為的洞察等。但是如何監(jiān)控與運(yùn)行Kubernetes相關(guān)的成本?
Kubecost使用實(shí)時(shí)Kubernetes指標(biāo)以及從主要云提供商上運(yùn)行的集群派生的實(shí)際成本信息,以提供每個(gè)集群部署的每月成本的儀表板視圖。內(nèi)存,CPU,GPU和存儲(chǔ)的成本都由Kubernetes組件(容器,容器,服務(wù),部署等)分解。
Kubecost還可以跟蹤“群集外”資源(例如S3存儲(chǔ)桶)的成本,盡管目前僅限于AWS。成本數(shù)據(jù)甚至可以共享回Prometheus,因此可以使用數(shù)據(jù)以編程方式更改群集行為。
11. KubeDB:在Kubernetes中運(yùn)行生產(chǎn)數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)一直難以在Kubernetes中優(yōu)雅地運(yùn)行。原生Kubernetes功能集并未直接解決數(shù)據(jù)庫(kù)的許多特定問(wèn)題。
KubeDB允許管理員創(chuàng)建用于管理數(shù)據(jù)庫(kù)的Kubernetes運(yùn)算符。運(yùn)行備份,克隆,監(jiān)視,快照和聲明性地創(chuàng)建數(shù)據(jù)庫(kù)都是混合的一部分。也支持群集,但僅限于某些數(shù)據(jù)庫(kù),例如,它可用于PostgreSQL而不是MySQL(尚未支持)。
12. Kube-monkey:Kubernetes的混沌猴子
對(duì)系統(tǒng)進(jìn)行壓力測(cè)試的一種可靠方法是隨意破壞。這就是Netflix的混亂猴子的理論,它是一種混亂的工程工具,可以隨機(jī)終止在生產(chǎn)中運(yùn)行的虛擬機(jī)和容器,以“鼓勵(lì)”開發(fā)人員構(gòu)建更具彈性的系統(tǒng)。Kube-monkey是對(duì)Kubernetes集群進(jìn)行壓力測(cè)試的相同基本思想的實(shí)現(xiàn)。它的工作原理是隨機(jī)刪除你專門指定的群集中的pod,并且可以進(jìn)行微調(diào)以在特定時(shí)間窗口內(nèi)運(yùn)行。
13. Kube-ps1:Smart Kubernetes命令提示符
不,Kube-ps1不是Kubernetes的索尼PlayStation模擬器(雖然那會(huì)非常漂亮)。它是Bash的一個(gè)簡(jiǎn)單補(bǔ)充,它在提示符中顯示當(dāng)前的Kubernetes上下文和命名空間。Kube-shell包含了這一功能以及許多其他功能,但如果你想要的只是更智能的提示,Kube-ps1可以提供很少的開銷。
14. Kube-prompt:交互式Kubernetes客戶端
對(duì)Kubernetes CLI,Kube-prompt的另一個(gè)最小但有用的修改允許你輸入與Kubernetes客戶端的交互式命令會(huì)話的數(shù)量。Kube-prompt使你不必鍵入kubectl來(lái)為每個(gè)命令添加前綴,并為每個(gè)命令提供自動(dòng)完成功能以及上下文信息。
15. Kube-shell:用于Kubernetes CLI的Shell
Kubernetes命令行功能強(qiáng)大,但與任何命令行應(yīng)用程序一樣,選擇其選項(xiàng)可能很繁瑣。Kube-shell將標(biāo)準(zhǔn)Kubernetes命令行包裝在一個(gè)集成shell中,該shell提供常用命令的自動(dòng)完成和自動(dòng)建議,包括Kubernetes服務(wù)器提供的建議(例如,服務(wù)名稱)。它還為你提供了更強(qiáng)大的命令歷史記錄功能,vi樣式編輯模式以及用戶,命名空間,群集和其他特定于安裝的詳細(xì)信息的運(yùn)行上下文信息。
16. Kubespy:實(shí)時(shí)監(jiān)控Kubernetes資源
Pulumi的Kubespy是一個(gè)診斷工具,允許你實(shí)時(shí)跟蹤Kubernetes資源的更改,為你提供一種文本視圖儀表板。例如,你可以在啟動(dòng)時(shí)觀察pod狀態(tài)的變化:pod定義被寫入Etcd,pod被安排在節(jié)點(diǎn)上運(yùn)行,節(jié)點(diǎn)上的Kubelet創(chuàng)建pod,pod標(biāo)記為正在運(yùn)行。Kubespy可以作為獨(dú)立的二進(jìn)制文件運(yùn)行,也可以作為Kubectl的插件運(yùn)行。
17. 適用于AWS的Kubernetes Ingress控制器
Kubernetes通過(guò)名為Ingress的服務(wù)為集群提供外部負(fù)載平衡和網(wǎng)絡(luò)服務(wù)。Amazon Web Services提供負(fù)載平衡功能,但不會(huì)自動(dòng)將這些服務(wù)與Kubernetes的設(shè)施相結(jié)合。適用于AWS的Kubernetes Ingress控制器縮小了這一差距。 Ingress Controller自動(dòng)管理集群中每個(gè)Ingress對(duì)象的AWS資源,為新的入口資源創(chuàng)建負(fù)載平衡器,并刪除已刪除資源的負(fù)載平衡器,借助AWS CloudFormation確保集群的一致狀態(tài)。它還自動(dòng)管理群集中使用的其他元素,如SSL證書和EC2 Auto Scaling Groups。
18. Kube-ops-view:多個(gè)Kubernetes集群的儀表板
Kubernetes有一個(gè)用于通用監(jiān)控的有用儀表板,但Kubernetes社區(qū)正在嘗試其他方式向Kubernetes管理員有用地呈現(xiàn)數(shù)據(jù)。Kube-ops-view就是這樣一個(gè)實(shí)驗(yàn);它提供了多個(gè)Kubernetes集群的一覽式視圖,以圖形方式呈現(xiàn),因此可以一目了然地看到集群中CPU和內(nèi)存使用情況以及pod的狀態(tài)。請(qǐng)注意,它不允許您調(diào)用任何命令;它嚴(yán)格用于可視化。但它提供的可視化效果非常高效,適用于運(yùn)營(yíng)中心的墻壁監(jiān)視器。
19. Skaffold:Kubernetes的開發(fā)
Skaffold是Google自己的Kubernetes工具之一,是一種為Kubernetes應(yīng)用程序執(zhí)行持續(xù)部署的方法。當(dāng)你對(duì)源代碼進(jìn)行更改時(shí),Skaffold會(huì)自動(dòng)檢測(cè)它們,觸發(fā)構(gòu)建和部署過(guò)程,并在出現(xiàn)任何錯(cuò)誤時(shí)向您發(fā)出警告。 Skaffold完全在客戶端運(yùn)行。它可以在現(xiàn)有的CI/CD流水線中使用,并與一些外部構(gòu)建工具集成,主要是谷歌自己的Bazel。
20. Stern和Kubetail:為Kubernetes記錄標(biāo)記
Stern允許從Kubernetes中的pod和容器生成顏色編碼輸出(根據(jù)tail命令)。這是一種快速方法,可以將來(lái)自多個(gè)資源的所有輸出組合成一個(gè)可以一目了然地讀取的流。與此同時(shí),可以一目了然(顏色編碼)來(lái)區(qū)分流。
Kubetail同樣將來(lái)自多個(gè)pod的日志聚合到一個(gè)流中,對(duì)不同的pod和容器進(jìn)行顏色編碼。但是Kubetail是一個(gè)Bash腳本,所以它只需要一個(gè)shell。
21. Teresa:Kubernetes的簡(jiǎn)單PaaS
Teresa是一個(gè)應(yīng)用程序部署系統(tǒng),在Kubernetes上作為簡(jiǎn)單的PaaS運(yùn)行。組織成團(tuán)隊(duì)的用戶可以部署和管理屬于他們的應(yīng)用程序。這使得受特定應(yīng)用程序信任的人更輕松地使用它,而無(wú)需直接處理Kubernetes。
22. Tilt:將容器更新到Kubernetes集群
由Windmill Engineering開發(fā),Tilt實(shí)時(shí)監(jiān)控對(duì)Dockerfiles的更改,然后將這些更改逐步部署到Kubernetes集群中的相應(yīng)容器中。從本質(zhì)上講,它允許開發(fā)人員實(shí)時(shí)更新實(shí)時(shí)集群,只需更新Dockerfile即可。Tilt在集群內(nèi)執(zhí)行構(gòu)建,引起的變化是源代碼。
原文鏈接:
https://www.infoworld.com/article/3261450/22-open-source-tools-that-make-kubernetes-better.html?nsdr=true