Reemplace el controlador NVIDIA en un nodo ACK acelerado por GPU cuando CUDA requiera una versión más reciente.
Requisitos previos
Asegúrese de contar con lo siguiente:
kubectlconfigurado con acceso al clústerAcceso SSH al nodo acelerado por GPU de destino
El archivo
.rundel nuevo controlador NVIDIA, descargado desde el sitio oficial de NVIDIA al nodo(Condicional) El paquete
.rpmcorrespondiente de NVIDIA Fabric Manager, si es necesario; consulte el Paso 3, subpaso 5
Paso 1: Aislar y drenar el nodo
-
Marque el nodo acelerado por GPU como no programable:
kubectl cordon <NODE_NAME>Reemplace
<NODE_NAME>con el nombre del nodo de destino. Salida esperada:node/<NODE_NAME> cordoned -
Desaloje los pods de carga de trabajo del nodo:
kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=true--grace-period=120otorga a los pods hasta 120 segundos para un apagado ordenado.--ignore-daemonsets=trueomite los pods administrados por DaemonSet, los cuales se gestionan en el siguiente paso. Salida esperada:There are pending nodes to be drained: <NODE_NAME>
Paso 2: Desinstalar el controlador NVIDIA actual
-
Inicie sesión en el nodo y detenga kubelet y containerd. Esto finaliza los pods de DaemonSet que mantienen referencias a la GPU y que
kubectl drainno puede desalojar.sudo systemctl stop kubelet containerd -
Compruebe si hay procesos que aún utilicen dispositivos GPU:
sudo fuser -v /dev/nvidia*Si no hay salida, ningún proceso mantiene referencias a la GPU; continúe con el siguiente subpaso. Si aparece alguna salida, finalice cada proceso listado. Por ejemplo:
USER PID ACCESS COMMAND /dev/nvidia0: root 3781 F.... dcgm-exporter /dev/nvidiactl: root 3781 F...m dcgm-exporterFinalice el proceso:
sudo kill 3781Ejecute
sudo fuser -v /dev/nvidia*nuevamente hasta que no queden procesos activos. -
Desinstale el controlador NVIDIA actual:
sudo nvidia-uninstall -
(Opcional) Desinstale NVIDIA Fabric Manager si está instalado. Compruebe su instalación:
sudo rpm -qa | grep ^nvidia-fabric-managerSi no hay salida, NVIDIA Fabric Manager no está instalado; omita este paso. De lo contrario, desinstálelo:
yum remove nvidia-fabric-manager
Paso 3: Instalar el nuevo controlador NVIDIA en el nodo
-
Instale el nuevo controlador. Ejemplo con
NVIDIA-Linux-x86_64-510.108.03.run:sudo bash NVIDIA-Linux-x86_64-510.108.03.run -a -s -q -
Verifique la instalación:
sudo nvidia-smiLa salida muestra la nueva versión del controlador. Ejemplo 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 la configuración posterior a la instalación requerida:
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 cargar el controlador NVIDIA durante el arranque, asegúrese de que
/etc/rc.d/rc.localcontenga: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 -
Compruebe si se requiere NVIDIA Fabric Manager; los nodos con interconexiones multi-GPU basadas en NVSwitch lo necesitan.
sudo lspci | grep -i 'Bridge:.*NVIDIA'Si no hay salida, no se requiere NVIDIA Fabric Manager. Si aparece alguna salida, descargue el paquete correspondiente de NVIDIA Fabric Manager desde el repositorio YUM de NVIDIA. La versión del paquete debe coincidir con la versión del controlador. Instale e inicie 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 kubelet y containerd:
sudo systemctl restart containerd kubelet
Paso 4: Devolver el nodo al clúster
Marque el nodo como programable:
sudo kubectl uncordon <NODE_NAME>
Reemplace <NODE_NAME> con el nombre de su nodo. Kubernetes reanudará la programación de pods en el nodo.