一、部署在集群内的 Kubernetes 对象
| Kubernetes 对象名称 | 类型 | 默认占用资源 | 所属 Namespaces |
| nvidia-device-plugin-daemonset | DaemonSet | 0.1核CPU,100MB内存 | kube-system |
| nvidia-gpu-exporter | DaemonSet | 0.1核CPU,100MB内存 | kube-system |
| nvidia-gpu-exporter | ServiceAccount | – | kube-system |
| nvidia-gpu-exporter | ClusterRole | – | – |
| nvidia-gpu-exporter | ClusterRoleBinding | – | – |
| nvidia-gpu-exporter | Service | – | kube-system |
二、限制条件
支持 Kubernetes 1.16及以上版本的集群。
三、权限说明
该组件权限是当前功能实现的最小权限依赖。
四、权限场景
| 功能 | 涉及对象 | 涉及操作权限 |
| 需要跟踪及获取节点信息,以确定显存单位。 | Nodes | get, list, watch |
| 需要跟踪及获取 Pod 信息,以确定需要收集指标的 GPU Pod 信息。 | Pods | get, list, watch |
五、权限定义
kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: nvidia-gpu-exporterrules: – apiGroups: – "" resources: – pods – nodes verbs: – get – list – watch
六、安装
·若你在集群中创建了 GPU 节点且未开启 qgpu 功能,平台将自动安装该组件,你可前往集群的组件管理页面管理。
·若你的集群已经存在 GPU 节点且希望能采集到 GPU 相关的基础监控数据,你可以按照以下步骤进行安装:
1.1 登录 容器服务控制台,在左侧导航栏中选择集群。
1.2 在集群列表中,单击目标集群 ID,进入集群详情页。
1.3 选择左侧菜单栏中的组件管理,在组件管理页面单击新建。
1.4 在新建组件管理页面中勾选 nvidia-gpu。
1.5 单击完成即可创建组件。
注意:已经存在 GPU 节点的集群在首次安装本组件时,需检查集群中是否已存在 DaemonSet nvidia-device-plugin-daemonset。如果存在,请先删除该 DaemonSet,然后再安装本组件 nvidia-gpu。删除 DaemonSet 不影响存量已运行的 GPU 业务 Pod,安装期间新建的 GPU Pod 会在安装完成后自动运行。
七、查看监控
你可通过控制台提供的基础监控查看卡/Pod/容器相关的 GPU 监控,详情请参见 查看监控数据。
注意:组件版本限制:GPU 监控查看需要你将组件 monitor-agent 升级至1.3.11及以上。组件详情请参见 tke-monitor-agent 说明。
八、GPU 卡相关指标
GPU 卡的指标形式为:
gpu_core_usage{card="0",node="10.0.66.4"} 0
注意:说明:
注意:“card” 表示 GPU 的序号,“node” 表示所在节点。
| gpu_xxx | GPU 指标 |
| gpu_count | GPU 卡的数量。 |
| gpu_mem_per_card | 单张 GPU 卡的显存大小(单位为 MiB)。请注意,这里取第一张显卡的显存大小,一般情况下多张卡时每张卡的显存大小一致。但如果某些卡未开启 ECC,可能导致显存大小不一致。建议所有卡都应该打开 ECC。 |
| gpu_core_usage | GPU 实际使用的算力(单位1%,使用全部算力时,值为100)。 |
| gpu_mem_usage | GPU 实际使用的显存(单位为 MiB)。 |
| gpu_core_utilization_percentage | GPU 算力使用率。 |
| gpu_mem_utilization_percentage | GPU 显存使用率。 |
| gpu_mem_unit_mb | 每份 qgpu-memory 的显存大小(单位为 MiB),通常为 1024 或 128。 |
| gpu_enc_utilization_percentage | GPU 编码资源使用率。 |
| gpu_dec_utilization_percentage | GPU 解码资源使用率。 |
九、Pod 相关指标
Pod 的指标形式为:
pod_core_usage{namespace="default",node="10.0.66.4",pod="7a2fa737-eef1-4801-8937-493d7efb16b7"} 0
注意:说明:
注意:“namespace” 表示 Pod 所在的 namespace,“node” 表示 Pod 所在节点,“pod” 表示 Pod 的名称。
| pod_xxx | pod 指标 |
| pod_core_usage | pod 实际使用的算力(单位1%,使用全部算力时,值为100)。 |
| pod_mem_usage | pod 实际使用的显存(单位为 MiB)。 |
| pod_core_utilization_percentage | pod 实际使用的算力占申请算力的百分比。 |
| pod_mem_utilization_percentage | pod 实际使用的显存占申请显存的百分比。 |
| pod_core_occupy_node_percentage | pod 实际使用的算力占节点总算力百分比。 |
| pod_mem_occupy_node_percentage | pod 实际使用的显存占节点总显存百分比。 |
| pod_core_request | pod 申请的算力(单位1%)。 |
| pod_mem_request | pod 申请的显存(单位为 MiB)。 |
| pod_enc_utilization_percentage | pod GPU 编码资源使用率。 |
| pod_dec_utilization_percentage | pod GPU 解码资源使用率。 |
十、容器相关指标
容器的指标形式为:
container_gpu_utilization{container="cuda",namespace="default",node="10.0.66.4",pod="cuda"} 0
注意:说明:
注意:“container” 表示容器名称,“namespace” 表示容器所在的 namespace,“node” 表示容器所在节点,“pod” 表示容器所在的 Pod 的名称。
| container_xxx | 容器指标 |
| container_gpu_utilization | 容器实际使用的算力(单位1%)。 |
| container_gpu_memory_total | 容器实际使用的显存(单位为 MiB)。 |
| container_core_utilization_percentage | 容器实际使用的算力占申请算力的百分比。 |
| container_mem_utilization_percentage | 容器实际使用的显存占申请显存的百分比。 |
| container_request_gpu_memory | 容器申请的显存(单位为 MiB)。 |
| container_request_gpu_utilization | 容器申请的算力(单位1%)。 |
| container_enc_utilization_percentagek8s_container_enc_util | 容器 GPU 编码资源使用率。 |
| container_dec_utilization_percentagek8s_container_dec_util | 容器 GPU 解码资源使用率。 |