All Products
Search
Document Center

Container Service for Kubernetes:GPU FAQ

Last Updated:Jun 16, 2026

Atasi masalah umum terkait GPU di kluster ACK, termasuk penyiapan driver, error NVML, dan manajemen node.

Kategorisasi masalah

Deskripsi

Tautan

Masalah dan troubleshooting GPU

Masalah driver GPU, alat pemantauan seperti DCGM dan Prometheus, serta error waktu proses seperti kegagalan inisialisasi NVML dan error XID.

Masalah cGPU (containerized GPU)

Konfigurasi cGPU, startup, error waktu proses, dan masalah izin modul kernel.

Manajemen node dan kluster GPU

Operasi tingkat kluster termasuk deteksi penggunaan kartu GPU, dukungan virtualisasi, maintenance node seperti upgrade kernel, dan isolasi kartu yang rusak.

Mengapa konfigurasi ECC GPU di kluster saya tidak konsisten?

Mode Error-Correcting Code (ECC) mendeteksi dan memperbaiki error memori GPU, meningkatkan stabilitas dan keandalan dengan sedikit mengurangi kapasitas memori GPU yang tersedia. ACK tidak menegakkan pengaturan ECC yang seragam, sehingga konfigurasi dapat berbeda antar node.

Kapan mengaktifkan atau menonaktifkan ECC:

Rekomendasi

Jenis workload

Nonaktifkan ECC

Workload yang sensitif terhadap biaya dan inferensi latensi rendah, seperti inferensi real-time online

Aktifkan ECC

Workload yang memerlukan konsistensi dan integritas data, seperti server database, sistem finansial, komputasi ilmiah, dan komputasi kinerja tinggi (HPC)

Atur mode ECC untuk node GPU:

  1. Periksa status ECC saat ini.

    nvidia-smi

    Output yang diharapkan:

    Fri Jun  6 11:49:05 2025
    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 535.161.07             Driver Version: 535.161.07   CUDA Version: 12.2     |
    |-----------------------------------------+----------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
    |                                         |                      |               MIG M. |
    |=========================================+======================+======================|
    |   0  Tesla T4                       On  | 00000000:00:08.0 Off |                    0 |
    | N/A   31C    P8               9W /  70W |      0MiB / 15360MiB |      0%      Default |
    |                                         |                      |                  N/A |
    +-----------------------------------------+----------------------+----------------------+
    
    +---------------------------------------------------------------------------------------+
    | Processes:                                                                            |
    |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
    |        ID   ID                                                             Usage      |
    |=======================================================================================|
    |  No running processes found                                                           |
    +---------------------------------------------------------------------------------------+

    Pada kolom Volatile Uncorr. ECC: 0 berarti ECC diaktifkan tanpa error; Off berarti ECC dinonaktifkan.

  2. Aktifkan atau nonaktifkan ECC sesuai kebutuhan.

    • Aktifkan ECC untuk semua GPU pada node: ``nvidia-smi -e 1``

    • Nonaktifkan ECC untuk semua GPU pada node: ``nvidia-smi -e 0``

  3. Restart sistem operasi agar perubahan diterapkan.

    Penting

    Simpan semua data yang diperlukan sebelum me-restart node.

  4. Konfirmasi status ECC baru dengan nvidia-smi. Output berikut menunjukkan ECC dinonaktifkan:

    Fri Jun  6 11:52:15 2025
    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 535.161.07             Driver Version: 535.161.07   CUDA Version: 12.2     |
    |-----------------------------------------+----------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
    |                                         |                      |               MIG M. |
    |=========================================+======================+======================|
    |   0  Tesla T4                       On  | 00000000:00:08.0 Off |                  Off |
    | N/A   31C    P8               9W /  70W |      0MiB / 16384MiB |      0%      Default |
    |                                         |                      |                  N/A |
    +-----------------------------------------+----------------------+----------------------+
    
    +---------------------------------------------------------------------------------------+
    | Processes:                                                                            |
    |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
    |        ID   ID                                                             Usage      |
    |=======================================================================================|
    |  No running processes found                                                           |
    +---------------------------------------------------------------------------------------+

