Prometheus Adapter配置疑问:如何获取空闲GPU节点数用于HPA
Kubernetes HPA结合空闲GPU节点计数的Prometheus Adapter配置方案
问题根源
你直接写count(<<.Series>> == 0)不生效,主要是因为Prometheus Adapter的模板变量<<.Series>>会替换成指标名+标签匹配器的组合,直接拼接==0会导致语法错误;另外,DCGM_FI_DEV_GPU_UTIL是按GPU实例输出的指标(每个GPU对应一个样本),你需要先按节点聚合,再判断节点是否空闲,最后计数。
正确的Prometheus Adapter配置
自定义空闲GPU节点指标
在Prometheus Adapter的配置文件(比如values.yaml或者单独的config.yaml)中添加以下规则,用来生成空闲节点计数的自定义指标:
rules: custom: - seriesQuery: 'DCGM_FI_DEV_GPU_UTIL{kubernetes_node!=""}' resources: overrides: kubernetes_node: {resource: "node"} name: matches: 'DCGM_FI_DEV_GPU_UTIL' as: 'idle_gpu_nodes' metricsQuery: >- count by() ( count_over_time(DCGM_FI_DEV_GPU_UTIL{kubernetes_node!="",<<.LabelMatchers>>} == 0[5m]) by (kubernetes_node) == count by(kubernetes_node) (DCGM_FI_DEV_GPU_UTIL{kubernetes_node!="",<<.LabelMatchers>>}) )
配置拆解
- seriesQuery:指定要采集的指标,带上
kubernetes_node标签(确保能关联到Kubernetes节点)。 - resources.overrides:把
kubernetes_node标签映射为Kubernetes的node资源类型,让HPA能识别这个指标。 - metricsQuery:
- 第一步:
count_over_time(DCGM_FI_DEV_GPU_UTIL ==0[5m]) by (kubernetes_node)——统计每个节点过去5分钟内,GPU使用率为0的样本数。 - 第二步:
count by(kubernetes_node) (DCGM_FI_DEV_GPU_UTIL)——统计每个节点的GPU总数。 - 第三步:两者相等意味着该节点所有GPU都处于空闲状态,最后用
count by()统计符合条件的节点总数。
- 第一步:
如果你的需求是「节点上至少有一个GPU空闲」(而非全部),可以简化查询:
metricsQuery: 'count by() (count_over_time(DCGM_FI_DEV_GPU_UTIL{kubernetes_node!="",<<.LabelMatchers>>} == 0[5m]) by (kubernetes_node) >= 1)'
HPA配置示例
用这个自定义指标配置HPA,保持至少2个空闲GPU节点:
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gpu-node-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: your-gpu-node-controller # 替换为你的节点组对应的控制器(比如ClusterAutoscaler关联的节点组管理资源) minReplicas: 2 maxReplicas: 10 metrics: - type: External external: metric: name: idle_gpu_nodes target: type: Value value: "2"
验证步骤
- 检查自定义指标是否正常暴露:
kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1/nodes/*/idle_gpu_nodes - 确保Prometheus能正确采集到
DCGM_FI_DEV_GPU_UTIL指标,且带有kubernetes_node标签(如果没有,需要调整DCGM Exporter的配置,添加节点标签)。 - 调整
[5m]时间窗口到适合你业务的阈值,避免短时间波动导致误扩容。
内容的提问来源于stack exchange,提问作者Trarbish
相关产品推荐
相关产品推荐

