全部產品
Search
文件中心

Container Service for Kubernetes:開啟叢集GPU監控

更新時間:Jul 17, 2026

GPU監控基於NVIDIA DCGM構建功能強大的GPU監控體系。本文介紹如何開啟叢集GPU監控。

前提條件

背景資訊

對於Kubernetes叢集的大規模GPU裝置管理,需建立完善的監控體系。通過監測GPU相關指標,可以瞭解整個叢集的GPU的使用方式、健康狀態、工作負載效能等,從而實現對異常問題的快速診斷、最佳化GPU資源的分配、提升資源使用率等。除營運人員以外,其他人員(例如資料科學家、AI演算法工程師等)也能通過相關監控指標瞭解業務的GPU使用方式,以助於進行容量規劃和任務調度。

NVIDIA支援使用資料中心GPU管理器DCGM(Data Center GPU Manager)來管理大規模叢集中的GPU。基於NVIDIA DCGM構建的GPU監控系統具有更強大的功能,提供了多種GPU監控指標,其主要功能包括:

  • GPU行為監控

  • GPU組態管理

  • GPU Policy管理

  • GPU健康診斷

  • GPU層級統計和線程層級統計

  • NVSwitch配置和監控

使用限制

  • 節點NVIDIA驅動需為418.87.01及以上版本。您可以登入GPU節點,執行nvidia-smi命令查看驅動版本。

  • 若您需要使用GPU Profiling Metrics,則節點NVIDIA驅動需為450.80.02及以上版本。關於GPU Profiling Metrics的更多資訊,請參見Feature Overview。

  • 不支援對NVIDIA MIG進行監控。

費用說明

關於阿里雲Prometheus的收費策略,請參見計費概述。

1. 開啟Prometheus監控

重要

請確保ack-arms-prometheus組件為1.1.7及以上版本。可查看ack-arms-prometheus組件版本,確認組件版本後,升級組件。

已有叢集中開啟

  1. 在ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇營運管理 > Prometheus 監控。

  2. 在Prometheus 監控頁面,選擇容器監控版本,單擊開始安裝。

    開啟監控後,將自動採集預設的基礎指標,如需採集自訂指標,請參考採集自訂指標。

建立叢集時開啟

  • ACK託管叢集Pro版:

    在建立叢集的組件配置頁面,容器監控欄選擇容器叢集監控Pro版或容器叢集監控基礎版。更多資訊,請參見建立ACK託管叢集。

  • ACK託管叢集基礎版、ACS叢集及ACK Serverless叢集:

    在建立叢集的組件配置頁面,容器監控欄勾選使用阿里雲可觀測監控 Prometheus 版。安裝版本為容器叢集監控基礎版。

如果您想瞭解更多關於開啟Prometheus監控的操作,請參見開啟Prometheus監控。

當採用開源自建的Prometheus服務,您如果需要GPU監測能力,需要安裝 ack-gpu-exporter 組件。

2. 部署樣本應用

  1. 使用以下YAML內容,建立tensorflow-benchmark.yaml檔案。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-benchmark
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-benchmark
        spec:
          containers:
          - name: tensorflow-benchmark
            image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:benchmark-tensorflow-2.2.3
            command:
            - bash
            - run.sh
            - --num_batches=50000
            - --batch_size=8
            resources:
              limits:
                nvidia.com/gpu: 1 #申請1張GPU卡。
            workingDir: /root
          restartPolicy: Never
  2. 執行以下命令,在GPU節點上部署tensorflow-benchmark應用。

    kubectl apply -f tensorflow-benchmark.yaml
  3. 執行以下命令,查看Pod狀態。

    kubectl get pod

    預期輸出:

    NAME                         READY   STATUS    RESTARTS   AGE
    tensorflow-benchmark-k***    1/1     Running   0          114s