Apakah ACK mendukung instans vGPU-accelerated?

Instans vGPU-accelerated memerlukan lisensi GRID dari NVIDIA. Beli lisensi dan bangun server lisensi Anda sendiri.

Alibaba Cloud tidak menyediakan server lisensi, sehingga instans vGPU-accelerated tidak dapat digunakan secara langsung—bahkan dalam kluster vGPU-accelerated. Konsol ACK tidak lagi mendukung pemilihan instans vGPU-accelerated sebagai node kluster.

Awalan instans yang tidak didukung meliputi ecs.vgn5i, ecs.vgn6i, ecs.vgn7i, dan ecs.sgn7i. Untuk menggunakan instans ini, beli lisensi GRID dari NVIDIA dan bangun server lisensi Anda sendiri. Gunakan instans Elastic Compute Service (ECS) dan ikuti tutorial resmi NVIDIA. Lihat NVIDIA.

Diperlukan server lisensi untuk memperbarui lisensi driver NVIDIA pada instans vGPU-accelerated.
Beli instans ECS dan ikuti tutorial resmi NVIDIA untuk membangun server lisensi.

Jika Anda memiliki server lisensi, ikuti langkah-langkah berikut untuk menambahkan instans vGPU-accelerated ke kluster ACK.

Tambahkan instans vGPU-accelerated ke kluster ACK:

  1. Buka Privilege Quota dan minta fitur custom image OS.

  2. Buat custom image OS berdasarkan CentOS 7.x atau Alibaba Cloud Linux 2 dengan driver NVIDIA GRID dan lisensi GRID yang telah dikonfigurasi. Lihat Buat custom image dari instans dan Instal driver GRID pada instans vGPU-accelerated (Linux).

  3. Buat node pool. Lihat Buat dan kelola node pool.

  4. Tambahkan instans vGPU-accelerated ke node pool. Lihat Tambahkan node yang sudah ada.

Langkah selanjutnya: Lihat Perbarui lisensi driver NVIDIA untuk instans vGPU-accelerated (vGPU) di kluster ACK.

Cara melakukan upgrade kernel secara manual pada node GPU di kluster yang sudah ada

Setelah melakukan upgrade kernel, instal ulang driver NVIDIA untuk memulihkan fungsionalitas GPU.

Catatan

Lakukan upgrade kernel hanya jika versinya lebih awal dari 3.10.0-957.21.3.

