跳到主要内容

2 篇博文 含有标签「Dashboard」

查看所有标签

· 阅读需 5 分钟

在KubeEdge v1.19版本中,我们引入了重构后的全新版本KubeEdge Dashboard,该版本的KubeEdge Dashboard采用了Next.js框架及MUI组件库,具有更好的性能和用户体验。同时,我们还对KubeEdge Dashboard的功能进行了优化和增强,包括对仪表盘设备管理以及设备模型管理等功能进行了优化。

在本文中,我们将介绍KubeEdge Dashboard的部署和使用。

环境准备

首先,我们需要获取KubeEdge Dashboard的源代码并进行运行环境的准备。最新的KubeEdge Dashboard源代码可以从KubeEdge Dashboard代码仓库获取。

在部署KubeEdge Dashboard之前,我们需要准备以下环境:

  • KubeEdge集群:请参考KubeEdge官方文档部署KubeEdge集群,KubeEdge Dashboard依赖于KubeEdge v1.15及以上版本。
  • Node.js:请确保系统中已经安装了Node.js,建议使用Node.js v18及以上版本。
  • Node.js包管理工具:请确保系统中已经安装了Node.js包管理工具,例如npm、yarn或者pnpm。

安装与运行

下面我们以pnpm为例,介绍如何在本地环境中安装和运行KubeEdge Dashboard。首先,我们需要在项目根目录中通过包管理工具安装KubeEdge Dashboard所需的依赖:

pnpm install

由于KubeEdge Dashboard需要连接到KubeEdge后端API,我们需要在启动KubeEdge Dashboard时设置API_SERVER环境变量,以指定KubeEdge集群的API Server地址。以Kubernetes API Server地址为192.168.33.129:6443为例,我们可以通过下面的命令编译并启动KubeEdge Dashboard:

pnpm run build
API_SERVER=https://192.168.33.129:6443 pnpm run start

在启动KubeEdge Dashboard后,我们可以通过浏览器访问http://localhost:3000查看KubeEdge Dashboard的界面。

对于使用自签名证书的KubeEdge集群,我们需要在启动KubeEdge Dashboard时指定NODE_TLS_REJECT_UNAUTHORIZED=0环境变量,以忽略证书验证。

NODE_TLS_REJECT_UNAUTHORIZED=0 API_SERVER=<api-server> pnpm run start

创建登录Token

为了通过KubeEdge Dashboard管理KubeEdge集群,我们需要创建一个Token用于登录。下面以通过kubectlkube-system命名空间中创建一个名为dashboard-user的ServiceAccount为例,创建一个用于KubeEdge Dashboard身份验证的Token。

首先,我们需要在Kubernetes集群中创建一个ServiceAccount。

kubectl create serviceaccount dashboard-user -n kube-system

在创建ServiceAccount后,我们需要将ServiceAccount与ClusterRole绑定,以授予相应的权限。Kubernetes提供了一些内置的角色,例如cluster-admin角色,它拥有集群中所有资源的访问权限。另外,也可以参考Kubernetes文档根据需要创建自定义的ClusterRole。

kubectl create clusterrolebinding dashboard-user-binding --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-user -n kube-system

对于Kubernetes v1.24及以上版本,Kubernetes将不再自动为ServiceAccount创建Secret,我们需要通过kubectl create token命令创建token。默认情况下,该token的有效期根据服务器配置确定,也可以通过--duration参数指定token的有效期。

kubectl create token dashboard-user -n kube-system

对于Kubernetes v1.23及以下版本,Kubernetes会自动为ServiceAccount创建Secret。我们可以使用kubelet describe secret命令获取,或使用下面的命令快速获取对应的Secret。

kubectl describe secret -n kube-system $(kubectl get secret -n kube-system | grep dashboard-user | awk '{print $1}')

结论

通过KubeEdge Dashboard,我们可以更方便地管理KubeEdge集群中的EdgeApplication及设备等资源。我们也将在后续版本中继续增强和优化KubeEdge Dashboard的功能和用户体验,也欢迎社区用户提出宝贵的意见和建议。

对于KubeEdge Dashboard的更多信息,请参考KubeEdge Dashboard GitHub仓库

· 阅读需 7 分钟

北京时间2024年10月28日,KubeEdge发布1.19.0版本。新版本在节点和设备方面引入了多个新特性,同时带来了全新版本的 Dashboard。

KubeEdge v1.19 新增特性:

新特性概览

支持边缘节点上报Event

Kubernetes Event作为集群中事件的报告,可以反馈节点、Pods等集群资源的状态变化。在1.19版本中,EdgeCore支持了边缘Event的上报,用户可以直接在云端通过 kubectl get events 或者kubectl describe {resource_type} {resource_name}获取边缘节点或者pods等状态。

