Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Manually update the NVIDIA driver of a node

Última actualización: Sep 04, 2026

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:

  • kubectl configurado con acceso al clúster

  • Acceso SSH al nodo acelerado por GPU de destino

  • El archivo .run del nuevo controlador NVIDIA, descargado desde el sitio oficial de NVIDIA al nodo

  • (Condicional) El paquete .rpm correspondiente de NVIDIA Fabric Manager, si es necesario; consulte el Paso 3, subpaso 5

Paso 1: Aislar y drenar el nodo

  1. 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
  2. Desaloje los pods de carga de trabajo del nodo:

    kubectl drain <NODE_NAME> --grace-period=120 --ignore-daemonsets=true

    --grace-period=120 otorga a los pods hasta 120 segundos para un apagado ordenado. --ignore-daemonsets=true omite 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

  1. 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 drain no puede desalojar.

    sudo systemctl stop kubelet containerd
  2. 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-exporter

    Finalice el proceso:

    sudo kill 3781

    Ejecute sudo fuser -v /dev/nvidia* nuevamente hasta que no queden procesos activos.

  3. Desinstale el controlador NVIDIA actual:

    sudo nvidia-uninstall
  4. (Opcional) Desinstale NVIDIA Fabric Manager si está instalado. Compruebe su instalación:

    sudo rpm -qa | grep ^nvidia-fabric-manager

    Si 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

  1. 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
  2. Verifique la instalación:

    sudo nvidia-smi

    La 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                                                 |
    +-----------------------------------------------------------------------------+
  3. 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
  4. (Opcional) Para cargar el controlador NVIDIA durante el arranque, asegúrese de que /etc/rc.d/rc.local contenga:

    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
  5. 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
  6. 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.