Substitua o driver NVIDIA em um nó ACK acelerado por GPU quando o CUDA exigir uma versão mais recente.
Pré-requisitos
Verifique se você tem:
kubectlconfigurado com acesso ao clusterAcesso SSH ao nó acelerado por GPU de destino
Arquivo
.rundo novo driver NVIDIA baixado do site oficial da NVIDIA para o nó(Condicional) Pacote
.rpmcorrespondente do NVIDIA Fabric Manager, se necessário — consulte a Etapa 3, subetapa 5
Etapa 1: Isolar e drenar o nó
-
Marque o nó acelerado por GPU como não agendável:
kubectl cordon <NODE_NAME>Substitua
<NODE_NAME>pelo nome do nó de destino. Saída esperada:node/<NODE_NAME> cordoned -
Evite os pods de carga de trabalho do nó:
kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=trueO parâmetro
--grace-period=120concede aos pods até 120 segundos para encerramento graceful. Já--ignore-daemonsets=trueignora pods gerenciados por DaemonSet, tratados na próxima etapa. Saída esperada:There are pending nodes to be drained: <NODE_NAME>
Etapa 2: Desinstalar o driver NVIDIA atual
-
Faça login no nó e pare o kubelet e o containerd. Essa ação encerra os pods de DaemonSet com referências à GPU que o
kubectl drainnão consegue remover.sudo systemctl stop kubelet containerd -
Verifique se há processos usando dispositivos GPU:
sudo fuser -v /dev/nvidia*Sem saída significa que nenhum processo mantém referências à GPU — prossiga para a próxima subetapa. Caso haja saída, encerre cada processo listado. Exemplo:
USER PID ACCESS COMMAND /dev/nvidia0: root 3781 F.... dcgm-exporter /dev/nvidiactl: root 3781 F...m dcgm-exporterEncerre o processo:
sudo kill 3781Execute
sudo fuser -v /dev/nvidia*novamente até não restarem processos. -
Desinstale o driver NVIDIA atual:
sudo nvidia-uninstall -
(Opcional) Desinstale o NVIDIA Fabric Manager, se instalado. Verifique a instalação:
sudo rpm -qa | grep ^nvidia-fabric-managerSem saída indica que o NVIDIA Fabric Manager não está instalado — pule esta etapa. Caso contrário, desinstale-o:
yum remove nvidia-fabric-manager
Etapa 3: Instalar o novo driver NVIDIA no nó
-
Instale o novo driver. Exemplo com
NVIDIA-Linux-x86_64-510.108.03.run:sudo bash NVIDIA-Linux-x86_64-510.108.03.run -a -s -q -
Verifique a instalação:
sudo nvidia-smiA saída mostra a nova versão do driver. Exemplo para
510.108.03:+-----------------------------------------------------------------------------+ | NVIDIA-SMI 510.108.03 Driver Version: 510.108.03 CUDA Version: 11.6 | |-------------------------------+----------------------+----------------------+ | 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 V100-SXM2... Off | 00000000:00:07.0 Off | 0 | | N/A 35C P0 40W / 300W | 0MiB / 32768MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ -
Aplique as configurações pós-instalação necessárias:
sudo nvidia-smi -pm 1 || true # Enable Persistence mode sudo nvidia-smi -acp 0 || true # Set permission to UNRESTRICTED sudo nvidia-smi --auto-boost-default=0 || true # Disable auto boost mode sudo nvidia-smi --auto-boost-permission=0 || true # Allow non-admin users to control auto boost mode sudo nvidia-modprobe -u -c=0 -m || true # Load the NVIDIA unified memory kernel module and create device files -
(Opcional) Para carregar o driver NVIDIA na inicialização, garanta que
/etc/rc.d/rc.localcontenha: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 -
Verifique se o NVIDIA Fabric Manager é necessário — nós com interconexões multi-GPU baseadas em NVSwitch exigem esse componente.
sudo lspci | grep -i 'Bridge:.*NVIDIA'Sem saída indica que o NVIDIA Fabric Manager não é necessário. Se houver saída, baixe o pacote correspondente do NVIDIA Fabric Manager no repositório YUM da NVIDIA. A versão do pacote deve corresponder à versão do driver. Instale e inicie o NVIDIA Fabric Manager:
# Install NVIDIA Fabric Manager sudo yum localinstall nvidia-fabric-manager-510.108.03-1.x86_64.rpm # Enable NVIDIA Fabric Manager on boot systemctl enable nvidia-fabricmanager.service # Start NVIDIA Fabric Manager systemctl start nvidia-fabricmanager.service -
Reinicie o kubelet e o containerd:
sudo systemctl restart containerd kubelet
Etapa 4: Retornar o nó ao cluster
Marque o nó como agendável:
sudo kubectl uncordon <NODE_NAME>
Substitua <NODE_NAME> pelo nome do seu nó. O Kubernetes retomará o agendamento de pods no nó.