Plugin de GPU de NVIDIA

Al activar el complemento de clúster NVIDIA GPU Plugin, puede transferir los siguientes pares clave/valor como argumentos.

Tenga en cuenta que, para asegurarse de que las cargas de trabajo que se ejecutan en nodos de trabajador de GPU NVIDIA no se interrumpan de forma inesperada, le recomendamos que seleccione la versión del complemento de plugin de GPU NVIDIA que desea desplegar, en lugar de especificar que desea que Oracle actualice el complemento automáticamente.

Argumentos de configuración comunes a todos los complementos del cluster
Clave (API y CLI) Nombre mostrado de clave (consola) Descripción Necesario/Opcional Valor por defecto Valor de ejemplo
affinity afinidad

Grupo de reglas de programación de afinidad.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Operador de GPU de Nvidia
Posibles equivalentes:
  • Detección de funciones de nodo, utilice master.affinity
  • Operador de red NVIDIA, utilice operator.affinity
  • SMB de controlador CSI, utilice contoller.affinity
Opcional nulo nulo
nodeSelectors selectores de nodos

Puede utilizar selectores de nodos y etiquetas de nodos para controlar los nodos de trabajador en los que se ejecutan los pods de complementos.

Para que un pod se ejecute en un nodo, el selector de nodos del pod debe tener la misma clave/valor que la etiqueta del nodo.

Defina nodeSelectors en un par clave/valor que coincida con el selector de nodos del pod y la etiqueta del nodo de trabajador.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Operador de GPU de NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • Detección de funciones de nodo, utilice worker.nodeSelector
  • Operador de red NVIDIA, utilice operator.nodeSelectors
Opcional nulo {"foo":"bar", "foo2": "bar2"}

El pod solo se ejecutará en nodos que tengan la etiqueta foo=bar o foo2=bar2.

numOfReplicas numOfReplicas Número de réplicas del despliegue del complemento.
No utilizado por:
  • Plugin de GPU de AMD
  • Operador de GPU de NVIDIA
  • Operador de red NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • CoreDNS, utilice nodesPerReplica
  • Detección de funciones de nodo, utilice master.replicaCount
Obligatorio 1

Crea una réplica del despliegue del complemento por cluster.

2

Crea dos réplicas del despliegue del complemento por cluster.

rollingUpdate rollingUpdate

Controla el comportamiento deseado de la actualización sucesiva mediante maxSurge y maxUnavailable.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Detección de funciones de nodo
  • Operador de red NVIDIA
  • SMB de controlador CSI
Posibles equivalentes:
  • Operador de GPU de NVIDIA, utilice daemonsets.rollingUpdate.maxUnavailable
Opcional nulo nulo
tolerations tolerancias

Puede utilizar contaminantes y tolerancias para controlar los nodos de trabajador en los que se ejecutan los pods de complementos.

Para que un pod se ejecute en un nodo que tenga un tinte, el pod debe tener una tolerancia correspondiente.

Defina tolerations en un par clave/valor que coincida con la tolerancia del pod y el mantenimiento del nodo de trabajador.

Formato JSON en texto sin formato o codificado con Base64.

Posibles equivalentes:
  • Detección de funciones de nodo, utilice master.tolerations y/o worker.tolerations
  • Operador de GPU de NVIDIA, utilice daemonsets.tolerations
  • Operador de red NVIDIA, utilice operator.tolerations
  • SMB de controlador CSI, utilice controller.tolerations