该特性在1.19版本中默认关闭,使用EdgeCore时执行 --set modules.edged.reportEvent=true 或者如下修改EdgeCore配置参数并重启EdgeCore。

apiVersion: edgecore.config.kubeedge.io/v1alpha2
kind: EdgeCore
featureGates:
requireAuthorization: true
modules:
...
edged:
reportEvent: true
...

更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/5722 https://github.com/kubeedge/kubeedge/pull/5811

支持边缘节点OTA升级

新版本在节点升级NodeUpgradeJob基础上新增了边端节点卡点确认和对镜像摘要的验证。卡点确认可以使节点升级下发到边缘节点后,在用户得到确认后才进行升级。镜像摘要验证可以确保在边缘节点待升级的kubeedge/installation-pacakge镜像是安全可靠的。

在1.19版本中,我们可以通过YAML配置NodeUpgradeJob的imageDigestGatter来定义镜像摘要,value用于直接定义摘要的值,registryAPI用于通过registry v2接口获取镜像摘要,两者互斥,如果都没有配置则在升级时不进行镜像摘要的校验,样例:

spec:
...
imageDigestGatter:
value: ""
registryAPI:
host: ""
token: ""

我们还可以通过YAML配置NodeUpgradeJob的requireConfirmation来定义是否要在边端进行确认操作,样例:

spec:
...
requireConfirmation: true

当requireConfirmation设置为true时,在边端节点升级任务下发到边端后,任务状态会更新为confirmation状态等待边端发起确认命令后再继续进行升级。

我们可以通过执行keadm ctl confirm指令进行确认,或者调用Metaserver接口进行确认,以继续升级任务:

POST http(s)://localhost:<metaserver_port>/confirm

更多信息可参考:

https://github.com/kubeedge/kubeedge/issues/5589 https://github.com/kubeedge/kubeedge/pull/5761 https://github.com/kubeedge/kubeedge/pull/5863

Mapper支持设备数据写入

Mapper当前能够采集设备数据并上报,但在设备数据写入方面仍不完善。1.19版本在Mapper-Framework中增加了设备数据写入的能力,允许用户通过Mapper提供的API调用device method,对device property完成数据写入

  • Device method API

目前基于物模型的v1beta1版本的设备管理API包含device property的定义,在1.19版本中,新增device method的定义。Device method指设备能够被外部调用的能力或方法,一个device method能够控制多个device property值。用户能在device-instance文件中定义device method,通过device method完成device property的控制、写入。

spec:
...
methods:
- name: ""
description: ""
propertyNames:
- ""
  • 设备数据写入

在1.19中改进Mapper API能力,新增device method调用接口。用户能够调用相关的接口获取某个设备包含的所有device method,以及device method的调用命令,通过返回的调用命令发起设备写入请求。device method的具体功能实现需要用户自行在Mapper的设备驱动层中完成。

更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/5662 https://github.com/kubeedge/kubeedge/pull/5902

Mapper框架新增支持OpenTelemetry

当前Mapper向用户应用推送设备数据默认内置 HTTP 与 MQTT 两种方式,但仍存在部分应用无法直接以这两种方式进行推送。在1.19版本中我们在数据面引入 OpenTelemetry 观测框架,能够封装设备数据并向多类应用或数据库推送数据,例如GreptimeDB、 Prometheus等,增强Mapper数据面推送设备数据的能力。

spec:
...
properties:
- name: ""
pushMethod:
otel:
endpointURL: ""

更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/5574 https://github.com/kubeedge/kubeedge/pull/5564

全新版本Dashboard

之前发布的KubeEdge Dashboard,新版本使用主流的Next.js框架以及MUI样式库对其进行了重构。在新版本中我们重构并优化了近60个页面与组件,基于KubeEdge最新版本的后端API,我们完善并增加了Device等相关功能页面,并在不影响原有功能的基础上将代码量减少至原先的四分之一。在这个过程中,我们整理完善了Kubernetes以及KubeEdge后端接口的Typescript类型定义,并将依赖的后端接口更新至最新版本,确保其与最新的KubeEdge兼容。

更多信息可参考:

https://github.com/kubeedge/dashboard/pull/29

版本升级注意事项

  • 下个版本(v1.20),EdgeCore的配置项edged.rootDirectory的默认值将会由/var/lib/edged切换至/var/lib/kubelet,如果您需要继续使用原有路径,可以在使用keadm安装EdgeCore时设置--set edged.rootDirectory=/var/lib/edged

  • 从1.19版本开始,请在使用keadm安装KubeEdge时,使用--kubeedge-version指定版本,--profile version已废弃。