ACK kümelerindeki yaygın GPU sorunlarını; sürücü kurulumu, NVML hataları ve düğüm yönetimi dahil olmak üzere çözün.
Sorun kategorisi | Açıklama | Bağlantı |
GPU hataları ve sorun giderme | GPU sürücü sorunları, DCGM ve Prometheus gibi izleme araçları ve NVML başlatma hataları ile XID hataları gibi çalışma zamanı hataları. | |
cGPU (konteynerleştirilmiş GPU) sorunları | cGPU yapılandırması, başlatma, çalışma zamanı hataları ve çekirdek modülü izin sorunları. | |
GPU düğümü ve küme yönetimi | GPU kartı kullanım algılama, sanallaştırma desteği, çekirdek yükseltmeleri gibi düğüm bakımı ve arızalı kart izolasyonu dahil küme düzeyinde işlemler. |
Kümemdeki GPU ECC yapılandırmaları neden tutarsız?
Hata Düzeltme Kodu (ECC) modu, GPU belleği hatalarını algılar ve düzeltir; bu da mevcut GPU belleğini biraz azaltmak pahasına kararlılığı ve güvenilirliği artırır. ACK, tek tip ECC ayarlarını zorunlu kılmaz, bu nedenle yapılandırmalar düğümler arasında farklılık gösterebilir.
ECC'yi ne zaman etkinleştirmeli veya devre dışı bırakmalısınız:
|
|
|
|
|
|
|
|
|
Bir GPU düğümü için ECC modunu ayarlama:
-
Mevcut ECC durumunu kontrol edin.
nvidia-smiBeklenen çıktı:
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 | +---------------------------------------------------------------------------------------+Volatile Uncorr. ECCsütununda:0değeri ECC'nin etkin olduğunu ve hata olmadığını gösterir;Offdeğeri ECC'nin devre dışı olduğunu gösterir. -
İhtiyaca göre ECC'yi etkinleştirin veya devre dışı bırakın.
Düğümdeki tüm GPU'lar için ECC'yi etkinleştirin:
nvidia-smi -e 1Düğümdeki tüm GPU'lar için ECC'yi devre dışı bırakın:
nvidia-smi -e 0
-
Değişikliğin etkili olması için işletim sistemini yeniden başlatın.
ÖnemliDüğümü yeniden başlatmadan önce gerekli tüm verileri kaydedin.
-
Yeni ECC durumunu
nvidia-smikomutuyla doğrulayın. Aşağıdaki çıktıda ECC'nin devre dışı olduğu gösterilmektedir: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 | +---------------------------------------------------------------------------------------+
ACK vGPU hızlandırmalı örnekleri destekler mi?
vGPU hızlandırmalı örnekler, NVIDIA'dan GRID Lisansı gerektirir. Bir lisans satın alın ve kendi lisans sunucunuzu kurun.
Alibaba Cloud lisans sunucusu sağlamadığından, vGPU hızlandırmalı kümelerde bile olsa vGPU hızlandırmalı örnekler doğrudan kullanılamaz. ACK konsolu artık küme düğümleri olarak vGPU hızlandırmalı örneklerin seçilmesini desteklememektedir.
Desteklenmeyen örnek önekleri arasında ecs.vgn5i, ecs.vgn6i, ecs.vgn7i ve ecs.sgn7i bulunur. Bu örnekleri kullanmak için NVIDIA'dan bir GRID Lisansı satın almanız ve kendi lisans sunucunuzu kurmanız gerekir. Bir Elastic Compute Service (ECS) örneği kullanın ve resmi NVIDIA kılavuzunu izleyin. Bkz. NVIDIA.
vGPU hızlandırmalı örnekler için NVIDIA sürücü lisansını güncellemek amacıyla bir lisans sunucusu gereklidir.
Bir ECS örneği satın alın ve bir lisans sunucusu kurmak için resmi NVIDIA kılavuzunu takip edin.
Bir lisans sunucunuz varsa, vGPU hızlandırmalı örnekleri bir ACK kümesine eklemek için aşağıdaki adımları izleyin.
vGPU hızlandırmalı örnekleri bir ACK kümesine ekleme:
Ayrıcalık Kotası sayfasına gidin ve özel işletim sistemi görüntüsü özelliği için istekte bulunun.
NVIDIA GRID sürücüsü ve GRID Lisansı yapılandırılmış CentOS 7.x veya Alibaba Cloud Linux 2 tabanlı özel bir işletim sistemi görüntüsü oluşturun. Bkz. Bir örnekten özel görüntü oluşturma ve vGPU hızlandırmalı bir örneğe GRID sürücüsü yükleme (Linux).
Bir düğüm havuzu oluşturun. Bkz. Düğüm havuzu oluşturma ve yönetme.
vGPU hızlandırmalı örnekleri düğüm havuzuna ekleyin. Bkz. Mevcut düğümleri ekleme.
Sonraki adımlar: Bkz. ACK kümesindeki vGPU hızlandırmalı (vGPU) örnekler için NVIDIA sürücü lisansını güncelleme.
Mevcut bir kümedeki GPU düğümünde çekirdeği manuel olarak nasıl yükseltebilirim?
Çekirdeği yükselttikten sonra GPU işlevselliğini geri yüklemek için NVIDIA sürücüsünü yeniden yükleyin.
Çekirdeği yalnızca sürümü 3.10.0-957.21.3 değerinden eskiyse yükseltin.
Bu yordam, çekirdek yükseltme işlemini kapsamaz. Yalnızca çekirdek yükseltildikten sonra gerekli olan NVIDIA sürücüsünün yeniden yüklenmesini açıklar.
-
GPU düğümünü planlanamaz olarak işaretlemek için kordonlayın. Bu örnekte
cn-beijing.i-2ze19qyi8votgjz12345düğümü kullanılmaktadır.kubectl cordon cn-beijing.i-2ze19qyi8votgjz12345 node/cn-beijing.i-2ze19qyi8votgjz12345 already cordoned -
GPU düğümünü boşaltın.
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 -
Mevcut NVIDIA sürücüsünü kaldırın.
NotBu örnekte sürücü sürümü 384.111 kullanılmaktadır. Farklı bir sürüm için eşleşen paketi NVIDIA'dan indirin ve sürüm numarasını değiştirin.
-
GPU düğümünde oturum açın ve
nvidia-smikullanarak sürücü sürümünü kontrol edin.sudo nvidia-smi -a | grep 'Driver Version' Driver Version : 384.111 -
NVIDIA sürücü yükleme paketini indirin.
cd /tmp/ && sudo curl -O https://cn.download.nvidia.cn/tesla/384.111/NVIDIA-Linux-x86_64-384.111.runNotNVIDIA sürücüsünü kaldırmak için yükleme paketini kullanmanız gerekir.
-
Sürücüyü kaldırın.
sudo chmod u+x NVIDIA-Linux-x86_64-384.111.run sudo sh ./NVIDIA-Linux-x86_64-384.111.run --uninstall -a -s -q
-
Çekirdeği yükseltin.
-
GPU örneğini yeniden başlatın.
sudo reboot -
GPU düğümüne tekrar oturum açın ve kernel-devel paketini yükleyin.
sudo yum install -y kernel-devel-$(uname -r) -
Gerekli NVIDIA sürücüsünü NVIDIA web sitesinden indirip yükleyin. Bu örnekte 410,79 sürümü kullanılmaktadır.
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 -
/etc/rc.d/rc.localdosyasının aşağıdaki yapılandırmayı içerdiğini doğrulayın. Eksikse ekleyin.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 -
kubelet ve Docker'ı yeniden başlatın.
sudo service kubelet stop sudo service docker restart sudo service kubelet start -
GPU düğümünü tekrar planlanabilir duruma getirin.
kubectl uncordon cn-beijing.i-2ze19qyi8votgjz12345 node/cn-beijing.i-2ze19qyi8votgjz12345 already uncordoned -
GPU düğümündeki cihaz eklentisi pod'unda sürücü sürümünü doğrulayın.
Eğer
docker psGPU düğümünde çalışan herhangi bir konteyner göstermiyorsa bkz. GPU düğümlerindeki konteyner başlatma sorunlarını çözme .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 | +-----------------------------------------------------------------------------+
GPU düğümlerindeki konteyner başlatma sorunlarını çözme
Belirti: Bir GPU düğümünde kubelet ve Docker yeniden başlatıldıktan sonra hiçbir konteyner başlamaz.
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
Neden: Docker ve kubelet arasında Cgroup sürücüsü uyumsuzluğu. Docker için Cgroup sürücüsünü kontrol edin:
sudo docker info | grep -i cgroup
Cgroup Driver: cgroupfs
Çözüm: Çıktı cgroupfs gösteriyorsa aşağıdaki adımları izleyin.
-
/etc/docker/daemon.jsondosyasını yedekleyin, ardından aşağıdaki yapılandırmayla güncelleyin.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 -
Docker ve kubelet'i yeniden başlatın.
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 -
Cgroup sürücüsünün artık
systemdolduğunu doğrulayın.sudo docker info | grep -i cgroup Cgroup Driver: systemd
Bir ECS Bare Metal Instance düğümü ekleme işlemi başarısız olursa ne yapmalıyım?
Belirti: Bir kümeye ecs.ebmgn7 ECS Bare Metal Instance düğümü eklenemez.
Neden: ECS Bare Metal Instance'lar (ecs.ebmgn7) çok örnekli GPU'yu (MIG) destekler. ACK, çakışmaları önlemek için bu düğümleri eklerken mevcut MIG ayarlarını sıfırlar. Sıfırlama zaman aşımına uğrarsa düğüm ekleme işlemi başarısız olur.
Tanılama: Düğüm ana bilgisayarındaki ACK dağıtım günlüğünü kontrol edin.
sudo cat /var/log/ack-deploy.log
Günlükte şu hata görünüyorsa MIG sıfırlaması zaman aşımına uğramıştır:
command timeout: timeout 300 nvidia-smi --gpu-reset
Çözüm: Düğümü tekrar ekleyin. Bkz. Mevcut düğümleri ekleme.
Alibaba Cloud Linux 3 üzerinde bir GPU konteyneri çalıştırırken Failed to initialize NVML: Unknown Error hatası alırsam ne yapmalıyım?
Belirti: Bir GPU konteynerinde nvidia-smi çalıştırıldığında şu çıktı alınır:
sudo nvidia-smi
Failed to initialize NVML: Unknown Error
Neden: Alibaba Cloud Linux 3 üzerinde systemctl daemon-reload veya systemctl daemon-reexec çalıştırmak, cgroup yapılandırmalarını günceller ve bu da konteynerlerdeki NVIDIA Management Library (NVML) erişimini engeller. Topluluk sorunlarına bkz. #1671 ve #48.
Çözüm: Kurulumunuza bağlı olarak aşağıdaki çözümlerden birini uygulayın.
-
**NVIDIA_VISIBLE_DEVICES=all** kullanıyorsanız: Konteynerin
securityContextbölümüneprivileged: trueekleyin.apiVersion: v1 kind: Pod metadata: name: test-gpu-pod spec: containers: - name: test-gpu-pod image: centos:7 command: - sh - -c - sleep 1d securityContext: # Add privileged permissions to the container. privileged: true Paylaşılan GPU zamanlaması kullanıyorsanız: Alibaba Cloud Linux 2 veya CentOS 7'ye geçiş yapın.
Hızlı geçici çözüm: Uygulama pod'unu yeniden oluşturun. Bu geçici bir çözümdür; sorun tekrar oluşabilir. İşlemeden önce iş etkisini değerlendirin.
Yukarıdakilerden hiçbiri uygulanamıyorsa: İş yükünüzün Alibaba Cloud Linux 2 veya CentOS 7 gibi farklı bir işletim sisteminde çalışıp çalışamayacağını değerlendirin.
XID 119 veya XID 120 hataları nedeniyle bir GPU kartı kullanılamaz hale gelirse ne yapmalıyım?
Belirti: Bir GPU kartı başlatılamaz. sh nvidia-bug-report.sh komutunu çalıştırın — günlükte XID 119 veya XID 120 hataları gösterilir. Örnek XID 119 hatası:

Diğer XID hataları için bkz. NVIDIA Common XID Errors .
Neden: GPU Sistem İşlemcisi (GSP) bileşeninde bir istisna oluşması.
Çözüm: Önce NVIDIA sürücüsünü en son sürüme güncelleyin. Sorun devam ederse GSP'yi devre dışı bırakın. NVIDIA, GSP'yi 510 sürümündeki sürücülerde tanıttı. Bkz. Chapter 42. GSP firmware.
Senaryonuzda GSP'yi devre dışı bırakma:
Yeni düğümlerin ölçeklendirilmesi
Bir düğüm havuzu oluşturun veya mevcut olanı düzenleyin. Gelişmiş yapılandırmada ack.aliyun.com/disable-nvidia-gsp=true etiketini ekleyin. ACK, bu havuza eklenen yeni düğümlerde GSP'yi otomatik olarak devre dışı bırakır.
Bkz. Düğüm havuzu oluşturma ve yönetme.

GSP'yi devre dışı bırakmak, düğüm ölçeklendirme süresini artırabilir.
Mevcut düğümlerin eklenmesi
-
Bir düğüm havuzu oluşturun veya mevcut olanı düzenleyin. Düğüm havuzunun gelişmiş yapılandırmasına
ack.aliyun.com/disable-nvidia-gsp=trueetiketini ekleyin. ACK, mevcut düğümler eklendiğinde GSP'yi otomatik olarak devre dışı bırakır. Bkz. Düğüm havuzu oluşturma ve yönetme.GSP'yi devre dışı bırakmak, düğüm ekleme süresini artırabilir.

