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