什么是 Kubernetes 仪表板及其替代品

开源
开源的 Kubernetes Dashboard 有助于基于 UI 的资源部署和管理,但其缺陷使用户不得不采用替代方案。
开源的 Kubernetes Dashboard 有助于基于 UI 的资源部署和管理,但其缺陷使用户不得不采用替代方案。

什么是 Kubernetes 仪表板

Kubernetes Dashboard是一个能够管理Kubernetes集群的Web UI。它允许开发人员和管理员通过图形化用户界面轻松地查看、管理和监控集群的状态,包括应用程序、节点、存储、网络等各方面的信息。

Kubernetes Dashboard 提供了以下功能:

1.资源查看:可以查看节点、Pod、服务、部署等 Kubernetes 集群中的所有资源。

  1. 应用程序管理:可以查看、运行和调试应用程序。

3.日志查看:可以查看容器的日志和事件。

4.健康状况:可以查看 Pod、节点和服务的健康状况。

5.可视化度量:可以使用可视化工具来查看集群中的度量数据,例如 CPU、内存和网络使用情况等。

Kubernetes Dashboard 提供了一种简单而直观的方式来管理 Kubernetes 集群。对于那些对命令行不太熟悉的用户或者需要在日常工作中频繁管理 Kubernetes 集群的开发人员和管理员来说,Kubernetes Dashboard 是一个非常有用和方便的工具。

需要注意的是,因为 Kubernetes Dashboard 通过Web UI来管理集群,因此对安全的要求也比较高,需要进行合理的配置和保护。

Kubernetes提供了一个名为“kubectl”的命令行(CLI)组件来承载核心操作。但是在企业范围内使用 CLI 有两个重大障碍

  • 开发人员采用 Kubernetes 进行部署的学习曲线很高。
  • SRE 和 Ops 团队大规模监控多个集群并对其进行故障排除是一项耗时且令人沮丧的工作

Dashboard by Kubernetes(也称为Kubernetes Dashboard)是一个基于 Web 的用户界面,用于将应用程序部署到 Kubernetes 集群中,监控所有资源的健康状况并在出现任何问题时进行故障排除。该应用程序有助于 DevOps、Ops 和SRE团队管理 Kubernetes 资源,例如 Deployments、Statefulsets、Jobs 等。可以使用清单文件快速部署应用程序并从 UI 本身更新帮助。

Kubernetes Dashboard 的特点

Kubernetes Dashboard 的主要特点包括以下几个方面:

  1. 简化管理:Kubernetes Dashboard 提供了可视化的方式管理 Kubernetes 集群,可以通过用户界面轻松查看、管理和监控 cluster。
  2. 全面资源查看:Kubernetes Dashboard支持查看 Kubernetes 集群的各种资源,包括节点状态、Pod状态、服务状态、容器详情、调度、时间轴等。
  3. 好用的日志查看:Kubernetes Dashboard 提供了方便的日志查看功能,可以直接在界面中查看容器的输出和 Kubernetes 的事件。
  4. 度量和监控:Kubernetes Dashboard提供了可视化的工具来查看集群的度量和监控数据,例如 CPU、内存和网络使用状况等。
  5. 安全:Kubernetes Dashboard 支持 Kubernetes 的 RBAC 访问控制,可以配置用户和角色对集群的权限。

总之,Kubernetes Dashboard 可以大大简化 Kubernetes 集群的管理,使得开发人员和管理员可以更加方便地查看和管理 Kubernetes 集群,提高工作效率。同时,Kubernetes Dashboard 还具有良好的安全性,可以保证 Kubernetes 集群的安全访问。

Kubernetes Dashboard 由于两个主要特性而对 DevOps 团队很有吸引力:

  • 集群范围内的可见性和故障排除
  • 基于 UI 的部署

集群范围内的可见性和故障排除

Kubernetes 仪表板将提供各种正在运行的工作负载及其总数的视图。DevOps 工程师将获得工作负载、服务、配置和存储以及集群视图的可见性。

