dcgm-exporter无法获取Pod GPU指标 仅显示自身Pod名称如何配置?
dcgm-exporter采集到非预期Pod名称的配置调整方案
1. 配置dcgm-exporter宿主机目录挂载与启动参数
dcgm-exporter需要读取宿主机kubelet的Pod元数据目录才能关联GPU对应的业务Pod,需要在Deployment配置中添加对应挂载与启动参数:
- 添加/var/lib/kubelet/pods目录的只读挂载,配置示例:
# Deployment 配置片段 spec: template: spec: containers: - name: dcgm-exporter volumeMounts: - name: kubelet-pods mountPath: /var/lib/kubelet/pods readOnly: true volumes: - name: kubelet-pods hostPath: path: /var/lib/kubelet/pods type: Directory
- 启动参数添加Kubernetes服务发现开关,配置示例:
# Deployment 配置片段 spec: template: spec: containers: - name: dcgm-exporter args: - --kubernetes # 开启K8s元数据关联 - --collector.dcgm.scrape-interval=15s # 可根据需求调整采集间隔
2. 配置充足的RBAC权限
dcgm-exporter需要调用K8s API查询集群Pod、节点元数据,需要绑定包含以下权限的ClusterRole:
# ClusterRole 配置片段 rules: - apiGroups: [""] resources: ["pods", "nodes", "nodes/proxy"] verbs: ["get", "list", "watch"]
如果使用Helm部署,需要将serviceAccount.create设置为true,自动创建关联权限的服务账号。
3. 校验GPU工作负载配置
只有显式声明了GPU资源请求/限制的业务Pod才能被dcgm-exporter识别,需要确保业务Pod的配置中包含以下字段:
# 业务Pod 配置片段 resources: limits: nvidia.com/gpu: 1 # 按实际申请的GPU卡数填写 requests: nvidia.com/gpu: 1
同时需要确认集群运行时为nvidia-container-runtime,否则GPU分配元数据不会被正常上报。
4. 验证配置生效
配置更新后进入dcgm-exporter Pod内部,执行以下命令确认输出指标是否携带正确的业务Pod标签:
curl localhost:9400/metrics | grep DCGM_FI_K8S_POD_NAME
正常输出的指标中DCGM_FI_K8S_POD_NAME标签值应为业务Pod名称,而非dcgm-exporter自身Pod名称。
内容的提问来源于stack exchange,提问作者Faheem Sohail
相关产品推荐
相关产品推荐

