【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】