Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Use default Kubernetes GPU scheduling

Dernière mise à jour :Aug 11, 2026

Container Service for Kubernetes (ACK) prend en charge la planification et les opérations GPU. Son mode d'utilisation par défaut du GPU s'aligne sur le modèle de la communauté Kubernetes en amont. Cette rubrique explique comment déployer une charge de travail TensorFlow exemple pour valider la planification GPU.

Prérequis

Assurez-vous de disposer des éléments suivants :

  • Un cluster ACK avec au moins un nœud GPU

  • kubectl configuré pour se connecter au cluster

  • Accès à la console ACK

Éviter de contourner les demandes standard de ressources GPU

Pour les nœuds GPU gérés par ACK, demandez des ressources GPU uniquement via le mécanisme standard de ressources étendues de Kubernetes (nvidia.com/gpu dans resources.limits). Les actions suivantes contournent ce mécanisme et présentent des risques de sécurité :

  • Exécution directe d'applications GPU sur les nœuds

  • Utilisation de docker, podman ou nerdctl pour créer des conteneurs ou demander des ressources GPU (par exemple, docker run --gpus all ou docker run -e NVIDIA_VISIBLE_DEVICES=all)

  • Ajout de NVIDIA_VISIBLE_DEVICES=all ou NVIDIA_VISIBLE_DEVICES=<GPU ID> à la section env du fichier YAML d'un pod

  • Utilisation de la variable d'environnement NVIDIA_VISIBLE_DEVICES pour demander des ressources GPU pour un pod

  • Définition par défaut de NVIDIA_VISIBLE_DEVICES sur all dans une image de conteneur lorsque cette variable n'est pas définie dans le YAML du pod

  • Définition de privileged: true dans le securityContext du pod et exécution d'un programme GPU

Pourquoi cela importe : Les demandes GPU non standard sont invisibles pour le suivi des ressources du planificateur. Cette inadéquation peut amener le planificateur à sur-allouer les GPU sur un nœud, ce qui entraîne la contention de plusieurs pods sur la même carte GPU (par exemple, concurrence pour la mémoire GPU) et provoque l'échec des charges de travail. Ces méthodes peuvent également déclencher des erreurs connues signalées par la communauté NVIDIA.

Vérifier la disponibilité du GPU

Avant de déployer une charge de travail, confirmez que votre nœud GPU expose sa capacité au planificateur Kubernetes.

  1. Listez les nœuds du cluster :

    kubectl get nodes
  2. Décrivez un nœud GPU pour vérifier sa capacité :

    kubectl describe node <gpu-node-name>

    Dans la section Capacity, nvidia.com/gpu doit afficher une valeur non nulle :

    Capacity:
     nvidia.com/gpu: 1

    Si nvidia.com/gpu est absent ou affiche 0, le plugin de périphérique NVIDIA peut ne pas être en cours d'exécution sur le nœud. Vérifiez le déploiement DaemonSet du plugin, les pilotes GPU et la configuration du nœud avant de continuer.

Déployer une application GPU

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.

  3. Sur la page Deployments, cliquez sur Create from YAML et collez ce manifeste :

    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
    Les ressources étendues GPU nécessitent uniquement limits , et non requests . Kubernetes n'autorise pas les requests sans limits correspondantes pour les ressources étendues. Le planificateur utilise la valeur de limits comme demande effective.
  4. Dans le volet de navigation de gauche, choisissez Workloads > Pods. Recherchez le pod et cliquez dessus.

  5. Cliquez sur l'onglet Logs. Le tirage de l'image et le démarrage du pod peuvent prendre quelques minutes. Une fois en cours d'exécution, la sortie du journal confirme que la planification GPU fonctionne correctement.

    image.png

Étapes suivantes

  • Pour cibler des types de GPU spécifiques dans un cluster hétérogène, utilisez les libellés et les sélecteurs de nœuds. Ajoutez des libellés aux nœuds GPU par type d'accélérateur (par exemple, kubectl label nodes <node-name> accelerator=<gpu-model>), puis ajoutez un nodeSelector à la spécification de votre pod.

  • Pour des options avancées de planification GPU telles que le partage et l'isolation des GPU, consultez la documentation sur la planification GPU d'ACK.