Prosedur ini tidak mencakup proses upgrade kernel itu sendiri. Prosedur ini hanya menjelaskan instalasi ulang driver NVIDIA yang diperlukan setelah kernel di-upgrade.

  1. Cordon node GPU untuk menandainya sebagai tidak dapat dijadwalkan. Contoh ini menggunakan node cn-beijing.i-2ze19qyi8votgjz12345.

    kubectl cordon cn-beijing.i-2ze19qyi8votgjz12345
    
    node/cn-beijing.i-2ze19qyi8votgjz12345 already cordoned
  2. Drain node GPU.

    kubectl drain cn-beijing.i-2ze19qyi8votgjz12345 --grace-period=120 --ignore-daemonsets=true
    
    node/cn-beijing.i-2ze19qyi8votgjz12345 cordoned
    WARNING: Ignoring DaemonSet-managed pods: flexvolume-9scb4, kube-flannel-ds-r2qmh, kube-proxy-worker-l62sf, logtail-ds-f9vbg
    pod/nginx-ingress-controller-78d847fb96-5fkkw evicted
  3. Uninstal driver NVIDIA saat ini.

    Catatan

    Contoh ini menggunakan versi driver 384.111. Untuk versi berbeda, unduh paket yang sesuai dari NVIDIA dan ganti nomor versinya.

    1. Login ke node GPU dan periksa versi driver menggunakan nvidia-smi.

      sudo nvidia-smi -a | grep 'Driver Version'
      Driver Version                      : 384.111
    2. Unduh paket instalasi driver NVIDIA.

      cd /tmp/ && sudo curl -O https://cn.download.nvidia.cn/tesla/384.111/NVIDIA-Linux-x86_64-384.111.run
      Catatan

      Anda harus menggunakan paket instalasi untuk meng-uninstal driver NVIDIA.

    3. Uninstal driver.

      sudo chmod u+x NVIDIA-Linux-x86_64-384.111.run
      sudo sh ./NVIDIA-Linux-x86_64-384.111.run --uninstall -a -s -q
  4. Upgrade kernel.

  5. Restart instans GPU.

    sudo reboot
  6. Login kembali ke node GPU dan instal paket kernel-devel.

    sudo yum install -y kernel-devel-$(uname -r)
  7. Unduh dan instal driver NVIDIA yang diperlukan dari situs web NVIDIA. Contoh ini menggunakan versi 410.79.

    cd /tmp/
    sudo curl -O https://cn.download.nvidia.cn/tesla/410.79/NVIDIA-Linux-x86_64-410.79.run
    sudo chmod u+x NVIDIA-Linux-x86_64-410.79.run
    sudo sh ./NVIDIA-Linux-x86_64-410.79.run -a -s -q
    
    # warm up GPU
    sudo nvidia-smi -pm 1 || true
    sudo nvidia-smi -acp 0 || true
    sudo nvidia-smi --auto-boost-default=0 || true
    sudo nvidia-smi --auto-boost-permission=0 || true
    sudo nvidia-modprobe -u -c=0 -m || true
  8. Verifikasi bahwa /etc/rc.d/rc.local berisi konfigurasi berikut. Tambahkan jika belum ada.

    sudo nvidia-smi -pm 1 || true
    sudo nvidia-smi -acp 0 || true
    sudo nvidia-smi --auto-boost-default=0 || true
    sudo nvidia-smi --auto-boost-permission=0 || true
    sudo nvidia-modprobe -u -c=0 -m || true
  9. Restart kubelet dan Docker.

    sudo service kubelet stop
    sudo service docker restart
    sudo service kubelet start
  10. Atur kembali node GPU agar dapat dijadwalkan.

     kubectl uncordon cn-beijing.i-2ze19qyi8votgjz12345
    
     node/cn-beijing.i-2ze19qyi8votgjz12345 already uncordoned
  11. Verifikasi versi driver di pod device plugin pada node GPU.

    Jika docker ps tidak menampilkan kontainer yang berjalan di node GPU, lihat Perbaiki masalah startup kontainer pada node GPU.
     kubectl exec -n kube-system -t nvidia-device-plugin-cn-beijing.i-2ze19qyi8votgjz12345 nvidia-smi
     Thu Jan 17 00:33:27 2019
     +-----------------------------------------------------------------------------+
     | NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: N/A      |
     |-------------------------------+----------------------+----------------------+
     | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
     | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
     |===============================+======================+======================|
     |   0  Tesla P100-PCIE...  On   | 00000000:00:09.0 Off |                    0 |
     | N/A   27C    P0    28W / 250W |      0MiB / 16280MiB |      0%      Default |
     +-------------------------------+----------------------+----------------------+
    
     +-----------------------------------------------------------------------------+
     | Processes:                                                       GPU Memory |
     |  GPU       PID   Type   Process name                             Usage      |
     |=============================================================================|
     |  No running processes found                                                 |
     +-----------------------------------------------------------------------------+

Perbaiki masalah startup kontainer pada node GPU

Gejala: Setelah me-restart kubelet dan Docker pada node GPU, tidak ada kontainer yang dimulai.

