Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Use default Kubernetes GPU scheduling

Última actualización: Sep 04, 2026

Container Service for Kubernetes (ACK) admite la programación y operación de GPU. Su modo de uso predeterminado se alinea con el patrón de la comunidad upstream de Kubernetes. Este tema explica cómo desplegar una carga de trabajo de TensorFlow de ejemplo para validar la programación de GPU.

Requisitos previos

Asegúrese de contar con lo siguiente:

  • Un clúster de ACK con como mínimo un nodo GPU

  • kubectl configurado para conectarse al clúster

  • Acceso a la consola de ACK

Evite omitir las solicitudes estándar de recursos de GPU

En los nodos GPU administrados por ACK, solicite recursos de GPU únicamente mediante el mecanismo estándar de recursos extendidos de Kubernetes (nvidia.com/gpu en resources.limits). Las siguientes acciones omiten este mecanismo y representan riesgos de seguridad:

  • Ejecutar aplicaciones GPU directamente en los nodos

  • Usar docker, podman o nerdctl para crear contenedores o solicitar recursos de GPU (por ejemplo, docker run --gpus all o docker run -e NVIDIA_VISIBLE_DEVICES=all)

  • Agregar NVIDIA_VISIBLE_DEVICES=all o NVIDIA_VISIBLE_DEVICES=<GPU ID> a la sección env del archivo YAML de un pod

  • Usar la variable de entorno NVIDIA_VISIBLE_DEVICES para solicitar recursos de GPU para un pod

  • Establecer NVIDIA_VISIBLE_DEVICES como all de forma predeterminada en una imagen de contenedor cuando no se define en el YAML del pod

  • Configurar privileged: true en el securityContext del pod y ejecutar un programa de GPU

Por qué es importante: Las solicitudes de GPU no estándar son invisibles para el seguimiento de recursos del programador. Esta discrepancia puede provocar que el programador asigne más GPU de las disponibles en un nodo, lo que genera que varios pods compitan por la misma tarjeta GPU (por ejemplo, compitiendo por memoria GPU) y causa fallos en la carga de trabajo. Estos métodos también pueden desencadenar errores conocidos reportados por la comunidad de NVIDIA.

Compruebe la disponibilidad de GPU

Antes de desplegar una carga de trabajo, confirme que su nodo GPU expone la capacidad de GPU al programador de Kubernetes.

  1. Liste los nodos del clúster:

    kubectl get nodes
  2. Describa un nodo GPU para comprobar su capacidad:

    kubectl describe node <gpu-node-name>

    En la sección Capacity, nvidia.com/gpu debe mostrar un valor distinto de cero:

    Capacity:
     nvidia.com/gpu: 1

    Si nvidia.com/gpu no aparece o muestra 0, es posible que el plugin de dispositivo NVIDIA no se esté ejecutando en el nodo. Compruebe el despliegue del DaemonSet del plugin, los controladores de GPU y la configuración del nodo antes de continuar.

Despliegue una aplicación GPU

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el clúster destino. En el panel de navegación izquierdo, elija Workloads > Deployments.

  3. En la página Deployments, haga clic en Create from YAML y pegue este manifiesto:

    apiVersion: v1
    kind: Pod
    metadata:
      name: tensorflow-mnist
      namespace: default
    spec:
      containers:
      - image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
        name: tensorflow-mnist
        command:
        - python
        - tensorflow-sample-code/tfjob/docker/mnist/main.py
        - --max_steps=100000
        - --data_dir=tensorflow-sample-code/data
        resources:
          limits:
            nvidia.com/gpu: 1  # Request one GPU card for this container.
        workingDir: /root
      restartPolicy: Always
    Los recursos extendidos de GPU requieren únicamente limits , no requests . Kubernetes no permite requests sin un valor coincidente en limits para recursos extendidos. El programador utiliza el valor de limits como la solicitud efectiva.
  4. En el panel de navegación izquierdo, elija Workloads > Pods. Busque el pod y haga clic en él.

  5. Haga clic en la pestaña Logs. La descarga de la imagen y el inicio del pod pueden tardar unos minutos. Una vez en ejecución, la salida del registro confirma que la programación de GPU funciona correctamente.

    image.png

Siguientes pasos

  • Para dirigir cargas a tipos específicos de GPU en un clúster heterogéneo, utilice etiquetas y selectores de nodo. Etiquete los nodos GPU según el tipo de acelerador (por ejemplo, kubectl label nodes <node-name> accelerator=<gpu-model>) y luego agregue un nodeSelector a la especificación de su pod.

  • Para opciones avanzadas de programación de GPU, como el uso compartido y el aislamiento de GPU, consulte la documentación de programación de GPU de ACK.