Kubernetes自带web UI(称为Dashboard),用于使用向导将容器化应用程序部署到集群,对工作负载进行故障排除,并管理集群资源。但实际上,也有其他选择。
什么是Kubernetes仪表板?
在一个地方查看日志、度量和错误报告非常有用,如果你更喜欢使用图形界面而不是命令行,可以启动滚动更新、缩放pod和节点、创建并重新启动pod和其他资源(如作业和部署),或者查看所有正在运行的服务并编辑它们。
Kubernetes仪表板实际上是一个必须选择部署的容器,因此如果你选择使用不同的Kubernete Dashboard来管理、监视和排除应用程序和集群本身的故障,那么它不会消耗资源。
Kubernetes仪表板的优点
Kubernetes仪表板有多种选择:一些旨在简化操作并提供护栏,另一些则旨在添加高级功能或将Kubernete与现有管理生态系统集成。有些在集群上运行,有些在本地工作站上运行,你还可以考虑使用Datadog和ContainIQ等SaaS解决方案——选择的解决方案将取决于你是否希望监视Kubernetes集群本身、主机服务器的性能、应用程序和服务层或整个堆栈。
其他Kubernetes仪表板选项
你可能还需要考虑Headlamp、Lens或Octant等仪表板同时具有读写访问权限的含义,以便可以使用它们以kubectl的方式进行更改。这可能很有用,但如果你想通过这些工具避免带外更改,请记住使用RBAC和准入控制器,因为你使用的是GitOps自动化管理。
Headlamp
Kinvolk面向Kubernetes的web UI一开始很小,其中包含集群、工作负载、存储、网络和安全信息的窗格,以及标题指标和不同对象的详细信息,但你可以显著扩展Headlamp,也可以使用前端插件修改界面(使用JavaScript编写时易于编写)。
即使没有这一点,Headlamp也非常强大,具有良好的性能,我们希望它能在界面中提供Kubernetes对象的文档。
不同寻常的是,Headlamp让你可以选择在桌面上本地运行,或者如果经常使用,可以直接在集群中运行。通过OpenID Connect(OIDC)进行身份验证。
Skooner(前称K8dash)
Skooner是一个完全基于web的仪表板,具有详细的桌面视图和更简单的界面,可在移动设备上运行,因此你可以从几乎任何地方获得集群的实时视图。Skooner功能强大且受欢迎,现在它是一个CNCF沙盒项目,未来可能会出现更多的功能,如多集群支持。
如果你已经使用OIDC对集群进行身份验证,则可以通过添加环境变量来使用OIDC登录仪表板:如果没有,则可以使用服务帐户令牌或NodePort服务。Skooner易于安装,只运行一个服务,但它确实依赖于度量服务器来实时度量。你可以监视和管理一系列集群对象——命名空间、节点、pod、副本集、部署、存储、RBAC配置和工作负载,查看日志和文档,使用YAML编辑器编辑资源,或使用浏览器窗口中的终端将SSH连接到正在运行的pod中。
Weave Scope
由Weaveworks维护的开源Scope是Docker和Kubernetes的监控、可视化和管理web平台,可自动生成容器基础设施和特定应用程序的地图,帮助解决稳定性和性能问题。你可以查看流程、容器、编排器和主机的拓扑结构,并深入了解详细信息和度量,如果你想做的不仅仅是暂停、停止、重新启动或删除,还可以启动命令行与容器交互。
Lens
开发人员越来越需要至少做一点Kubernetes操作。Lens实际上是一个桌面IDE,它为Kubernetes集群编制目录,并允许你在具有数千个pod的超大集群中探索和创建资源。Lens Desktop最初由VMware创建,然后由Mirantis开源,但也有各种用于安全扫描和协作的商业模块与之集成。
设置非常简单,因为安装程序使用设备上现有的kubeconfig文件,因此不必设置额外的权限或身份验证选项。如果你希望显示度量而不是目录视图(想想文件目录或Slack频道),以便查看和编辑集群中的pod、部署、命名空间、存储、网络、作业、自定义资源和其他对象,那么可以将其配置为与Prometheus一起使用,以查看实时统计数据和实时日志流。开发人员可以使用Lens从Helm图表安装应用程序,在终端窗口中编辑对象而不是使用kubectl,或者添加有限范围的插件以获得更多功能。
如果你只想在IDE中查看Kubernetes集群,Kubernator是一个Visual Studio代码扩展,它提供了Kubernete对象树查看器和清单编辑器,但没有仪表板。
Octant
Octant最初由Heptio开发,并被VMware作为其Tanzu项目的一部分采用,它似乎不再处于活跃的开发阶段,并且尚未达到1.0版本。然而,它仍然很受欢迎,你可能会发现它对于可视化集群工作负载、命名空间、元数据和其他实时信息非常有用,开发人员需要这些信息来概括应用程序在集群上的运行方式,尤其是对Kubernetes还没有深入了解的时候。
Octant在用于管理Kubernetes集群的工作站上本地运行,因此不会占用集群资源(如果使用k3s、KIND或类似选项在资源最少的系统上获取Kubernete,这将是特别受欢迎的)。与Lens一样,它使用kubeconfig文件进行设置。
Octant称自己为“具有仪表板视图的平台”,而不是仪表板。界面分为应用程序、Kubernetes命名空间概述、集群概述和插件选择面板(扩展性是Octant的一大优势),其中包含显示应用程序结构的图表、缩小所见范围的标签过滤和帮助发现潜在问题的颜色编码。
Kube-Ops View
Kubernetes Operational View(KOV)是一个只读系统仪表板,在本地运行,旨在在一个屏幕上提供多个集群的概览。相当复古的控制台风格GUI实际上是用WebGL编写的。KOV并非设计为Kubernetes Dashboard的替代品,因为你无法管理应用程序或与集群交互,但可以一目了然地查看状态和资源使用情况。
Prometheus
你可能已经在使用Prometheus来监视容器化的工作负载,因为这个毕业了的CNCF项目是一个非常流行的监控和警报工具包。它为许多工具和云提供服务发现,并为广泛的应用程序提供集成,通常与Grafana一起用于创建仪表板。Kubernetes通过kube状态度量服务以Prometheus格式直接公开度量,因此你可以使用它来监控Kubernete基础设施以及容器工作负载。
Prometheus是强大的,完全免费的,有一个活跃的社区,可以帮助你跟上速度。请记住,这是一个收集和处理度量的系统,而不是一个事件日志记录系统,因此你可能更喜欢Grafana Loki这样的系统来处理日志,而且它不是为了长时间存储数据而设计的,因此它对长期趋势分析不太有用。