值得推薦的九大Kubernetes儀表板工具
譯文【51CTO.com快譯】基于Web的Kubernetes儀表板用戶界面,通常被用來管理那些部署在Kubernetes集群中的、容器化應用的生命周期。通過儀表板,我們可以更加輕松地管理集群資源,并對容器化的應用進行故障排除。可以說,有了儀表板,我們不但可以獲得那些在遠程集群上運行的應用狀態概覽,獲悉可能發生的潛在錯誤信息,而且能夠創建或修改單個Kubernetes資源。
為了實現擴展部署,啟動滾動更新,重新啟動Pod,或使用向導去部署新的應用,目前,業界已出現了各種Kubernetes儀表板應用項目,我們統稱為YAKD(Yet Another Kubernetes Dashboard)。本文將向您介紹各種適用于不同場景需求的儀表板應用,以方便您根據實際項目做出明智的選擇。
1. Kubernetes Dashboard
作為默認的Kubernetes儀表板項目,kube-dashboard是最流行、也是最成熟的Kubernetes UI客戶端。該Web儀表板不但能夠展示遠程Kubernetes集群上,正在運行的容器化應用,而且能夠管理諸如:部署、服務、作業等主要Kubernetes資源。
具體而言,它可以為運維人員提供部署在Kubernetes集群中的如下特性:
- 通過集中式的UI,方便團隊管理Kubernetes
- 通過簡單的用戶界面,來管理各種資源的狀態
- 通過對容器日志和指標的訪問、以及SSH的連接等,進行故障排查
由于Kubernetes儀表板需要被安裝在Kubernetes集群中,因此我們只有通過身份驗證和授權,來實現良好的管理。不過,該儀表板所對應的設置過程并不簡單,而且與與其他客戶端相比,它能夠按照標簽過濾出的資源也較為有限,這可能會成為日常維護的痛點。
您可以按照如下操作命令,將該儀表板安裝到遠程Kubernetes集群上:
有關該項目的更多信息,請參閱如下外部鏈接:
- Github存儲庫 - https://github.com/kubernetes/dashboard
- 項目網站 - https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
2. Lens
作為基于Electron的應用程序,Lens支持Windows、macOS和Linux。它最初是由Kontena開發的,不過在被Mirantis收購后,已作為開源項目(https://github.com/lensapp/lens)被發布了。
在某種程度上,Lens恰好與kube-dashboard截然相反,它是一個可以替代Kubectl 的客戶端應用。除了能夠與Kubernetes儀表板項目提供相似的功能,它還具有如下特性:
- 定制化資源定義(CRD)管理:目前有些項目能夠以插件的形式與Lens相集成,以快速訪問各類信息,而無需任何Kubeclt命令。
- 通過與Helm集成,它可輕松管理和部署任何版本的Helm
- 實現與Kustomize資源的集成,并獲悉其概況
- 可作為Kubectl的替代,處置集群的設置,并運行Kubectl的任何命令
該項目雖然可以提供強大的GUI,但它需要特定的身份驗證與授權管理,畢竟它不是一個一站式的工具。不過,對于那些由GitOps Operator自動部署的資源,該項目不但能夠提供故障排除,而且可以輕松訪問任何Kubernetes事件、日志和指標,以快速地識別出癥結所在。
您可以按照如下操作命令,在MacOS上安裝Lens:
有關該項目的更多信息,請參閱如下外部鏈接:
- Github存儲庫 - https://github.com/lensapp/lens
- 項目網站 - https://k8slens.dev/
- Lens的擴展 - https://github.com/lensapp/lens-extensions
3. Octant
Octant是VMware Tanzu內置一個基于Web的開源工具。它旨在成為開發人員工具包中的一部分,以洞察Kubernetes群集的運行方式,并處置Kubernetes內部的復雜問題。Octant通過本地的Kubectl配置(即/.kube/config或KUBECONFIG的環境變量),自動連接到遠程的Kubernetes集群上。
與Lens相比,Octant消耗的資源(尤其是內存)要少得多。與其他傳統客戶端類似,Octant也具有針對日志流和各種資源的圖形顯示功能,而且可以在集群之間自由切換。Octant的獨特之處在于其插件系統。它允許您按需在自己的界面上,設計并添加插件。雖然這些都需要用到Go語言和插件系統的相關知識,但您可以完全按照您的方式,去自定義呈現給用戶的體驗。
您可以按照如下操作命令,在MacOS上安裝 Octant:
有關該項目的更多信息,請參閱如下鏈接:
- Github存儲庫 - https://github.com/vmware-tanzu/octant
- 項目網站 - https://octant.dev/
4. Rancher
作為完整的企業級計算平臺,Rancher可以在本地、云端或邊緣處,運行Kubernetes集群。嚴格說來,Rancher并非真正意義的Kubernetes儀表板,不過它具有相似的功能。它不但可以管理Kubernetes資源的生命周期(而不僅僅是資源),而且能夠收集容器化應用的日志和指標等。當然,Rancher也帶有一個儀表板的UI,可用來輕松地訪問任何Kubernetes集群,并快速獲取其運行數據。
與其他集成方式不同的是,Rancher需要在遠程集群上部署代理、或以云集成的方式,來管理Kubernetes。此外,它也可以為采用了強大的身份驗證機制(如企業級的 LDAP)的團隊,提供集中式的端點管理。
有關該項目的更多信息,請參閱如下鏈接:
- Github存儲庫 - https://github.com/rancher/rancher
- 項目網站 - https://rancher.com/
5. Kubevious
作為一個全新的、界面友好的Kubernetes儀表板,Kubevious可以更加智能地管理Kubernetes資源。Kubevious同樣可以管理Kubernetes集群中任何資源的生命周期(其中包括:容器日志、指標、標簽、描述等)。同時,它也具有對于已部署的容器化應用,進行故障排除等各種細節功能。
Kubevious既可以被部署在Kubernetes上,又可以作為集群外的獨立應用被予以部署。與前面提到的Kubernetes儀表板和Octant類似,它可以充當任何集群的集中式端點管理。當然,Kubevious也有如下開創性的特性:
- 以應用程序為中心,提供的集群和配置視圖。即便是簡單的應用,在被部署到Kubernetes上時,也需要不同的對象。這通常需要不同的命令,去羅列和聚合所有已創建的資源。Kubevious能夠將每個資源鏈接到單個可擴展視圖框中,以快速獲得整個應用對象的概覽。
- 檢測配置錯誤。它可以識別出許多配置錯誤的類型,其中包括:濫用標簽、失效的端口等。
- 可以通過定義各種驗證規則和自定義規則,來實施DevOps最佳實踐。
- 可以識別共享配置,并顯示不同的依賴對象。
Kubevious的一項特殊功能是,它能夠查看在特定時間段內,已執行命令的報告。例如那些在Kubernetes集群上運行的、每一步操作的歷史記錄。當然,對于Kubevious而言,認證和授權同樣是一個痛點,它往往需要借助外部管理。
您可以按照如下操作命令,在Kubernetes上安裝Kubevious:
有關該項目的更多信息,請參閱如下鏈接:
- Github存儲庫 - https://github.com/kubevious/kubevious
- 項目網站 - https://kubevious.io/
- Kubevious的功能列表 - https://github.com/kubevious/kubevious#cluster-and-configs-in-an-application-centric-view
- 一個革命性的Kubernetes儀表板,可用于交叉檢查和驗證您的Kubernetes資源 - https://codefresh.io/kubernetes-tutorial/kubevious-kubernetes-dashboard/
6. Kubehelper
Kubehelper是一個嶄新的項目。它旨在通過Kubernetes儀表板的UI,去簡化各項與Kubernetes集群相關的日常任務。Kubehelper附帶了一系列預安裝的插件,可用于收集各個指標的運行狀態,并在用戶友好的UI中呈現出所有的內容,進而執行諸如CronJobs和shell等命令。
與Kubevious一樣,Kubehelper可用于實施基于自定義CronJobs任務的DevOps最佳實踐,并能夠隨著時間的變化,去跟蹤它們。由于Kubehelper項目是模塊化的,因此自定義規則不僅基于默認的Kubectl內置命令,還包含了所有自動安裝的插件。
KubeHelper的安裝步驟較其他工具有所不同,請按照GitHub項目上的說明,進行部署。
有關KubeHelper項目的更多信息,請參閱如下鏈接:
- Github存儲庫 - https://github.com/KubeHelper/kubehelper
- 預裝插件列表 - https://github.com/KubeHelper/kubehelper/wiki/KubeHelper-utilities,-plugins-and-shells
7. Portainer
Portainer既可以使用自托管的Kubernetes,又能夠采用諸如MicroK8s、K3s、K8s Native、OpenShift、AKS、EKS、以及DOKS等各種托管式的Kubernetes。它允許用戶從單個Web UI處,同時管理多個集群,且并不限定使用何種編排器。Portainer直觀的界面允許用戶管理、監控和維護Kubernetes環境的各個方面。
目前,Portainer提供了日常管理多個Kubernetes集群所需的各項功能,其中包括:應用生命周期、日志訪問、指標、以及配置文件版本等。憑借著其連接到LDAP的能力,該工具已成為任何需要身份驗證和授權管理的企業級選擇。
您可以按照如下操作命令,在Kubernetes上安裝 Portainer:
有關該項目的更多信息,請參閱如下鏈接:
- Github存儲庫 - https://github.com/portainer/portainer
- 項目網站 - https://www.portainer.io/
8. Skooner
曾被稱為K8dash的Skooner,是一個開源的實時Kubernetes儀表板項目。就功能而言,Skooner非常貼合Kubernetes儀表板的需求。它通過metrics-server來提取運行時(runtime)的指標,并能夠在精致的儀表板界面中,展示諸如:部署、命名空間和服務等Kubernetes集群資源。
與其他Kubernetes儀表板不同,Skooner提供了三種不同的身份驗證方法,它們分別是:服務帳戶令牌、OpenID Connect(OIDC)、以及NodePort。
您可以按照如下操作命令,在Kubernetes上安裝Skooner:
有關該項目的更多信息,請參閱如下鏈接:
- Github存儲庫 - https://github.com/skooner-k8s/skooner
- 項目網站 - https://skooner.io/
9. Kubenav
Kubenav是一種集移動(這是與上述工具的不同之處)、桌面和Web為一身的應用,可被用于管理Kubernetes集群,并獲取資源狀態的概覽。
作為一個新興的項目,Kubenav雖不像上面提到的其他項目那樣完備,但是它擁有一支優秀的開發團隊,能夠快速地解決任何問題,并在新的版本中添加新的功能。正是由于該項目仍處于不斷迭代的過程中,因此對于生產環境而言,其功能并不全面。不過,值得一提的是,它往往被大家作為一種按需使用的Kubernetes管理工具。
您可以按照如下操作命令,在MacOS上安裝Kubenav:
有關該項目的更多信息,請參閱如下鏈接:
- Github存儲庫 - https://github.com/kubenav/kubenav
- 項目網站 - https://kubenav.io/
小結
在上文中,我們列出了九個帶有Web UI的Kubernetes儀表板項目。當然,業界還有更多提供此類功能的命令行工具。您可以通過鏈接--https://kube-web-view.readthedocs.io/en/latest/alternatives.html,了解更多有關Kubernetes儀表板的其他替代方案。
原文標題:YAKD: Yet Another Kubernetes Dashboard,作者: Nicolas Giron
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】