對於系統的全面工作,命令行實用程序的知識很重要:在 Kubernetes 的情況下,這是 kubectl。 另一方面,精心設計、周到的圖形界面可以執行о大多數常見任務,並為系統的操作開闢了額外的機會。
去年我們出版了一個譯本
由於我們服務於許多不同規模的 Kubernetes 集群,我們也有興趣能夠為我們的客戶提供一個可視化工具。 在選擇合適的界面時,以下功能對我們來說很關鍵:
- 支持區分用戶權限 (RBAC);
- 命名空間狀態和標準 Kubernetes 原語(Deployment、StatefulSet、Service、Cronjob、Job、Ingress、ConfigMap、Secret、PVC)的可視化;
- 訪問 pod 內的命令行;
- 查看 pod 的日誌;
- 查看 pod 的狀態(
describe status
); - 移除豆莢。
其他功能,例如查看消耗的資源(在 pod/控制器/命名空間的上下文中)、創建/編輯 K8s 原語,與我們的工作流程無關。
我們將從經典的 Kubernetes Dashboard 開始審查,這是我們的標準。 由於世界不會停滯不前(這意味著 Kubernetes 有越來越多的新 GUI),我們還將討論其當前的替代方案,在文章末尾的比較表中總結所有內容。
NB:在審查中,我們不會重複那些已經考慮過的解決方案
1. Kubernetes 儀表板
-
文檔頁面 ; -
存儲庫 (8000 多個 GitHub 星數); - 許可證:Apache 2.0;
- 簡而言之:“Kubernetes 集群的通用網絡界面。 它允許用戶管理集群中運行的應用程序並對其進行故障排除,以及管理集群本身。”
這是 Kubernetes 作者在官方文檔中介紹的通用面板 (但
Kubernetes Dashboard 的主要功能包括:
- 導航:查看命名空間上下文中K8s的主要對象。
- 如果您擁有管理員權限,該面板會顯示節點、命名空間和持久卷。 對於節點,可以使用有關內存、處理器、資源分配、指標、狀態、事件等的統計信息。
- 按類型(Deployment、StatefulSet 等)、它們之間的關係(ReplicaSet、Horizontal Pod Autoscaler)、一般和個性化統計信息查看部署在命名空間中的應用程序。
- 查看服務和入口,以及它們與 pod 和端點的關係。
- 查看文件對象和存儲:持久捲和持久卷聲明。
- 查看和編輯 ConfigMap 和 Secret。
- 查看日誌。
- 容器中的命令行訪問。
一個顯著的缺點(但是,對我們來說不是)是不支持多集群工作。 該項目由社區積極開發,並隨著 Kubernetes API 的新版本和規範的發布維護相關功能:最新版本的面板是
2。 鏡片
該項目定位為 Kubernetes 的完整集成開發環境(IDE)。 此外,它針對許多集群和其中運行的大量 pod(在 25 個 pod 上測試)進行了優化。
Lens 的主要特性/功能:
- 不需要在集群內安裝任何東西的獨立應用程序(更準確地說,需要 Prometheus 來獲取所有指標,但也可以使用現有安裝)。 “主要”安裝是在運行 Linux、macOS 或 Windows 的個人計算機上進行的。
- 多集群管理(支持數百個集群)。
- 集群狀態的實時可視化。
- 基於內置 Prometheus 的資源使用圖表和歷史趨勢。
- 訪問容器和集群節點的命令行。
- 完全支持 Kubernetes RBAC。
當前版本 -
Lens 是 GitHub 上 Kubernetes GUI 類別中第二受歡迎的項目,僅“輸”了 Kubernets Dashboard 本身。 不屬於 CLI* 類別的所有其他開源解決方案的受歡迎程度要低得多。
* 在評論的獎勵部分查看 K9s。
3. 庫伯尼特
這是安裝在個人計算機上的專有應用程序(支持 Linux、macOS、Windows)。 它的作者承諾完全替代命令行實用程序,並且有了它 - 無需記住命令,速度甚至提高十倍。
該工具的一個有趣特性是內置了對 Helm 圖表的支持,缺點之一是缺少應用程序性能指標。
Kubernetic 的主要特點:
- 方便顯示集群狀態。 一屏查看所有相關集群對象及其依賴關係; 所有對象的紅色/綠色就緒狀態; 具有實時狀態更新的集群狀態查看模式。
- 用於刪除和縮放應用程序的快速操作按鈕。
- 支持多集群運行。
- 使用名稱空間的簡單工作。
- 支持 Helm 圖表和 Helm 存儲庫(包括私有存儲庫)。 在 Web 界面中安裝和管理圖表。
該產品的當前成本是一次性支付 30 歐元,供一個人用於任意數量的命名空間和集群。
4. 酷貝維斯
-
Сайт ; -
介紹 ; -
存儲庫 (~500 個 GitHub 星); - 許可證:Apache 2.0
- 簡而言之:“Kubevious 使 Kubernetes 集群、應用程序配置和狀態查看變得安全且易於理解。”
該項目的想法是創建一個工具,旨在分析和調試部署在集群中的應用程序配置。 作者主要關注這些功能的實現,將更一般的事情留到以後。
Kubevious 的主要特性和功能:
- 以應用程序為中心的集群可視化:界面中的相關對像被分組,按層次排列。
- 配置中的依賴關係及其更改的級聯後果的可視化顯示。
- 顯示集群配置錯誤:誤用標籤、丟失端口等。 (順便說一句,如果你對這個功能感興趣,請關注
Polaris 關於我們已經寫了 .) - 除了上一點之外,還有潛在危險容器的檢測,即擁有太多特權(屬性
hostPID
,hostNetwork
,hostIPC
, 山docker.sock
ETC)。 - 集群的高級搜索系統(不僅通過對象的名稱,還通過它們的屬性)。
- 容量規劃和資源優化工具。
- 內置“時間機器”(能夠查看對象配置的先前更改)。
- RBAC 管理與角色、RoleBindings、ServiceAccounts 的樞軸相關表。
- 僅適用於一個集群。
該項目的歷史很短(第一次發佈於 11 年 2020 月 XNUMX 日),似乎有一段穩定或發展放緩的時期。 如果以前的版本經常發布,那麼最新版本(
5.Kubewise
-
項目頁面 ; - 許可證:專有(將成為開源);
- 簡而言之:“一個簡單的 Kubernetes 多平台客戶端。”
VMware 的一款新產品,最初是作為內部黑客馬拉鬆的一部分創建的(2019 年 XNUMX 月)。 安裝在個人電腦上,基於
Kubewise 的主要特點:
- 與最常用的 Kubernetes 實體的接口交互:節點、命名空間等。
- 支持不同集群的多個 kubeconfig 文件。
- 具有設置環境變量能力的終端
KUBECONFIG
. - 為給定的命名空間生成自定義 kubeconfig 文件。
- 高級安全功能(RBAC、密碼、服務帳戶)。
到目前為止,該項目只有一個發布版本
6. OpenShift 控制台
-
OpenShift 文檔部分 ; -
存儲庫 (~150 個 GitHub 星); - 許可證:Apache 2.0;
- 簡而言之:“OpenShift 集群的 UI”。
儘管這個 web 界面是 OpenShift 發行版的一部分(它安裝在那裡使用
OpenShift Console 已經開發了很長時間,因此它包含了許多功能。 我們將提到主要的:
- 共享界面方法 - 控制台中可用可能性的兩種“視角”:針對管理員和開發人員。 模式 開發者視角 以開發人員(通過應用程序)更容易理解的形式對對象進行分組,並將界面集中於解決部署應用程序、跟踪構建/部署狀態,甚至通過 Eclipse Che 編輯代碼等典型任務。
- 工作負載、網絡、存儲、訪問權限的管理。
- 將工作負載邏輯分離為項目和應用程序。 在最新版本之一 - v4.3 -
出現 特別的 項目儀表板, 它顯示項目切片中的常用數據(部署、pod 等的數量和狀態;資源消耗和其他指標)。 - 實時更新顯示集群狀態,其中發生的變化(事件); 查看日誌。
- 查看基於Prometheus、Alertmanager和Grafana的監控數據。
- 代表經營者的管理
運營商中心 . - 管理通過 Docker 運行的構建(從帶有 Dockerfile 的指定存儲庫),
S2I 或任意外部實用程序。
NB: 我們沒有將其他人添加到比較中 Kubernetes 發行版 (例如,鮮為人知的
獎金
1. Beta 版 Kubernetes 上的 Portainer
Portainer 團隊的一個項目,該團隊開發了與 Docker 一起使用的同名流行界面。 由於該項目處於開發的早期階段(第一個也是唯一的測試版
2.冰面板
-
Сайт ; - 許可證:專有;
- 簡而言之:“可視化 Kubernetes 編輯器”。
這個年輕的桌面應用程序旨在通過簡單的拖放界面實時可視化和管理 Kubernetes 資源。 目前支持的對像有 Pod、Service、Deployment、StatefulSet、PersistentVolume、PersistentVolumeClaim、ConfigMap 和 Secret。 很快他們承諾增加對 Helm 的支持。 主要缺點是代碼的封閉性(預計
3.k9s
由於該實用程序提供了控制台 GUI,因此它僅出現在評論的獎勵部分。 然而,作者從字面上最大限度地利用了終端,不僅提供了一個用戶友好的界面,還提供了 6 個預定義的主題,以及一個高級的鍵盤快捷鍵和命令別名系統。 他們徹底的方法不僅限於外觀:k9s 功能令人印象深刻:資源管理、顯示集群狀態、以具有依賴關係的分層表示形式顯示資源、查看日誌、RBAC 支持、通過插件擴展功能......所有這些都很吸引人致廣大 K8s 社區:該項目的 GitHub star 數幾乎與官方 Kubernetes Dashboard 一樣好!
4. 應用程序控制面板
在審查結束時 - 一個單獨的迷你類別。 它包括兩個 Web 界面,其設計目的不是為了全面管理 Kubernetes 集群,而是為了管理部署在其中的內容。
如您所知,Helm 是用於在 Kubernetes 中部署複雜應用程序的最成熟和廣泛使用的工具之一。 在它存在的這段時間裡,積累了很多包(Helm charts),方便部署
4.1. 單目
-
存儲庫 (1300 多個 GitHub 星數); - 許可證:Apache 2.0;
- 簡而言之:“一個用於跨多個存儲庫搜索和發現 Helm 圖表的 Web 應用程序。 作為 Helm hub 項目的基礎。”
Helm 作者的這項開發安裝在 Kubernetes 中,並在同一集群中工作,執行任務。 然而,目前該項目幾乎沒有開發。 它的主要目的是支持 Helm Hub 的存在。 對於其他需求,作者推薦 Kubeapps(見下文)或 Red Hat Automation Broker(OpenShift 的一部分,但也不再開發)。
4.2. 庫貝應用程序
來自 Bitnami 的產品,它也安裝在 Kubernetes 集群中,但與 Monocular 的不同之處在於它最初專注於使用私有存儲庫。
Kubeapps 的主要功能和特點:
- 從存儲庫查看和安裝 Helm 圖表。
- 檢查、更新和刪除集群上安裝的基於 Helm 的應用程序。
- 支持自定義和私有圖表存儲庫(支持 ChartMuseum 和 JFrog Artifactory)。
- 查看和使用外部服務 - 來自服務目錄和服務代理。
- 使用服務目錄綁定機制發布已安裝的應用程序。
- 支持使用 RBAC 進行身份驗證和權限分離。
決賽桌
下面是一個總結表,我們試圖在其中總結和匯總現有可視化界面的主要特徵,以便於比較:
(網絡版表格
結論
Kubernetes 的 GUI 是一個相當特殊且年輕的利基市場。 然而,它的發展非常活躍:已經可以找到非常成熟的解決方案和非常年輕的解決方案,它們仍有成長的空間。 它們迎合了各種應用,提供了幾乎適合所有口味的功能和外觀。 我們希望這篇評論能幫助您選擇最適合您當前需求的工具。
聚苯乙烯
謝謝
另請閱讀我們的博客:
- «
Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的簡要概述) “; - «
Kubernetes Dashboard 和 GitLab Users 的集成 “; - «
引入 Polaris 以保持 Kubernetes 集群健康 “; - «
kubebox 和 Kubernetes 的其他 shell “。
來源: www.habr.com