Mevcut düğümleri düğüm havuzuna ekleyin. Bkz. Mevcut düğümleri ekleme.
Kümedeki mevcut düğümlerin yönetilmesi
Seçenek 1: Düğüm havuzu etiketi kullanma
-
Düğümün düğüm havuzuna
ack.aliyun.com/disable-nvidia-gsp=trueetiketini ekleyin. Bkz. Düğüm havuzunu düzenleme.
ECS örneğini serbest bırakmadan düğümü kümeden kaldırın. Bkz. Bir düğümü kümeden veya düğüm havuzundan kaldırma.
Düğümü mevcut bir düğüm olarak kümeye tekrar ekleyin. Bkz. Mevcut düğümleri ekleme.
Seçenek 2: Düğümde GSP'yi manuel olarak devre dışı bırakma
Düğümü kaldırıp tekrar ekleyemiyorsanız düğümde oturum açın ve GSP'yi manuel olarak devre dışı bırakın. Bkz. SSS.
Sürücü 470'ten 525'e yükseltirken 525 için GSP'yi devre dışı bırakın. 470 sürümünde GSP yoktur ancak 525 sürümü bir GSP hatasını tetikleyebilir. Yükseltmeden sonra GSP'yi manuel olarak devre dışı bırakmak için SSS adımlarını izleyin.
Bir kümede arızalı bir GPU kartını manuel olarak nasıl izole edebilirim?
Paylaşılan GPU zamanlaması altında arızalı bir GPU, işlerin tekrar tekrar başarısız olmasına neden olabilir. GPU'yu sağlıksız olarak işaretleyerek zamanlamadan hariç tutun.
Önkoşullar:
Kubernetes 1.24 veya sonraki sürümleri çalıştıran kümeler için: Zamanlayıcı sürümü
1.xx.x-aliyun-6.4.3.xxxveya sonrası.Kubernetes 1.22 çalıştıran kümeler için: Zamanlayıcı sürümü
1.22.15-aliyun-6.2.4.xxxveya sonrası.Paylaşılan GPU zamanlaması etkinleştirilmiştir.
Aşağıdaki ConfigMap'i gönderin. <node-name> yerine gerçek düğüm adını yazın ve deviceId değerini nvidia-smi çıktısından alınan GPU dizinine ayarlayın.
apiVersion: v1
kind: ConfigMap
metadata:
name: <node-name>-device-status # Replace <node-name> with the actual node name.
namespace: kube-system
data:
devices: |
- deviceId: 0 # Run nvidia-smi to get the GPU index.
deviceType: gpu
healthy: false
ConfigMap, kube-system ad alanında ve <node-name>-device-status ad biçiminde olmalıdır. data alanında deviceId değeri nvidia-smi çıktısından alınan GPU dizinidir, deviceType değeri gpu ve healthy değeri false olarak ayarlanır. Gönderildikten sonra zamanlayıcı bu GPU'ya iş atamayı durdurur.
GPU konteynerlerinde "Failed to initialize NVML: Unknown Error" mesajını çözme
Belirti: Bir GPU konteynerinde nvidia-smi çalıştırıldığında şu çıktı alınır:
sudo nvidia-smi
Failed to initialize NVML: Unknown Error
Bu sorun, Ubuntu 22.04 veya Red Hat Enterprise Linux (RHEL) 9.3 64-bit çalıştıran düğümleri etkiler.
Neden: Düğümde systemctl daemon-reload veya systemctl daemon-reexec çalıştırmak, cgroup yapılandırmalarını günceller ve bu da etkilenen konteynerler için NVML erişimini keser.
Etkilenen pod'lar:
resources.limitsiçindealiyun.com/gpu-membelirten pod'larKonteyner ortam değişkeni olarak
NVIDIA_VISIBLE_DEVICESayarlayan pod'larVarsayılan olarak
NVIDIA_VISIBLE_DEVICESayarlanmış bir konteyner görüntüsü kullanan pod'lar
resources.limitsiçindenvidia.com/gpuaracılığıyla GPU kaynakları talep eden pod'lar etkilenmez.
NVIDIA Device Plugin ve ack-gpu-exporter varsayılan olarak NVIDIA_VISIBLE_DEVICES=all ayarlar.
Çözüm:
Hızlı geçici çözüm: Uygulama pod'unu yeniden oluşturun. Bu geçici bir çözümdür; sorun tekrar oluşabilir. İşlemeden önce iş etkisini değerlendirin.
-
Pod NVIDIA_VISIBLE_DEVICES=all kullanıyorsa: Konteynerin
securityContextbölümüneprivileged: trueekleyin.Önemliprivilegedizinlerinin verilmesi güvenlik riskleri oluşturur. Mümkün olduğunda pod'u yeniden oluşturmayı tercih edin.apiVersion: v1 kind: Pod metadata: name: test-gpu-pod spec: containers: - name: test-gpu-pod image: centos:7 command: - sh - -c - sleep 1d securityContext: # Add privileged permissions to the container. privileged: true
GPU düğümlerinde /run/containerd/io.containerd.runtime.v2.task/k8s.io/<container ID>/log.json dosyasının sürekli büyümesini nasıl önleyebilirim?
Belirti: /run/containerd/io.containerd.runtime.v2.task/k8s.io/<container ID>/log.json dosyası sürekli büyür ve disk alanını tüketir.
Etkilenen ortam: nvidia-container-toolkit sürümü 1.16.2'den eski olan düğümler.
Neden: Bir konteynere sık yapılan exec çağrıları (örneğin bir exec probundan kaynaklananlar), NVIDIA konteyner çalışma zamanının her çağrı için bir bilgi günlüğü girişi yazmasına neden olur.
Çözüm: Düğümde oturum açın. Günlük düzeyini info değerinden error değerine değiştirin ve mevcut günlük içeriğini temizleyin.
#!/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
# Change the log level in the nvidia-container-runtime configuration from "info" to "error".
sed -i 's@^log-level = "info"@log-level = "error"@g' $CONFIG
# Clear the content of the container's log.json file.
find $CONTAINER_ROOT_PATH -mindepth 2 -maxdepth 2 -name log.json -type f -exec sh -c 'echo "" > "{}"' \;
fi