在 Kubernetes 集群中,为了以更高效可靠的方式管理服务,开发人员和管理员需要保证集群范围内的可见性和故障排除。以下是几种常见的保证集群范围内可见性和故障排除的方法:

  1. 度量和监控:在 Kubernetes 集群中使用度量和监控工具可以帮助开发人员和管理员更好地掌握系统的状态,及时监测服务的健康状况,通过预测和预防故障来提高服务的可靠性和可用性。
  2. 日志聚合和审计:日志聚合和审计工具可以将多个容器和不同节点的日志聚合在一起,方便开发人员和管理员统一查看和分析,以帮助排查问题。
  3. 链路追踪:应用程序在横跨多个服务和多个容器时的追踪和故障排查是非常困难的,Kubernetes 集群中的链路追踪技术可以帮助追踪应用程序中 "分布式追踪" 的操作,分析服务之间的依赖关系,排除故障。
  4. 日志记录和事件通知:通过设置日志记录和事件通知,可以及时发现集群中的故障和异常,管理员可以根据通知及时进行处理,减少对用户的影响。
  5. 灰度和蓝绿部署:灰度和蓝绿部署是一种减少部署故障影响的技术,在部署应用程序时,先将一小部分服务部署在新版本上,一段时间后将剩余服务部署在新版本上,并逐步将流量向新版本转移,从而减少新版本服务在线上的不稳定性和故障。

需要注意的是,不同的企业和应用程序会有不同的需求和限制,所以开发人员和管理员需要根据实际的情况来选择合适的可见性和故障排除方案。

工作负载视图

工作负载视图(Workload View)是 Kubernetes Dashboard 的一个特性,用于展示 Kubernetes 集群中正在运行的应用程序的各种资源的情况,例如 Deployment、StatefulSets 和 DaemonSets 等。

工作负载视图提供以下几个方面的信息:

  1. 应用程序和工作负载:工作负载视图首先显示正在运行的应用程序和工作负载的列表,通过点击每个工作负载,可以查看它的详细信息。
  2. 应用程序的部署状态:工作负载视图显示应用程序的部署状态,用于决定应用程序的可用性。在工作负载视图中,应用程序需要的实例数和实际使用的实例数也会显示出来,并显示应用程序的运行时间和应用程序的功耗。
  3. 关联的服务:工作负载视图还显示应用程序运行的所有关联服务的列表,以及每个服务的详细信息,例如 IP 地址、端口号和访问协议等。
  4. 关联的存储卷:工作负载视图列出了应用程序使用的所有存储卷,以及每个存储卷的详细信息和容量。
  5. 关联的 Pod:工作负载视图还列出了所有运行的 Pod 和容器,以及 Pod 和容器运行的计算资源使用情况。

通过工作负载视图,开发人员和管理员可以更方便地查看 Kubernetes 集群中正在运行的应用程序的各种资源情况,包括运行状态、服务、存储卷以及关联的 Pod 等。这有助于开发人员和管理员更快地定位和解决问题,并提高系统的可靠性和可用性。在工作负载视图下,用户将获得集群所有命名空间中运行的工作负载资源的详细信息,例如 Deployments、Pod、ReplicaSets、DaemonSets、Job 和 StatefulSet。还可以根据集群中的特定名称空间执行粒度搜索。

豆荚视图

豆荚视图(Pod View)是 Kubernetes Dashboard 的一个特性,用于展示 Kubernetes 集群中正在运行的 Pod 的详细信息,包括 Pod 的状态、控制器信息和关联的容器等。

豆荚视图提供以下几个方面的信息:

  1. Pod 的基本信息:豆荚视图显示 Pod 的名称、命名空间、IP 地址、状态等基本信息。
  2. 容器信息:对于每个 Pod,豆荚视图列出了所有关联的容器,包括容器的名称、状态、容器 ID、CPU 和内存使用情况等详细信息。
  3. 事件记录:豆荚视图显示与 Pod 相关的事件记录,包括容器故障、Kubernetes 集群故障等。
  4. 环境信息:豆荚视图列出了 Pod 运行时的环境信息,包括容器的环境

工作负载最重要的方面之一可能是在特定节点及其各自的命名空间中运行的 pod 数量。

用户将获得有关 pod 的深入信息,例如:

  • 关于标签和注释的元数据
  • 资源消耗 - CPU 和内存利用率
  • 创建日期和重启次数
  • 事件日志和持久卷声明

同样,Kubernetes Dashboard 提供了命名空间的聚合视图以及命名空间中服务和入口对象、配置映射、网络策略、机密和持久卷声明的详细视图。

服务和入口视图

在入口视图中,Kubernetes Dashboard是用户访问Kubernetes集群的通道。用户可以通过一个Web浏览器访问Kubernetes Dashboard来查看和管理Kubernetes资源和工作负载。用户可以使用Kubernetes Dashboard来查看和编辑容器、部署、服务和命名空间等资源,还可以查看应用程序运行状态的监视图表。

Kubernetes Dashboard 提供了关于正在运行的服务和入口对象的可见性,包括每个服务或入口所属的命名空间、它们的标签和集群 IP。用户可以获得关于每个服务的更深入的信息,例如标签、pod、端点等。

配置和存储视图

配置视图和存储视图是ITIL框架中的两个视图,用于描述IT服务的配置和存储管理。

