最近有接触到一些带 GPU 的机器作为 K8S 的工作节点,因为使用了 GPU Operator 去管理驱动,所以需要为 kube-state-metrics 添加一些自定义的标签收集设置,才能比较方便的在 Prometheus 查询以及在 Grafana 中展示。

"kube node labels"

设置的方式比较简单,通过给 kube-state-metrics 添加额外启动参数就可以收集了。

因为我这里是使用的 Kube Prometheus Stack 的 Helm 进行部署的,所以相关的配置如下:

## Configuration for kube-state-metrics subchart
##
kube-state-metrics:
extraArgs:
- --metric-labels-allowlist=pods=[*],nodes=[nvidia.com/gpu.product,nvidia.com/gpu.family,nvidia.com/gpu.memory,nvidia.com/gpu.count,nvidia.com/cuda.driver-version.full,nvidia.com/cuda.runtime-version.full,nvidia.com/gpu.deploy.driver,nvidia.com/gpu-driver-upgrade-state,feature.node.kubernetes.io/system-os_release.ID,feature.node.kubernetes.io/system-os_release.VERSION_ID]

这样配置完之后,Prometheus 就可以查询到这 2 个额外的 kube_pod_labelskube_node_labels 指标了。

具体的实现方式这个 Pull Request:https://github.com/kubernetes/kube-state-metrics/pull/1403/files