Topik ini menjawab pertanyaan umum mengenai GPU, termasuk optimasi kinerja, instalasi driver, dan pemecahan masalah.
Kategorisasi masalah | Deskripsi | Tautan |
Galat GPU dan pemecahan masalah | Bagian ini mencakup isu terkait driver GPU, alat pemantauan seperti DCGM dan Prometheus, serta galat waktu proses seperti kegagalan inisialisasi NVML dan galat XID. | |
Isu cGPU (GPU terkontainerisasi) | Bagian ini mencakup konfigurasi cGPU, startup, galat waktu proses, dan isu izin terkait modul kernel. | |
Manajemen node dan kluster GPU | Bagian ini mencakup operasi tingkat kluster, termasuk deteksi penggunaan kartu GPU, dukungan virtualisasi, pemeliharaan node seperti peningkatan kernel, dan isolasi kartu rusak. |
|
Mengapa konfigurasi ECC GPU dalam kluster saya tidak konsisten?
Mode Error-Correcting Code (ECC) meningkatkan stabilitas dan keandalan GPU dengan mendeteksi serta memperbaiki galat memori GPU. Namun, mengaktifkan mode ini sedikit mengurangi memori GPU yang tersedia.
Rekomendasi mode ECC:
Nonaktifkan ECC: Cocok untuk skenario sensitif biaya dan inferensi latensi rendah, seperti inferensi real-time online.
Aktifkan ECC: Cocok untuk aplikasi yang memerlukan konsistensi dan integritas data tinggi, seperti server database, sistem keuangan, komputasi ilmiah, dan komputasi kinerja tinggi (HPC).
Karena alasan tersebut, kami tidak menginisialisasi mode ECC secara seragam. Hal ini dapat menyebabkan konfigurasi ECC yang tidak konsisten di seluruh node GPU dalam sebuah kluster.
Cara mengatur mode ECC untuk node GPU
Anda dapat menjalankan perintah berikut untuk memeriksa status mode ECC saat ini.
nvidia-smiKeluaran 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 keluaran tersebut, kolom Volatile Uncorr. ECC menunjukkan statusnya. Nilai
0menunjukkan bahwa ECC diaktifkan dan tidak ada galat yang terjadi. NilaiOffmenunjukkan bahwa ECC dinonaktifkan.Anda dapat menjalankan salah satu perintah berikut untuk mengaktifkan atau menonaktifkan mode ECC sesuai kebutuhan.
Aktifkan mode ECC untuk semua GPU pada node.
nvidia-smi -e 1Nonaktifkan mode ECC untuk semua GPU pada node.
nvidia-smi -e 0
Setelah Anda mengubah mode ECC, Anda harus me-restart sistem operasi agar perubahan tersebut berlaku.
PentingSimpan semua data yang diperlukan sebelum me-restart node.
Setelah restart, Anda dapat menjalankan
nvidia-smilagi untuk memeriksa status mode ECC dan memastikan bahwa mode tersebut telah diaktifkan atau dinonaktifkan. Keluaran berikut menunjukkan bahwa mode 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 Container Service for Kubernetes mendukung instans vGPU-dipercepat?
Instans vGPU-dipercepat memerlukan lisensi GRID dari NVIDIA agar berfungsi dengan benar. Untuk menggunakan instans vGPU-dipercepat, Anda harus membeli lisensi GRID dari NVIDIA dan membangun server lisensi sendiri.
Karena Alibaba Cloud tidak menyediakan server lisensi, instans vGPU-dipercepat tidak dapat digunakan secara langsung, bahkan dalam kluster yang dipercepat vGPU. Oleh karena itu, konsol Container Service for Kubernetes tidak lagi mendukung pemilihan instans vGPU-dipercepat sebagai node kluster.
Instans vGPU-dipercepat yang tidak didukung mencakup instans ECS dengan awalan seperti ecs.vgn5i, ecs.vgn6i, ecs.vgn7i, dan ecs.sgn7i. Untuk menggunakan instans ini, Anda harus membeli lisensi GRID dari NVIDIA dan membangun server lisensi sendiri.
Anda memerlukan server lisensi untuk memperbarui lisensi driver NVIDIA untuk instans vGPU-dipercepat dalam kluster ACK.
Anda dapat membeli instans ECS dan mengikuti tutorial resmi NVIDIA untuk membangun server lisensi. Untuk informasi lebih lanjut, lihat NVIDIA.
Jika Anda telah menyiapkan server lisensi, Anda dapat mengikuti langkah-langkah berikut untuk menambahkan instans vGPU-dipercepat ke kluster ACK.
Tambahkan instans vGPU-dipercepat ke kluster ACK
Buka Kuota Hak Istimewa dan ajukan fitur citra OS kustom.
Buat citra OS kustom berdasarkan CentOS 7.x atau Alibaba Cloud Linux 2. Citra tersebut harus memiliki driver NVIDIA GRID yang terinstal dan lisensi GRID yang dikonfigurasi dengan benar. Untuk informasi lebih lanjut, lihat Buat citra kustom dari instans dan Instal driver GRID pada instans vGPU-dipercepat (Linux).
Buat kelompok node. Untuk informasi lebih lanjut, lihat Buat dan kelola kelompok node.
Tambahkan instans vGPU-dipercepat ke kelompok node yang dibuat pada Langkah 3. Untuk informasi lebih lanjut, lihat Tambahkan node yang sudah ada.
Next step: Update the NVIDIA driver license for vGPU-accelerated instances in an ACK cluster
Untuk informasi tentang cara memperbarui lisensi driver NVIDIA untuk instans vGPU-dipercepat dalam kluster ACK, lihat Perbarui lisensi driver NVIDIA untuk instans vGPU-dipercepat (vGPU) dalam kluster ACK.
Cara memperbarui kernel secara manual pada node GPU dalam kluster yang sudah ada
Bagian ini menjelaskan cara memperbarui kernel secara manual pada node GPU dalam kluster yang sudah ada.
Perbarui kernel jika versinya lebih awal dari
3.10.0-957.21.3.Konfirmasi versi kernel target dan lanjutkan dengan hati-hati.
Solusi ini tidak mencakup proses pembaruan kernel itu sendiri. Solusi ini hanya menjelaskan cara memperbarui driver NVIDIA setelah Anda memperbarui kernel.
Tetapkan node GPU ke status tidak dapat dijadwalkan. Contoh ini menggunakan node cn-beijing.i-2ze19qyi8votgjz12345.
kubectl cordon cn-beijing.i-2ze19qyi8votgjz12345 node/cn-beijing.i-2ze19qyi8votgjz12345 already cordonedKosongkan node GPU tempat Anda ingin memperbarui driver.
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 evictedUninstall driver NVIDIA saat ini.
CatatanLangkah ini meng-uninstall driver versi 384.111. Jika versi driver Anda berbeda, unduh paket instalasi driver yang sesuai dari situs web NVIDIA dan ganti nomor versinya sesuai kebutuhan.
Login ke node GPU dan jalankan
nvidia-smiuntuk memeriksa versi driver.sudo nvidia-smi -a | grep 'Driver Version' Driver Version : 384.111Unduh paket instalasi driver NVIDIA.
sudo cd /tmp/ sudo curl -O https://cn.download.nvidia.cn/tesla/384.111/NVIDIA-Linux-x86_64-384.111.runCatatanAnda harus menggunakan paket instalasi ini untuk meng-uninstall driver NVIDIA.
Uninstall driver NVIDIA saat ini.
sudo chmod u+x NVIDIA-Linux-x86_64-384.111.run sudo sh ./NVIDIA-Linux-x86_64-384.111.run --uninstall -a -s -q
Perbarui kernel.
Restart instans GPU.
sudo rebootLogin kembali ke node GPU dan instal paket kernel-devel yang sesuai.
sudo yum install -y kernel-devel-$(uname -r)Buka situs web NVIDIA untuk mengunduh dan menginstal driver NVIDIA yang diperlukan. Contoh ini menggunakan versi 410.79.
sudo 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 || truePeriksa file /etc/rc.d/rc.local untuk memastikan berisi konfigurasi berikut. Jika tidak, tambahkan secara manual.
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 || trueRestart kubelet dan Docker.
sudo service kubelet stop sudo service docker restart sudo service kubelet startTetapkan kembali node GPU ke status dapat dijadwalkan.
kubectl uncordon cn-beijing.i-2ze19qyi8votgjz12345 node/cn-beijing.i-2ze19qyi8votgjz12345 already uncordonedVerifikasi versi driver dalam pod device plugin 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 | +-----------------------------------------------------------------------------+CatatanJika Anda menjalankan perintah
docker psdan menemukan bahwa tidak ada kontainer yang dimulai pada node GPU, lihat Perbaiki isu startup kontainer pada node GPU.
Perbaiki isu startup kontainer pada node GPU
Pada node GPU dengan versi Kubernetes tertentu, Anda mungkin menemukan bahwa tidak ada kontainer yang dimulai setelah Anda me-restart kubelet dan Docker.
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 NAMESJalankan perintah berikut untuk memeriksa driver Cgroup untuk Docker.
sudo docker info | grep -i cgroup
Cgroup Driver: cgroupfsKeluaran tersebut menunjukkan bahwa driver Cgroup adalah `cgroupfs`.
Ikuti langkah-langkah berikut untuk memperbaiki isu tersebut.
Buat cadangan file /etc/docker/daemon.json. Kemudian, jalankan perintah berikut untuk memperbarui /etc/docker/daemon.json.
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 } EOFRestart 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.serviceKonfirmasi bahwa driver Cgroup untuk Docker adalah systemd.
sudo docker info | grep -i cgroup Cgroup Driver: systemd
Apa yang harus saya lakukan jika penambahan node ECS Bare Metal Instance gagal?
Instans ECS Bare Metal (ecs.ebmgn7) mendukung multi-instans GPU (MIG). Untuk mencegah pengaturan MIG yang sudah ada memengaruhi penerapan node, sistem mereset semua pengaturan MIG yang ada setiap kali node jenis ini ditambahkan ke kluster. Waktu reset ini bervariasi. Jika reset memakan waktu terlalu lama, skrip penambahan node mungkin timeout, sehingga operasi gagal.
Jika penambahan node dari keluarga instans ini gagal, Anda dapat menjalankan perintah berikut pada host node:
sudo cat /var/log/ack-deploy.logPeriksa apakah keluaran berisi galat berikut:
command timeout: timeout 300 nvidia-smi --gpu-resetJika galat ini muncul, kegagalan disebabkan oleh reset MIG. Anda dapat menambahkan kembali node tersebut. Untuk informasi lebih lanjut, lihat Tambahkan node yang sudah ada.
Apa yang harus saya lakukan jika muncul "Failed to initialize NVML: Unknown Error" saat menjalankan kontainer GPU pada Alibaba Cloud Linux 3?
Gejala
Saat Anda menjalankan nvidia-smi dalam kontainer GPU, galat berikut dilaporkan.
sudo nvidia-smi
Failed to initialize NVML: Unknown ErrorPenyebab
Saat Anda menggunakan systemd pada Alibaba Cloud Linux 3, operasi seperti systemctl daemon-reload dan systemctl daemon-reexec memperbarui konfigurasi terkait cgroup. Hal ini dapat mengganggu operasi normal perangkat GPU NVIDIA dalam kontainer. Untuk detail lebih lanjut, lihat isu komunitas 1671 dan 48.
Solusi
Jika isu ini terjadi, Anda dapat mencoba solusi berikut.
Kasus 1: Jika Pod aplikasi Anda meminta sumber daya GPU dengan mengatur variabel lingkungan NVIDIA_VISIBLE_DEVICES=all untuk kontainer, evaluasi apakah Anda dapat menambahkan hak istimewa ke kontainer tersebut. Contoh berikut menunjukkan cara menambahkan hak istimewa.
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: trueKasus 2: Untuk aplikasi yang menggunakan penjadwalan GPU bersama, kami merekomendasikan menggunakan Alibaba Cloud Linux 2 atau CentOS 7.
Kasus 3: Buat ulang Pod aplikasi. Sebelum melakukan tindakan ini, evaluasi dampak potensial terhadap bisnis Anda. Solusi ini tidak menjamin bahwa isu tidak akan terjadi kembali.
Kasus 4: Jika solusi di atas tidak berlaku, evaluasi apakah bisnis Anda dapat menggunakan sistem operasi berbeda, seperti Alibaba Cloud Linux 2 atau CentOS 7.
Apa yang harus saya lakukan jika kartu GPU menjadi tidak tersedia akibat galat XID 119 atau XID 120?
Gejala
Saat Anda menggunakan GPU, kartu tersebut mungkin menjadi tidak tersedia. Misalnya, saat Anda menggunakan GPU pada sistem Linux, pesan galat mungkin menunjukkan bahwa kartu GPU gagal diinisialisasi. Setelah Anda menjalankan perintah sh nvidia-bug-report.sh, Anda mungkin melihat pesan galat XID 119 atau XID 120 dalam log yang dihasilkan. Gambar berikut menunjukkan contoh galat XID 119:

Untuk informasi tentang galat XID lainnya, kunjungi NVIDIA Common XID Errors.
Penyebab
Isu tersebut mungkin terjadi karena adanya pengecualian pada komponen GSP. Anda dapat memperbarui driver NVIDIA ke versi terbaru. Jika isu tetap berlanjut setelah pembaruan, kami merekomendasikan agar Anda menonaktifkan komponen GSP.
Untuk informasi lebih lanjut tentang GSP, lihat Bab 42. Firmware GSP dalam dokumentasi resmi NVIDIA.
Solusi
Bagian berikut menjelaskan cara menonaktifkan GSP dalam berbagai skenario.
Menambahkan node baru
Anda dapat membuat kelompok node baru atau mengedit konfigurasi kelompok node yang sudah ada. Dalam Konfigurasi Lanjutan, tambahkan tag ack.aliyun.com/disable-nvidia-gsp=true ke kelompok node. Saat Anda menambahkan node baru, ACK secara otomatis menerapkan konfigurasi yang diperlukan untuk menonaktifkan GSP pada node tersebut.
Untuk informasi lebih lanjut tentang titik masuk operasi dan item konfigurasi kelompok node, lihat Buat dan kelola kelompok node.

Langkah-langkah untuk menonaktifkan GSP dapat meningkatkan latensi penambahan node.
Menambahkan node yang sudah ada
Anda dapat membuat kelompok node baru atau mengedit konfigurasi kelompok node tempat Anda ingin menambahkan node. Dalam Konfigurasi Lanjutan, tambahkan tag
ack.aliyun.com/disable-nvidia-gsp=trueke kelompok node. Setelah Anda menambahkan node yang sudah ada ke kelompok node, ACK secara otomatis menerapkan konfigurasi yang diperlukan untuk menonaktifkan GSP pada node tersebut.Untuk informasi lebih lanjut tentang titik masuk operasi dan item konfigurasi kelompok node, lihat Buat dan kelola kelompok node.
CatatanLangkah-langkah untuk menonaktifkan GSP dapat meningkatkan latensi penambahan node ke kluster.
Tambahkan node yang sudah ada ke kelompok node. Untuk informasi lebih lanjut tentang titik masuk operasi dan catatan terkait, lihat Tambahkan node yang sudah ada.
Mengelola node yang sudah ada dalam kluster
Anda dapat menonaktifkan GSP pada node yang sudah ada dengan cara berikut.
Nonaktifkan GSP menggunakan tag kelompok node
Tambahkan tag
ack.aliyun.com/disable-nvidia-gsp=trueke kelompok node milik node tersebut.Untuk informasi lebih lanjut tentang titik masuk operasi dan item konfigurasi kelompok node, lihat Edit kelompok node.