配置视图(Configuration View)是ITIL框架中描述服务和基础设施配置的视图,它包括从IT资源到服务的各个层级。配置视图帮助用户更好地了解服务组件的构成,以及它们之间的关联和依赖关系。配置视图还包括各种配置项和它们之间的关系,例如服务器硬件配置信息、网络拓扑结构、软件和应用程序的版本和设置参数等。

存储视图(Storage View)是ITIL框架中描述存储管理的视图,它包括存储资源的形成和存储的分配方式。存储视图帮助用户更好地了解存储的结构和规格,并能够监视、存储资源的使用情况,了解存储资源的性能和可用性。

配置视图和存储视图通常是人工制定和维护的,并且在IT服务管理中发挥了重要作用。拥有这两个视图,IT工作者可以更好地了解IT资源的组成和配置,并能够快速获取和互相链接这些信息,从而提高服务的质量和效率。

与任何其他对象视图类似,Kubernetes 仪表板显示集群中持久卷声明 (PCV)的详细信息及其状态、存储卷、存储类、注释、标签、命名空间等。仪表板还显示了集群的配置部署到集群中的应用程序,可以直接从 UI 进行编辑。

基于 UI 的部署

基于UI的部署是指使用图形用户界面(UI)界面来快速创建、配置和部署应用程序和服务,而无需编写脚本或命令行代码。这种方法适用于那些不想或不熟悉使用命令行进行部署和配置的开发人员或管理员。

UI通常提供了用户友好的界面,使得用户可以通过简单的步骤来完成应用程序和系统部署。通过UI,用户可以选择和配置所需的部署和安装选项,例如选择容器镜像、网络配置和存储选项等。UI还可以提供部署状态和错误信息的实时反馈,让用户更好地跟踪和解决问题。

基于UI的部署可以是针对特定的平台或云服务提供商的,也可以是通用化的如Docker。对于企业IT环境,这种方法可以提高部署速度、减少用户出错的评率,降低维护的难度。Kubernetes 仪表板允许您从 UI 部署任何(工作负载)资源。您可以在浏览器中创建清单文件,也可以从 Git 等来源上传您的清单文件。而 Kubernetes Dashboard 将直接与 Kubernetes 控制器通信,以获取为您创建的资源对象。在下面的示例中,我们创建了一个清单文件来创建一个 pod,使用 NGINX 1.19.0 映像来创建一个 pod。

Kubernetes 仪表盘架构

Kubernetes Dashboard 是在 Kubernetes 架构之上开发的外部服务。在引擎盖下,仪表板使用 API 读取所有集群范围的信息,以实现对单个窗格的可见性。它还使用 API 将资源和应用程序部署到集群中。CLI 和 Kubernetes 仪表板都依赖于 kube-API-server 来处理请求。要开始使用 CLI,Ops 团队必须在同一集群中部署 Kubernetes Dashboard(类似于 Kubectl 部署)。

Kubernetes 仪表板入门

要开始使用 Kubernetes Dashboard,您需要在集群中运行以下命令:

第一步:部署 Kubernetes 仪表板

运行以下命令部署 Kubernetes Dashboard 应用程序

kubectl apply -fhttps://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

要从本地机器访问 Kubernetes Dashboard,可以通过运行以下命令创建一个安全通道来访问 K8s 集群:

kubectl proxy

您可以使用以下 URL 访问您的仪表板:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

第 2 步:创建服务帐户

Kubernetes Dashboard 以最小的 RBAC 权限安装,因此您可以使用不记名令牌访问 Dashboard。因此,您可以创建一个服务帐户并将其绑定到具有管理员权限的集群。您可以使用以下服务帐户 YAML 文件:

apiVersion: v1kind: ServiceAccountmetadata: name: admin-user namespace: kubernetes-dashboard

使用命令制作服务资源:

kubectl - apply -f <<serviceaccount.yaml>>

您可以使用以下 ClusterRoleBinding YAML 创建服务帐户cluster-admin:

apiVersion: v1kind: ClusterRoleBindingmetadata: name: admin-userroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects: kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard

同样,应用 YAML 文件在集群中创建 ClusterRoleBinding 资源。

第 3 步:生成不记名令牌

使用命令生成不记名令牌

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsnotallow="{.secrets[0].name}") -o go-template="{{.data.token | Base64decode}}"

第 4 步:使用令牌并开始使用仪表板

您可以粘贴不记名令牌以开始使用 Kubernetes 仪表板。

Kubernetes 仪表板的局限性