Opcional nulo [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Solo los pods que tienen esta tolerancia se pueden ejecutar en nodos de trabajador que tengan el mantenimiento tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Cómo difundir vainas coincidentes entre la topología dada.

Formato JSON en texto sin formato o codificado con Base64.

No utilizado por:
  • Detección de funciones de nodo
  • Operador de GPU de NVIDIA
  • Operador de red NVIDIA
  • SMB de controlador CSI
Opcional nulo nulo
Argumentos de configuración específicos de este complemento de cluster
Clave (API y CLI) Nombre mostrado de clave (consola) Descripción Necesario/Opcional Valor por defecto Valor de ejemplo
deviceIdStrategy Estrategia de ID de dispositivo

Estrategia que se debe utilizar para transferir ID de dispositivo al tiempo de ejecución subyacente.

Uno de los siguientes:

  • uuid
  • index
Opcional uuid
deviceListStrategy Estrategia de lista de dispositivos

Estrategia que se debe utilizar para transferir la lista de dispositivos al tiempo de ejecución subyacente.

Valores soportados:

  • envvar
  • volume-mounts
  • cdi-annotations
  • cdi-cri

Se admiten varios valores en una lista separada por comas.

Opcional envvar
driverRoot Raíz del controlador La ruta raíz para la instalación del controlador NVIDIA. Opcional /
failOnInitError FailOnInitError

Si se debe fallar el plugin si se encuentra un error durante la inicialización.

Cuando se define en false, bloquea el plugin indefinidamente en lugar de fallar.

Opcional true
migStrategy Estrategia MIG

Qué estrategia utilizar para exponer los dispositivos MIG (GPU de varias instancias) en las GPU que lo admiten.

Uno de los siguientes:

  • none
  • single
  • mixed
Opcional none
nvidia-gpu-device-plugin.ContainerResources Recursos de contenedor de plugin de dispositivo-gpu-nvidia

Puede especificar las cantidades de recursos que solicitan los contenedores complementarios y establecer límites de uso de recursos que los contenedores complementarios no pueden superar.

Formato JSON en texto sin formato o codificado con Base64.

Opcional nulo {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Cree contenedores complementarios que soliciten 100 millicores de CPU y 100 mebibytes de memoria. Limite los contenedores complementarios a 500 millicores de CPU y 200 mebibytes de memoria.

passDeviceSpecs Pasar especificaciones de dispositivo Si se deben transferir las rutas y los permisos de nodo de dispositivo deseados para cualquier dispositivo NVIDIA que se asigne al contenedor. Opcional false
useConfigFile Usar archivo de configuración desde ConfigMap

Si se debe utilizar un archivo de configuración para configurar el plugin de dispositivo Nvidia para Kubernetes. El archivo de configuración se deriva de ConfigMap.

Si se define en true, debe crear un ConfigMap en el cluster, asignar un nombre a ConfigMap nvidia-device-plugin-config y especificar valores para los argumentos de configuración. Consulte Ejemplo.

El daemonset nvidia-gpu-device-plugin hace referencia a ConfigMap.

Opcional false

Ejemplo de nvidia-device-plugin-config ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata: 
  name: nvidia-device-plugin-config 
  namespace: kube-system
data:
  config.yaml: |
    version: v1
    flags:
      migStrategy: "none"
      failOnInitError: true
      nvidiaDriverRoot: "/"
      plugin:
        passDeviceSpecs: false
        deviceListStrategy: envvar
        deviceIDStrategy: uuid
Consideraciones de cluster grande

En la siguiente tabla, se describen las consideraciones para configurar este complemento de cluster en clusters de gran tamaño.

Nombre del Argumento Número de nodos ordenado de roles Descripción A medida que aumenta el tamaño del cluster Riesgos Recomendación
nvidia-gpu-device-plugin.ContainerResources Y

Define las solicitudes de CPU y memoria y los límites para los pods del plugin de GPU NVIDIA.

El plugin se ejecuta en cada nodo de GPU como DaemonSet, por lo que el uso total de recursos aumenta con el número de nodos de GPU.

Aumentan los nodos de GPU adicionales:

  • Sobrecarga de supervisión del estado de la GPU
  • Seguimiento de asignación de dispositivos
  • Informes de recursos de nivel de nodo

Si los recursos tienen un tamaño insuficiente:

  • El plugin puede volverse inestable en los nodos.
  • Es posible que los recursos de GPU no se anuncien correctamente.
  • Es posible que los pods no se puedan programar en los nodos de GPU.
  • La disponibilidad de GPU puede ser inconsistente entre los nodos.
  • Asigne suficiente memoria en cada nodo de GPU.
  • Ajuste los recursos en función del número de GPU en cada nodo y la intensidad de las cargas de trabajo de GPU.
affinity / nodeSelectors / tolerations Y

Controle los nodos en los que se ejecutan los pods del plugin de GPU NVIDIA.

  • Garantiza que el plugin se ejecute solo en nodos de GPU.
  • Evita el despliegue innecesario en nodos de solo CPU.
  • Evita el desperdicio de recursos en nodos que no contienen GPU.

Si estos argumentos están mal configurados:

  • El plugin puede ejecutarse en nodos de solo CPU y desperdiciar recursos.
  • Es posible que el plugin no se ejecute en nodos de GPU, por lo que las cargas de trabajo de Kubernetes no pueden utilizar las GPU.
  • Utilice selectores de nodos que coincidan con las etiquetas aplicadas a los nodos de GPU.
  • Configure tolerancias cuando los nodos de GPU estén contaminados.
topologySpreadConstraints N

Controla cómo los pods del plugin de GPU NVIDIA se distribuyen entre nodos y dominios de disponibilidad.

Las restricciones de distribución de topología ayudan a mantener una distribución uniforme en clusters y clusters de varios dominios con pools de nodos de GPU heterogéneos.

Si no se configuran las restricciones de distribución de topología:

  • Los pods de plugin se pueden distribuir de forma desigual.
  • Es posible que se reduzca la resiliencia durante los fallos de nodo o de dominio de disponibilidad.

Utilice restricciones de distribución de topología para clusters de GPU grandes que abarquen varios dominios de disponibilidad o que contengan pools de nodos de GPU heterogéneos.

numOfReplicas N

Controla el número de réplicas de los componentes que soportan la ampliación basada en réplicas.

El plugin de GPU NVIDIA se ejecuta como DaemonSet con un pod en cada nodo de GPU elegible. No se escala cambiando el recuento de réplicas.

No aplicable No aplicable
rollingUpdate N

Controla cómo se actualizan los pods del plugin de GPU de NVIDIA.

En clusters grandes, una actualización puede afectar a muchos nodos de GPU y reducir temporalmente la disponibilidad de GPU.

  • Es posible que se interrumpan las cargas de trabajo de GPU.
  • Es posible que las GPU no estén disponibles temporalmente mientras se actualizan los pods de plugin.
  • Utilice una estrategia de actualización continua controlada.
  • Evite actualizar un gran número de nodos de GPU simultáneamente.
failOnInitError Y

Controla el comportamiento del plugin cuando falla la inicialización.

Es más probable que se produzcan fallos de inicialización en algún lugar del cluster a medida que aumenta el número de nodos de GPU.

  • Si el valor es true , el plugin puede terminar y la GPU del nodo afectado deja de estar disponible.
  • Si el valor es false , el plugin puede permanecer en ejecución sin volverse operativo, lo que hace que el fallo sea menos visible.
  • Mantenga el valor definido en true para que los fallos de inicialización permanezcan visibles.
  • Supervise los fallos de inicialización del plugin en los nodos de GPU.
deviceListStrategy / deviceIdStrategy N

Controle cómo se identifican y exponen los dispositivos GPU a los contenedores.

Las estrategias seleccionadas afectan a la integración de tiempo de ejecución de contenedores y a la eficiencia de asignación de GPU en los nodos de GPU.

Si se configuran incorrectamente, es posible que los dispositivos de GPU no se identifiquen ni se inyecten de manera coherente en los contenedores. Esto puede provocar fallos de carga de trabajo de GPU, asignaciones de dispositivos incorrectas o problemas de programación en los nodos de GPU.

Configure deviceListStrategy y deviceIdStrategy para que coincidan con el entorno de tiempo de ejecución y GPU del contenedor y utilice la estrategia de identificación de dispositivos uuid por defecto, a menos que un caso de uso validado requiera lo contrario.
migStrategy N

Controla cómo los recursos de GPU de múltiples instancias de NVIDIA están expuestos a Kubernetes.

La GPU de varias instancias puede mejorar el uso compartido y la utilización de la GPU a medida que aumenta el número de cargas de trabajo de GPU.

Si este argumento está mal configurado:

  • Los recursos de GPU podrían fragmentarse.
  • La programación de la carga de trabajo puede volverse más compleja.

Utilice la GPU de varias instancias solo cuando se necesite la partición de GPU.