Hapus node dari kluster, tetapi jangan lepas instans ECS-nya. Untuk informasi lebih lanjut, lihat Hapus node.
Tambahkan kembali node yang dihapus ke kluster sebagai node yang sudah ada. Untuk informasi lebih lanjut tentang titik masuk operasi dan catatan terkait, lihat Tambahkan node yang sudah ada.
Login ke node untuk menonaktifkan GSP secara manual
Jika Anda tidak dapat menonaktifkan GSP pada node Anda dengan menghapus lalu menambahkannya kembali ke kluster, Anda dapat login ke node dan melakukan langkah-langkah untuk menonaktifkan GSP secara manual. Untuk informasi lebih lanjut, lihat FAQ.
NVIDIA memperkenalkan GSP pada versi driver 510. Misalnya, jika Anda login ke node dan memperbarui driver secara manual dari versi 470 ke 525, Anda tidak perlu menonaktifkan GSP untuk versi 470. Namun, bug GSP mungkin dipicu setelah Anda memperbarui ke versi 525. Setelah pembaruan driver selesai, lihat FAQ untuk melakukan langkah-langkah menonaktifkan GSP secara manual.
Cara mengisolasi GPU rusak secara manual dalam kluster?
Saat Anda menggunakan penjadwalan GPU bersama, GPU rusak dalam kluster dapat menyebabkan Job gagal. Jika Job dijalankan ulang, Job tersebut mungkin dijadwalkan ke GPU rusak yang sama dan gagal lagi. Untuk mencegah kegagalan berulang, Anda dapat menandai GPU rusak tersebut secara manual. Penjadwal tidak akan lagi menggunakan GPU yang ditandai, sehingga memberikan isolasi kesalahan.
Versi penjadwal dan kluster Anda harus memenuhi persyaratan berikut:
Untuk kluster yang menjalankan Kubernetes 1.24 atau lebih baru, versi penjadwal harus 1.xx.x-aliyun-6.4.3.xxx atau lebih baru.
Untuk kluster yang menjalankan Kubernetes 1.22, versi penjadwal harus 1.22.15-aliyun-6.2.4.xxx atau lebih baru.
Kluster harus menggunakan penjadwalan GPU bersama.
Untuk menandai GPU rusak, Anda dapat mengirimkan ConfigMap khusus ke kluster seperti pada contoh berikut:
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 nomor ordinal GPU.
deviceType: gpu
healthy: falseConfigMap harus berada dalam namespace kube-system. Nama ConfigMap harus berupa nama node yang meng-host GPU rusak, dengan akhiran -device-status. Di bidang data, deviceId adalah nomor ordinal GPU yang diperoleh dari perintah nvidia-smi, deviceType adalah gpu, dan healthy adalah false. Setelah Anda mengirimkan konfigurasi tersebut, penjadwal akan mengisolasi GPU yang sesuai.
Atasi pesan "Failed to initialize NVML: Unknown Error" dalam kontainer GPU
Gejala
Saat Anda menjalankan nvidia-smi dalam kontainer GPU, Anda mungkin menerima galat berikut. Isu ini terjadi pada node yang menjalankan Ubuntu 22.04 atau Red Hat Enterprise Linux (RHEL) 9.3 64-bit.
sudo nvidia-smi
Failed to initialize NVML: Unknown ErrorPenyebab
Menjalankan operasi seperti systemctl daemon-reload atau systemctl daemon-reexec pada node memperbarui konfigurasi cgroup. Perubahan ini dapat memengaruhi operasi normal perangkat GPU NVIDIA dalam kontainer.
Isu ini memengaruhi Pod yang meminta sumber daya GPU dengan cara berikut:
Pod menentukan sumber daya
aliyun.com/gpu-memdalamresources.limits.Pod mengatur variabel lingkungan
NVIDIA_VISIBLE_DEVICESuntuk kontainer agar mengakses sumber daya GPU pada node.Pod menggunakan citra kontainer yang secara default telah mengatur variabel lingkungan
NVIDIA_VISIBLE_DEVICES, dan Pod tersebut perlu mengakses sumber daya GPU pada node.
Pod yang meminta sumber daya GPU dengan menentukan sumber daya
nvidia.com/gpudalamresources.limitstidak terpengaruh.Komponen NVIDIA Device Plugin dan ack-gpu-exporter secara default mengatur variabel lingkungan
NVIDIA_VISIBLE_DEVICES=alluntuk Pod.
Solusi
Anda dapat membuat ulang Pod aplikasi untuk memperbaiki sementara isu ini. Sebelum melakukan operasi ini, evaluasi dampak potensial terhadap layanan Anda. Jika isu muncul kembali, Anda harus membuat ulang Pod tersebut lagi.
Jika Pod aplikasi Anda meminta sumber daya GPU dengan mengatur variabel lingkungan
NVIDIA_VISIBLE_DEVICES=all, tambahkan hak aksesprivilegedke kontainer aplikasi. Contoh konfigurasi berikut menunjukkan hal tersebut:PentingPenggunaan hak akses
privilegedmenimbulkan risiko keamanan. Sebagai alternatif, Anda dapat membuat ulang Pod aplikasi. Membuat ulang Pod merupakan perbaikan sementara dan tidak mencegah isu terjadi kembali.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 bertambah besar pada node GPU
Gejala
File /run/containerd/io.containerd.runtime.v2.task/k8s.io/<container ID>/log.json pada node GPU terus bertambah besar.
Analisis
Prasyarat: Versi nvidia-container-toolkit pada node lebih awal dari 1.16.2.
Penyebab: Isu ini disebabkan oleh panggilan `exec` yang sering ke kontainer pada node GPU, misalnya ketika Pod dikonfigurasi dengan probe `exec`. Setiap kali operasi `exec` dipanggil, runtime kontainer NVIDIA mencetak log informasi.
Hasil: File /run/containerd/io.containerd.runtime.v2.task/k8s.io/<container ID>/log.json terus bertambah besar dan mengonsumsi ruang disk.
Solusi
Anda dapat login ke node dan menjalankan skrip berikut:
#!/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 dalam konfigurasi nvidia-container-runtime dari "info" menjadi "error".
sed -i 's@^log-level = "info"@log-level = "error"@g' $CONFIG
# Kosongkan isi file log.json kontainer.
find $CONTAINER_ROOT_PATH -mindepth 2 -maxdepth 2 -name log.json -type f -exec sh -c 'echo "" > "{}"' \;
fi