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:
-
Periksa status ECC saat ini.
nvidia-smiOutput 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:0berarti ECC diaktifkan tanpa error;Offberarti ECC dinonaktifkan. -
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``
-
-
Restart sistem operasi agar perubahan diterapkan.
PentingSimpan semua data yang diperlukan sebelum me-restart node.
-
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:
-
Buka Privilege Quota dan minta fitur custom image OS.
-
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).
-
Buat node pool. Lihat Buat dan kelola node pool.
-
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.
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.
-
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 -
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 -
Uninstal driver NVIDIA saat ini.
CatatanContoh ini menggunakan versi driver 384.111. Untuk versi berbeda, unduh paket yang sesuai dari NVIDIA dan ganti nomor versinya.
-
Login ke node GPU dan periksa versi driver menggunakan
nvidia-smi.sudo nvidia-smi -a | grep 'Driver Version' Driver Version : 384.111 -
Unduh paket instalasi driver NVIDIA.
cd /tmp/ && sudo curl -O https://cn.download.nvidia.cn/tesla/384.111/NVIDIA-Linux-x86_64-384.111.runCatatanAnda harus menggunakan paket instalasi untuk meng-uninstal driver NVIDIA.
-
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
-
-
Upgrade kernel.
-
Restart instans GPU.
sudo reboot -
Login kembali ke node GPU dan instal paket kernel-devel.
sudo yum install -y kernel-devel-$(uname -r) -
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 -
Verifikasi bahwa
/etc/rc.d/rc.localberisi 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 -
Restart kubelet dan Docker.
sudo service kubelet stop sudo service docker restart sudo service kubelet start -
Atur kembali node GPU agar dapat dijadwalkan.
kubectl uncordon cn-beijing.i-2ze19qyi8votgjz12345 node/cn-beijing.i-2ze19qyi8votgjz12345 already uncordoned -
Verifikasi versi driver di pod device plugin pada node GPU.
Jika
docker pstidak 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.
-
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 -
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 -
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: Tambahkanprivileged: truekesecurityContextkontainer.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:

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.

Menonaktifkan GSP dapat meningkatkan waktu skala keluar node.
Menambahkan node yang sudah ada
-
Buat node pool atau edit yang sudah ada. Tambahkan label
ack.aliyun.com/disable-nvidia-gsp=trueke 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.

-
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
-
Tambahkan label
ack.aliyun.com/disable-nvidia-gsp=trueke node pool node tersebut. Lihat Edit node pool.
-
Hapus node dari kluster tanpa melepas instans ECS. Lihat Hapus node dari kluster atau node pool.
-
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.xxxatau lebih baru. -
Untuk kluster yang menjalankan Kubernetes 1.22: versi penjadwal
1.22.15-aliyun-6.2.4.xxxatau 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-memdiresources.limits -
Pod yang mengatur
NVIDIA_VISIBLE_DEVICESsebagai variabel lingkungan kontainer -
Pod yang menggunakan gambar kontainer yang secara default telah mengatur
NVIDIA_VISIBLE_DEVICES
Pod yang meminta sumber daya GPU melaluinvidia.com/gpudiresources.limitstidak 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: Tambahkanprivileged: truekesecurityContextkontainer.PentingPemberian hak istimewa
privilegedmenimbulkan 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