sudo service kubelet stop
Redirecting to /bin/systemctl stop kubelet.service
sudo service docker stop
Redirecting to /bin/systemctl stop docker.service
sudo service docker start
Redirecting to /bin/systemctl start docker.service
sudo service kubelet start
Redirecting to /bin/systemctl start kubelet.service

sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Penyebab: Ketidaksesuaian Cgroup driver antara Docker dan kubelet. Periksa Cgroup driver untuk Docker:

sudo docker info | grep -i cgroup
Cgroup Driver: cgroupfs

Solusi: Jika output menunjukkan cgroupfs, ikuti langkah-langkah berikut.

  1. Buat cadangan /etc/docker/daemon.json, lalu perbarui dengan konfigurasi berikut.

    sudo cat >/etc/docker/daemon.json <<-EOF
    {
        "default-runtime": "nvidia",
        "runtimes": {
            "nvidia": {
                "path": "/usr/bin/nvidia-container-runtime",
                "runtimeArgs": []
            }
        },
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
            "max-size": "100m",
            "max-file": "10"
        },
        "oom-score-adjust": -1000,
        "storage-driver": "overlay2",
        "storage-opts": ["overlay2.override_kernel_check=true"],
        "live-restore": true
    }
    EOF
  2. Restart Docker dan kubelet.

    sudo service kubelet stop
    Redirecting to /bin/systemctl stop kubelet.service
    sudo service docker restart
    Redirecting to /bin/systemctl restart docker.service
    sudo service kubelet start
    Redirecting to /bin/systemctl start kubelet.service
  3. Konfirmasi bahwa Cgroup driver sekarang adalah systemd.

    sudo docker info | grep -i cgroup
    Cgroup Driver: systemd

Apa yang harus saya lakukan jika penambahan node ECS Bare Metal Instance gagal?

Gejala: Penambahan node ECS Bare Metal Instance ecs.ebmgn7 ke kluster gagal.

Penyebab: Instans ECS Bare Metal (ecs.ebmgn7) mendukung multi-instance GPU (MIG). ACK mereset pengaturan MIG yang ada saat menambahkan node ini untuk mencegah konflik. Jika reset timeout, penambahan node gagal.

Diagnosis: Periksa log deployment ACK pada host node.

sudo cat /var/log/ack-deploy.log

Jika log menunjukkan error berikut, reset MIG mengalami timeout:

command timeout: timeout 300 nvidia-smi --gpu-reset

Solusi: Tambahkan kembali node tersebut. Lihat Tambahkan node yang sudah ada.

Apa yang harus saya lakukan jika muncul Failed to initialize NVML: Unknown Error saat menjalankan kontainer GPU di Alibaba Cloud Linux 3?

Gejala: Menjalankan nvidia-smi di kontainer GPU menghasilkan:

sudo nvidia-smi

Failed to initialize NVML: Unknown Error

Penyebab: Menjalankan systemctl daemon-reload atau systemctl daemon-reexec di Alibaba Cloud Linux 3 memperbarui konfigurasi cgroup, yang mengganggu akses NVIDIA Management Library (NVML) di kontainer. Lihat isu komunitas #1671 dan #48.

Solusi: Terapkan salah satu solusi berikut berdasarkan konfigurasi Anda.

  • Menggunakan NVIDIA_VISIBLE_DEVICES=all: Tambahkan privileged: true ke securityContext kontainer.

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-gpu-pod
    spec:
      containers:
        - name: test-gpu-pod
          image: centos:7
          command:
          - sh
          - -c
          - sleep 1d
          securityContext: # Tambahkan hak istimewa ke kontainer.
            privileged: true
  • Menggunakan penjadwalan GPU bersama: Beralih ke Alibaba Cloud Linux 2 atau CentOS 7.

  • Solusi sementara cepat: Buat ulang pod aplikasi. Ini adalah perbaikan sementara—masalah dapat muncul kembali. Evaluasi dampak bisnis sebelum melanjutkan.

  • Jika tidak ada solusi di atas yang berlaku: Evaluasi apakah workload Anda dapat dijalankan pada sistem operasi berbeda, seperti Alibaba Cloud Linux 2 atau CentOS 7.

