对于系统的全面工作,命令行实用程序的知识很重要:在 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 是一个相当特殊且年轻的利基市场。 然而,它的发展非常活跃:已经可以找到非常成熟的解决方案和非常年轻的解决方案,它们仍有成长的空间。 它们迎合了各种应用,提供了几乎适合所有口味的功能和外观。 我们希望这篇评论能帮助您选择最适合您当前需求的工具。
PS
谢谢
另请阅读我们的博客:
- «
Kubernetes Web View 的公告(以及 Kubernetes 的其他 Web UI 的简要概述) “; - «
Kubernetes Dashboard 和 GitLab Users 的集成 “; - «
引入 Polaris 以保持 Kubernetes 集群健康 “; - «
kubebox 和 Kubernetes 的其他 shell “。
来源: habr.com