使用容器见解配置 GPU 监视

从代理版本 ciprod03022019 开始,集成了容器见解的代理现已支持监视感知 GPU 的 Kubernetes 集群节点上的图形处理单元 (GPU) 使用情况,并且会监视那些请求和使用 GPU 资源的 Pod 或容器。

注意

根据 Kubernetes 上游公告,Kubernetes 将弃用 kubelet 为 Kubernetes 版本 1.20+ 报告的 GPU 指标。 因此,容器见解将无法再立即收集以下指标:

  • containerGpuDutyCycle
  • containerGpumemoryTotalBytes
  • containerGpumemoryUsedBytes

若要继续通过容器见解收集 GPU 指标,请在 2022 年 12 月 31 日前迁移到 GPU 供应商特定的指标导出程序。 配置 Prometheus 抓取,以从已部署的供应商特定导出程序抓取指标。

支持的 GPU 供应商

容器见解支持监视以下 GPU 供应商提供的 GPU 群集:

通过以 60 秒为间隔收集以下指标并将其存储在 InsightMetrics 表中,容器见解会自动开始监视节点上的 GPU 使用情况以及 GPU 请求 Pod 和工作负载的情况。

注意

预配具有 GPU 节点的群集后,请确保根据 Azure Kubernetes 服务 (AKS) 的要求安装 GPU 驱动程序以运行 GPU 工作负载。 容器见解通过节点中运行的 GPU 驱动程序 Pod 收集 GPU 指标。

指标名称 指标维度(标记) 说明
containerGpuDutyCycle* container.azm.ms/clusterId、container.azm.ms/clusterName、containerName、gpuId、gpuModel、gpuVendor 在刚过去的采样周期(60 秒)中,GPU 处于繁忙/积极处理容器的状态的时间百分比。 占空比是 1 到 100 之间的数字。
containerGpuLimits container.azm.ms/clusterId、container.azm.ms/clusterName、containerName 每个容器可以将限值指定为一个或多个 GPU。 不能请求或限制为 GPU 的一部分。
containerGpuRequests container.azm.ms/clusterId、container.azm.ms/clusterName、containerName 每个容器可以请求一个或多个 GPU。 不能请求或限制为 GPU 的一部分。
containerGpumemoryTotalBytes* container.azm.ms/clusterId、container.azm.ms/clusterName、containerName、gpuId、gpuModel、gpuVendor 可用于特定容器的 GPU 内存量(以字节为单位)。
containerGpumemoryUsedBytes* container.azm.ms/clusterId、container.azm.ms/clusterName、containerName、gpuId、gpuModel、gpuVendor 特定容器使用的 GPU 内存量(以字节为单位)。
nodeGpuAllocatable container.azm.ms/clusterId、container.azm.ms/clusterName、gpuVendor 节点中可供 Kubernetes 使用的 GPU 数。
nodeGpuCapacity container.azm.ms/clusterId、container.azm.ms/clusterName、gpuVendor 节点中的 GPU 总数。

* 根据 Kubernetes 上游更改,不再立即收集这些指标。 作为临时修补程序,对于 AKS,请将 GPU 节点池升级到最新版本或 *-2022.06.08 或更高版本。 对于启用了 Azure Arc 的 Kubernetes,在节点的 Kubelet 配置中启用功能入口 DisableAcceleratorUsageMetrics=false,然后重启 Kubelet。 上游更改正式发布后,此修补程序将不再有效。 请计划在 2022 年 12 月 31 日之前迁移到使用 GPU 供应商特定的指标导出程序。

GPU 性能图表

容器见解包含表中前面列出的指标的预配置图表,作为每个群集的 GPU 工作簿。 有关可用于容器见解的工作簿的说明,请参阅容器见解中的工作簿

后续步骤