如果您的集群中有使用 NVIDIA GPU 的节点,您可以通过将集群配置为将 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标发送到 Cloud Monitoring,来监控 GPU 利用率、性能和健康状况。此解决方案使用 Google Cloud Managed Service for Prometheus 从 NVIDIA DCGM 收集指标。
本页面适用于管理底层技术基础架构生命周期的 IT 管理员和运维人员。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
准备工作
如需使用 Google Cloud Managed Service for Prometheus 从 DCGM 收集指标,您的 Google Distributed Cloud 部署必须满足以下要求:
您的集群上必须已安装 NVIDIA DCGM-Exporter 工具。安装 NVIDIA GPU Operator 时,系统会安装 DCGM-Exporter。如需了解 NVIDIA GPU Operator 安装说明,请参阅安装和验证 NVIDIA GPU Operator。
必须启用 Google Cloud Managed Service for Prometheus。如需了解相关说明,请参阅启用 Google Cloud Managed Service for Prometheus。
配置 PodMonitoring 资源
为 Google Cloud Managed Service for Prometheus 配置 PodMonitoring 资源以收集导出的指标。如果您因为限制性安全或组织政策而无法安装应用或导出器,则我们建议您查阅开源文档以获取支持。
为了注入 DCGM 导出器 Pod (nvidia-dcgm-exporter
) 发出的指标数据,Google Cloud Managed Service for Prometheus 使用目标抓取。目标抓取和指标注入使用 Kubernetes 自定义资源进行配置。代管式服务使用 PodMonitoring 自定义资源。
PodMonitoring 自定义资源仅会爬取在其中进行部署的命名空间中的目标。如需抓取多个命名空间中的目标,请在每个命名空间中部署相同的 PodMonitoring 自定义资源。
创建一个具有以下配置的清单文件:
清单中的
selector
部分指定了 DCGM 导出器 Podnvidia-dcgm-exporter
已被选中进行监控。在您安装 NVIDIA GPU Operator 时,系统会部署此 Pod。apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: dcgm-gmp spec: selector: matchLabels: app: nvidia-dcgm-exporter endpoints: - port: metrics interval: 30s
部署 PodMonitoring 自定义资源:
kubectl apply -n NAMESPACE -f FILENAME --kubeconfig KUBECONFIG
替换以下内容:
NAMESPACE
:您要部署 PodMonitoring 自定义资源的命名空间。FILENAME
:PodMonitoring 自定义资源的清单文件的路径。KUBECONFIG
:集群的 kubeconfig 文件的路径。
如需验证 PodMonitoring 自定义资源是否已安装在预期的命名空间中,请运行以下命令:
kubectl get podmonitoring -n NAMESPACE --kubeconfig KUBECONFIG
输出应类似如下所示:
NAME AGE dcgm-gmp 3m37s
验证配置
您可以使用 Metrics Explorer 验证您是否正确配置了 DCGM 导出器。Cloud Monitoring 可能需要一两分钟时间来注入您的指标。
如需验证指标是否已注入,请执行以下操作:
-
在 Google Cloud 控制台中,前往 leaderboard Metrics Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
使用 Prometheus 查询语言 (PromQL) 指定要在图表上显示的数据:
在查询构建器窗格的工具栏中,点击 < > PromQL。
在查询编辑器中输入查询。例如,如需绘制过去一小时内 CPU 在每个模式下所花费的平均秒数,请使用以下查询:
DCGM_FI_DEV_GPU_UTIL{cluster="CLUSTER_NAME", namespace="NAMESPACE"}
替换以下内容:
CLUSTER_NAME
:包含使用 GPU 的节点的集群的名称。NAMESPACE
:您部署 PodMonitoring 自定义资源的命名空间。
如需详细了解如何使用 PromQL,请参阅 Cloud Monitoring 中的 PromQL。