3. 查看叢集GPU監控

  1. 登入Container Service管理主控台,在左側導覽列單擊叢集列表。

  2. 在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > Prometheus 監控。

  3. 在Prometheus 監控頁面,單擊GPU 監控頁簽,然後單擊叢集GPU監控-應用Pod維度頁簽。

    通過監控可以看到GPU Pod運行在節點cn-beijing.10.131.xx.xxx上。

    GPU Pod Details 表格顯示 Pod tensorflow-benchmark-c2mjs(Namespace 為 default)的監控詳情:Allocated Mode 為 exclusive,Used GPU Memory 為 836.00 MiB,Allocated GPU Memory 為 22.49 GiB,SM Utilization、GPU Memory Copy Utilization 及 Decode Utilization 均為 0%。

  4. 單擊叢集GPU監控-節點維度頁簽,選擇GPUNode為cn-beijing.10.131.xx.xxx,查看該節點的GPU詳細資料。可參見監控面板說明瞭解各參數詳情。

    該節點的 GPU 監控指標樣本如下:

    • GPU Mode:Exclusive

    • NVIDIA Driver Version:535.161.07

    • Allocated GPUs:1.00

    • GPU Utilization:0.0%

    • Allocated GPU Memory:100.0%

    • Used GPU Memory:3.3%

    • Allocated Computing Power(nvidia0):0.00%

    • The Last one XID Error(過去 24 小時):0

常見問題

DCGM記憶體流失

  • 背景:DCGM(Data Center GPU Manager)是NVIDIA提供的一款用於管理和監控GPU的工具。ack-prometheus-gpu-exporter是安裝阿里雲Prometheus組件後啟動的一個DaemonSet類型的Pod。

  • 原因:DCGM記憶體流失是指在運行過程中,DCGM佔用的記憶體未能被正確釋放,導致記憶體使用量量持續增加。

  • 解決辦法:當前DCGM可能會出現記憶體流失情況,已通過為ack-prometheus-gpu-exporter所在的Pod設定resources.limits來規避這個問題。當記憶體使用量達到limits限制時,ack-prometheus-gpu-exporter會重啟(一般一個月左右重啟一次),重啟後將正常上報指標,但在重啟後的幾分鐘內,Grafana可能會出現某些指標的顯示異常(例如節點數突然變多),之後恢複正常。問題詳情請參見The DCGM has a memory leak?。

ack-prometheus-gpu-exporter出現OOM Kill

  • 背景:ack-prometheus-gpu-exporter是安裝阿里雲Prometheus組件後啟動的一個DaemonSet類型的Pod,可能導致開啟監控出現問題。

  • 原因:由於ACK叢集上的ack-prometheus-gpu-exporter採用的是DCGM的embedding的模式,這種模式下DCGM會在多卡情況下佔用較多的記憶體,且會出現記憶體泄露的問題。所以如果在具有多個GPU的執行個體上運行多個GPU進程,並且ack-prometheus-gpu-exporter分配的記憶體較少,可能會導致exporter Pod被OOM Kill。

  • 解決辦法:這種情況下,通常等待Pod重啟後即可重新上報Metrics。如果頻繁的出現OOM Kill的情況,可以手動提升arms-prom命名空間中DaemonSet ack-prometheus-gpu-exporter的limits來解決這個問題。

ack-prometheus-gpu-exporter報錯

  • 背景:ack-prometheus-gpu-exporter是安裝阿里雲Prometheus組件後啟動的一個DaemonSet類型的Pod,報錯可能導致監控出現問題。

  • 原因:若ack-prometheus-gpu-exporter的Pod日誌出現類似如下的報錯資訊:

    failed to get all process informations of gpu nvidia1,reason: failed to get gpu utilizations for all processes on device 1,reason: Not Found

    這是由於舊版本的ack-prometheus-gpu-exporter在某些GPU卡上未運行具體任務時,無法擷取相關容器的GPU指標。

  • 解決辦法:此問題已在最新版本中修複。請升級ack-arms-prometheus組件到最新版本以解決該問題。