Los clústeres de ACK instalan distintas versiones predeterminadas del controlador de NVIDIA según el tipo y la versión del clúster. Para instalar una versión más reciente del controlador en los nodos de GPU, cargue un controlador personalizado en OSS y configure las etiquetas del node pool para obtenerlo mediante su URL de OSS.
Notas de uso
ACK no garantiza la compatibilidad entre las versiones del controlador de GPU y las versiones de la biblioteca CUDA. Usted es responsable de comprobar dicha compatibilidad.
Para conocer los requisitos detallados del controlador según el modelo de GPU de NVIDIA, consulte la documentación oficial de NVIDIA.
Si utiliza una imagen de sistema operativo personalizada que ya incluye un controlador de GPU, NVIDIA Container Runtime u otros componentes de GPU, ACK no puede garantizar que dicho controlador sea compatible con otros componentes de GPU de ACK, como los agentes de monitoreo.
Cuando se especifica una versión del controlador de GPU mediante una etiqueta de node pool, el controlador se instala únicamente en los nodos nuevos que se agregan al pool. Los nodos existentes no se ven afectados. Para aplicar el nuevo controlador a los nodos existentes, debe Remove a node from a cluster or node pool y después Add existing nodes.
Los tipos de instancia gn7, GPU-accelerated compute-optimized instance family y GPU compute-optimized: gn, ebm, and scc presentan problemas de compatibilidad con las versiones 510.xxx y 515.xxx del controlador. Utilice una versión anterior a la 510 con el procesador de sistema de GPU (GSP) deshabilitado (por ejemplo, 470.xxx.xxxx) o bien la versión 525.125.06 o posterior.
Las instancias de ECS de tipo GPU compute-optimized: gn, ebm, and scc o Ebmgn7e instance family solo admiten versiones del controlador de NVIDIA 525.125.06 o posteriores.
Si customize the GPU driver version by specifying a version number o by using an OSS URL, el sistema operativo y el controlador podrían volverse incompatibles tras la actualización. Consulte Supported NVIDIA driver versions in ACK para seleccionar un controlador compatible.
Cargar su propio controlador de GPU en OSS puede generar incompatibilidades con la imagen del sistema operativo, el tipo de instancia de ECS o el entorno de ejecución de contenedores, lo que provoca errores al crear el nodo. ACK no garantiza que este método funcione correctamente. Compruebe la configuración antes de continuar.
Paso 1: Descargar el controlador requerido
Si la NVIDIA driver versions supported by ACK no incluye la versión que necesita, descargue el controlador desde el sitio web oficial de NVIDIA. Este ejemplo utiliza la versión 550.90.07. Descargue el archivo NVIDIA-Linux-x86_64-550.90.07.run en su computadora local.
Paso 2: Descargar NVIDIA Fabric Manager
Descargue NVIDIA Fabric Manager desde el repositorio YUM de NVIDIA. La versión de Fabric Manager debe coincidir con la versión del controlador.
wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-550.90.07-1.x86_64.rpm
Paso 3: Crear un bucket de OSS
Inicie sesión en la consola de OSS y create a bucket.
Cree el bucket en la misma región que su clúster de ACK para que los nodos puedan descargar el controlador a través de la red interna.
Paso 4: Cargar archivos en el bucket de OSS
-
Inicie sesión en la consola de OSS y upload los archivos
NVIDIA-Linux-x86_64-550.90.07.runynvidia-fabric-manager-550.90.07-1.x86_64.rpmen el directorio raíz del bucket.ImportanteCargue los archivos en el directorio raíz del bucket, no en un subdirectorio.
En la página del bucket, dentro del panel de navegación izquierdo, haga clic en . En la columna Actions del archivo que acaba de cargar, haga clic en Details.
-
En el panel Details, desactive el interruptor Use HTTPS.
ImportanteACK descarga los archivos del controlador mediante HTTP, pero OSS usa HTTPS de forma predeterminada. Desactive Use HTTPS para habilitar el acceso por HTTP.
-
En el panel de navegación izquierdo, haga clic en Overview. Copie el endpoint interno que aparece en la parte inferior de la página.
ImportanteLos endpoints externos son lentos y pueden provocar errores al crear el nodo de GPU. Utilice un endpoint interno (que contiene
-internal) o un endpoint acelerado (que contieneoss-accelerate).Si falla la descarga de algún archivo, ajuste la política de access control del bucket.
Paso 5: Configurar las etiquetas del node pool
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
-
Haga clic en Create Node Pool para agregar nodos de GPU. Consulte Create and manage a node pool para conocer el detalle de cada parámetro. A continuación se muestran los parámetros clave de esta configuración:
En la sección Node Labels, haga clic en el icono
para agregar las siguientes etiquetas. Sustituya los valores de ejemplo por sus valores reales.Key
Value
ack.aliyun.com/nvidia-driver-oss-endpointEndpoint interno del bucket de OSS obtenido en Step 4.
my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.comack.aliyun.com/nvidia-driver-runfileNombre del archivo del controlador de NVIDIA indicado en Step 1.
NVIDIA-Linux-x86_64-550.90.07.runack.aliyun.com/nvidia-fabricmanager-rpmNombre del archivo de Fabric Manager indicado en Step 2.
nvidia-fabric-manager-550.90.07-1.x86_64.rpm
Paso 6: Comprobar la instalación del controlador
-
Consulte los pods que tienen la etiqueta
component: nvidia-device-plugin:kubectl get po -n kube-system -l component=nvidia-device-plugin -o wideSalida esperada:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nvidia-device-plugin-cn-beijing.192.168.1.127 1/1 Running 0 6d 192.168.1.127 cn-beijing.192.168.1.127 <none> <none> nvidia-device-plugin-cn-beijing.192.168.1.128 1/1 Running 0 17m 192.168.1.128 cn-beijing.192.168.1.128 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.12 1/1 Running 0 9d 192.168.8.12 cn-beijing.192.168.8.12 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.13 1/1 Running 0 9d 192.168.8.13 cn-beijing.192.168.8.13 <none> <none>La salida muestra que el pod del nodo recién agregado es
nvidia-device-plugin-cn-beijing.192.168.1.128. -
Compruebe que se instaló la versión correcta del controlador:
kubectl exec -ti nvidia-device-plugin-cn-beijing.192.168.1.128 -n kube-system -- nvidia-smiSalida esperada:
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | 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 P100-PCIE-16GB On | 00000000:00:08.0 Off | Off | | N/A 31C P0 26W / 250W | 0MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+La salida indica la versión 550.90.07 del controlador, lo que confirma que el controlador de NVIDIA personalizado se instaló correctamente.
Otros métodos
También puede establecer la URL de OSS del controlador personalizado al crear un node pool con la API CreateClusterNodePool:
{
// Other sections are omitted.
......
"tags": [
{
"key": "ack.aliyun.com/nvidia-driver-oss-endpoint",
"value": "my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.com"
},
{
"key": "ack.aliyun.com/nvidia-driver-runfile",
"value": "NVIDIA-Linux-x86_64-550.90.07.run"
},
{
"key": "ack.aliyun.com/nvidia-fabricmanager-rpm",
"value": "nvidia-fabric-manager-550.90.07-1.x86_64.rpm"
}
],
// Other sections are omitted.
......
}