Apa yang harus saya lakukan jika kartu GPU menjadi tidak tersedia akibat error XID 119 atau XID 120?

Gejala: Kartu GPU gagal diinisialisasi. Jalankan sh nvidia-bug-report.sh — log menunjukkan error XID 119 atau XID 120. Contoh error XID 119:

123

Untuk error XID lainnya, lihat NVIDIA Common XID Errors.

Penyebab: Terjadi exception pada komponen GPU System Processor (GSP).

Solusi: Pertama, perbarui driver NVIDIA ke versi terbaru. Jika masalah tetap ada, nonaktifkan GSP. NVIDIA memperkenalkan GSP pada versi driver 510. Lihat Bab 42. Firmware GSP.

Nonaktifkan GSP berdasarkan skenario Anda:

Penskalaan keluar node baru

Buat node pool atau edit yang sudah ada. Di konfigurasi lanjutan, tambahkan label ack.aliyun.com/disable-nvidia-gsp=true. ACK secara otomatis menonaktifkan GSP pada node baru yang ditambahkan ke pool ini.

Lihat Buat dan kelola node pool.

image

Menonaktifkan GSP dapat meningkatkan waktu skala keluar node.

Menambahkan node yang sudah ada

  1. Buat node pool atau edit yang sudah ada. Tambahkan label ack.aliyun.com/disable-nvidia-gsp=true ke konfigurasi lanjutan node pool. ACK secara otomatis menonaktifkan GSP saat node yang sudah ada ditambahkan. Lihat Buat dan kelola node pool.

    Menonaktifkan GSP dapat meningkatkan waktu penambahan node.

    image

  2. Tambahkan node yang sudah ada ke node pool. Lihat Tambahkan node yang sudah ada.

Mengelola node yang sudah ada di kluster

Opsi 1: Gunakan label node pool

  1. Tambahkan label ack.aliyun.com/disable-nvidia-gsp=true ke node pool node tersebut. Lihat Edit node pool.

    image

  2. Hapus node dari kluster tanpa melepas instans ECS. Lihat Hapus node dari kluster atau node pool.

  3. Tambahkan kembali node ke kluster sebagai node yang sudah ada. Lihat Tambahkan node yang sudah ada.

Opsi 2: Nonaktifkan GSP secara manual pada node

Jika Anda tidak dapat menghapus dan menambahkan kembali node, login ke node dan nonaktifkan GSP secara manual. Lihat FAQ.

Saat melakukan upgrade dari driver 470 ke 525, nonaktifkan GSP untuk versi 525. Versi 470 tidak memiliki GSP, tetapi versi 525 dapat memicu bug GSP. Setelah upgrade, ikuti langkah-langkah FAQ untuk menonaktifkan GSP secara manual.

Cara mengisolasi kartu GPU yang rusak secara manual di kluster

Dalam penjadwalan GPU bersama, kartu GPU yang rusak dapat menyebabkan kegagalan pekerjaan berulang. Tandai GPU sebagai tidak sehat untuk mengecualikannya dari penjadwalan.

Prasyarat:

  • Untuk kluster yang menjalankan Kubernetes 1.24 atau lebih baru: versi penjadwal 1.xx.x-aliyun-6.4.3.xxx atau lebih baru.

  • Untuk kluster yang menjalankan Kubernetes 1.22: versi penjadwal 1.22.15-aliyun-6.2.4.xxx atau lebih baru.

  • Penjadwalan GPU bersama diaktifkan.

Kirim ConfigMap berikut. Ganti <node-name> dengan nama node sebenarnya, dan atur deviceId ke indeks GPU dari nvidia-smi.