使用基于 UI 的 Kubernetes Dashboard 来代替 CLI 无疑是好的。但是,有一些限制使其用例仅限于小型初创公司:

  1. 缺少多集群视图: Kubernetes Dashboard 提供与单个集群中的命名空间相关的视图。它不提供多个集群的视图。
  2. 最小 RBAC: Kubernetes 不为各种用户提供细粒度的访问控制。必须依赖于令牌或kubeconfig文件。
  3. 缺少单点登录(SSO): Kubernetes Dashboard 不提供单点登录服务。SSO 对于大中型企业保护 Kubernetes 中的资源和应用程序至关重要。
  4. 无节点管理: Kubernetes Dashboard DevOps 团队查看节点信息,如状态、标签、限制、内存/CPU 请求、机器 ID、地址、分配的资源、pod 等。但不允许任何编辑节点的规定。这很重要,因为如果一个节点不健康,它将不会运行任何 pod,也不会参与集群活动。
  5. HELM 图表的零可见性和可管理性: 许多组织使用它们来大规模部署他们的 Kubernetes 应用程序。不幸的是,Kubernetes Dashboard 不提供HELM Dashboards的功能。
  6. 缺乏应用视图: Kubernetes Dashboard 提供了资源或对象视图,但需要更多关于应用程序的信息,这使得开发人员修改任何部署都很麻烦。在没有应用程序视图的情况下,Kubernetes Dashboard 将其使用仅限于 Ops 团队。
  7. 审计: Kubernetes Dashboard 不提供部署的审计报告,例如应用程序的部署人员、时间和方式。

请注意,虽然 Kubernetes Dashboard 的开发也是为了让 UI 的部署变得容易,但今天,还没有从 UI 应用高级部署策略(例如金丝雀)的机制。

Kubernetes 仪表板的开源替代品

Kubernetes Dashboard 有四种开源替代方案,它们可以独立构建,也可以在 Dashboard 项目之上构建,以增强从 UI 进行部署、监控和故障排除的能力。

1. Devtron Kubernetes 仪表板:

Devtron 提供了一个开源的 Kubernetes-native DevOps 平台,可以自动化整个软件交付过程,从 CI、CD、GitOps、安全和治理、渐进式部署、可观察性、监控和故障排除。Devtron Kubernetes 仪表板 在单个窗格中提供强大的功能,使 DevOps、SRE 和开发人员的生活更简单:

  • 多集群资源监控和节点管理
  • HELM 图表仪表板和从仪表板的单个窗格进行管理
  • 事件和实时日志,以及用于调试的 Pod 执行
  • 基于 UI 的部署(或对现有清单文件的修改)
  • 将新部署即时回滚到生产环境
  • DORA 指标
  • 用于用户、操作和资源的细粒度 RBAC。

2. 开放镜头

具有 MIT 许可证的开源软件用于多集群管理和监控工作负载。它还提供基本的 HELM 资源管理和资源分组,但可能需要一个学习曲线。其次,它有一些盲点,因为它没有为多集群部署、图表配置差异等提供 HELM 图表组。

3.八分圆

由 VMware 启动的开源仪表板,但现在已存档 - 没有社区支持,您只能靠自己。最初,该项目的目标是让开发人员使用 UI 更快地将代码发送到集群中。Octane 在集群可视化和管理方面的功能有限。

表格比较

Vanilla Kubernetes 仪表板对比 Devtron Kubernetes 仪表板对比 OpenLens。

集群和资源管理

安全


责任编辑:华轩 来源: 今日头条
相关推荐

2022-11-28 11:35:33

Kubernetes开源工具

2023-08-05 15:12:54

Kubernetes命令

2021-10-18 09:00:00

Kubernetes容器工具

2022-02-08 11:45:03

PiniaVuex前端

2023-07-11 18:36:20

CloudReady开源

2013-11-19 14:36:38

UbuntuDebianPCLinuxOS

2021-08-12 13:00:56

物联网IOT

2022-08-02 10:45:29

AppFlowyNotion开源

2012-07-20 09:37:00

Oracle LinuCentOS

2020-12-04 09:41:36

C编程语言替换C

2016-09-13 15:50:24

TurtlEvernote开源

2020-02-17 21:35:21

JoplinEvernote开源

2013-01-28 09:25:54

2011-04-12 09:13:51

OpenIndianaSolaris替代品

2013-10-30 16:40:45

2021-10-14 15:42:53

消息队列KubeMQKafka

2022-06-01 09:28:43

​​Umami​​开源

2018-06-12 16:33:23

GitHub替代品项目

2022-12-26 07:40:00

Heroku替代品dynos

2020-07-07 09:10:29

VS CodeLinux开源
点赞
收藏

51CTO技术栈公众号