使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态

💡 原文中文,约21100字,阅读约需51分钟。
📝

内容提要

本文介绍了在KubeSphere中实现边缘节点的可观测性的方法,包括使用KubeSphere和KubeEdge构建云边一体化计算平台,通过Prometheus监控Nvidia Jetson边缘设备的状态,以及展示GPU信息在KubeSphere前端界面上。

🔎

延伸解读

边缘节点监控的版本限制与应对

文章指出,KubeSphere 仅 1.23.x 版本的 K8s 支持边缘计算,且默认界面不显示边缘节点资源使用率。这意味着用户若使用更高版本的 K8s,可能无法直接获得边缘节点监控能力。作者通过修改 node-exporter 亲和性、调整 DNS 策略等手动配置,绕过了这些限制,但过程较为复杂,且依赖特定版本组合。

KubeEdge 环境变量缺失的临时解决方案

在 KubeEdge 边缘节点上,Pod 中的 KUBERNETES_SERVICE_HOST 和 KUBERNETES_SERVICE_PORT 环境变量为空,导致 kube-rbac-proxy 容器启动失败。文章提到 KubeEdge 1.17 版本将修复此问题,当前可通过安装 EdgeMesh 并配置 metaServer 和 clusterDNS 来间接解决。这反映了边缘场景下网络和服务发现机制的差异,需要额外组件支持。

GPU 监控的实现路径与依赖

由于 Jetson 是 ARM 设备,无法使用 nvidia-smi,作者选择安装 Jtop 获取 GPU 数据,并自行开发 Jetson GPU Exporter 将指标暴露给 Prometheus。该 Exporter 以 DaemonSet 方式部署,通过 nodeSelector 确保仅在 Jetson 节点运行。前端则需修改 KubeSphere 代码,通过 NodePort 暴露的 Prometheus 接口查询数据。整个过程涉及多个自定义组件,适合有二次开发能力的团队。

❓

Q&A

如何在KubeSphere中监控KubeEdge边缘节点的CPU和内存状态?

通过修改node-exporter的亲和性设置,使其能够在边缘节点上部署,并确保KubeSphere配置支持边缘节点插件,最终实现CPU和内存的监控。

使用Prometheus监控Nvidia Jetson边缘设备的步骤是什么?

首先安装Jtop获取GPU状态,然后开发Jetson GPU Exporter,将数据发送给KubeSphere的Prometheus,最后在KubeSphere前端展示监控数据。

KubeSphere 1.23.x版本对边缘计算的支持情况如何?

KubeSphere 1.23.x版本支持边缘计算,但缺乏边缘节点资源监控信息的显示。

如何解决KubeEdge边缘节点pod环境变量缺失的问题?

需要确保在KubeEdge的边缘节点上设置KUBERNETES_SERVICE_HOST和KUBERNETES_SERVICE_PORT环境变量,并在KubeEdge 1.17版本中增加这些设置。

EdgeMesh在KubeEdge中有什么作用?

EdgeMesh可以帮助边缘pod访问Kubernetes服务,确保服务正常运行。

如何在KubeSphere前端展示GPU监控数据?

通过修改KubeSphere前端代码,利用HTTP接口从Prometheus获取GPU监控数据并展示在界面上。

🏷️

标签

➡️

继续阅读