apiVersion: v1
kind: ConfigMap
metadata:
  name: <node-name>-device-status   # Ganti <node-name> dengan nama node sebenarnya.
  namespace: kube-system
data:
  devices: |
    - deviceId: 0          # Jalankan nvidia-smi untuk mendapatkan indeks GPU.
      deviceType: gpu
      healthy: false

ConfigMap harus berada di namespace kube-system dengan format nama <node-name>-device-status. Di field data, deviceId adalah indeks GPU dari nvidia-smi, deviceType adalah gpu, dan healthy adalah false. Setelah dikirim, penjadwal berhenti mengalokasikan beban kerja ke GPU tersebut.

Atasi pesan "Failed to initialize NVML: Unknown Error" di kontainer GPU

Gejala: Menjalankan nvidia-smi di kontainer GPU menghasilkan:

sudo nvidia-smi

Failed to initialize NVML: Unknown Error

Masalah ini memengaruhi node yang menjalankan Ubuntu 22.04 atau Red Hat Enterprise Linux (RHEL) 9.3 64-bit.

Penyebab: Menjalankan systemctl daemon-reload atau systemctl daemon-reexec pada node memperbarui konfigurasi cgroup, yang memutus akses NVML untuk kontainer yang terdampak.

Pod yang terdampak:

  • Pod yang menentukan aliyun.com/gpu-mem di resources.limits

  • Pod yang mengatur NVIDIA_VISIBLE_DEVICES sebagai variabel lingkungan kontainer

  • Pod yang menggunakan gambar kontainer yang secara default telah mengatur NVIDIA_VISIBLE_DEVICES

Pod yang meminta sumber daya GPU melalui nvidia.com/gpu di resources.limits tidak terdampak.
NVIDIA Device Plugin dan ack-gpu-exporter keduanya secara default mengatur NVIDIA_VISIBLE_DEVICES=all.

Solusi:

  • Solusi sementara cepat: Buat ulang pod aplikasi. Ini adalah perbaikan sementara—masalah dapat muncul kembali. Evaluasi dampak bisnis sebelum melanjutkan.

  • Jika pod menggunakan NVIDIA_VISIBLE_DEVICES=all: Tambahkan privileged: true ke securityContext kontainer.

    Penting

    Pemberian hak istimewa privileged menimbulkan risiko keamanan. Lebih baik membuat ulang pod jika memungkinkan.

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-gpu-pod
    spec:
      containers:
        - name: test-gpu-pod
          image: centos:7
          command:
          - sh
          - -c
          - sleep 1d
          securityContext: # Tambahkan hak istimewa ke kontainer.
            privileged: true

Cara mencegah file /run/containerd/io.containerd.runtime.v2.task/k8s.io/<container ID>/log.json terus membesar pada node GPU

Gejala: File /run/containerd/io.containerd.runtime.v2.task/k8s.io/<container ID>/log.json terus membesar dan menghabiskan ruang disk.

Lingkungan yang terdampak: Node dengan versi nvidia-container-toolkit lebih awal dari 1.16.2.

Penyebab: Panggilan exec yang sering ke kontainer—misalnya, dari probe exec—menyebabkan runtime kontainer NVIDIA menulis entri log informasi untuk setiap panggilan.

Solusi: Login ke node. Ubah tingkat log dari info ke error dan hapus konten log yang ada.

#!/bin/bash
set -e

export CONFIG=/etc/nvidia-container-runtime/config.toml
export CONTAINER_ROOT_PATH="/run/containerd/io.containerd.runtime.v2.task/k8s.io"

if [ -f $CONFIG ];then
    # Ubah tingkat log di konfigurasi nvidia-container-runtime dari "info" ke "error".
sed -i 's@^log-level = "info"@log-level = "error"@g' $CONFIG
    # Hapus konten file log.json kontainer.
find $CONTAINER_ROOT_PATH -mindepth 2 -maxdepth 2 -name log.json -type f -exec sh -c 'echo "" > "{}"' \;
fi