Tous les produits
Search
Centre de documentation

Container Compute Service:Utiliser un planificateur personnalisé

Dernière mise à jour :Aug 12, 2026

Les clusters ACS intègrent un default-scheduler qui alloue les ressources à tous les pods. Pour les charges de travail GPU-HPN nécessitant des politiques de planification complexes (gang scheduling, placement tenant compte de la topologie), déployez un planificateur personnalisé (par exemple Koordinator ou Volcano) et configurez ACS pour l'utiliser.

Les planificateurs personnalisés sont pris en charge uniquement pour les pods GPU-HPN. Tous les autres types de calcul utilisent des nœuds virtuels standard et ne prennent pas en charge les planificateurs personnalisés.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un pod dont le type de calcul est défini sur High-Performance Network GPU (gpu-hpn)

  • Le composant additionnel acs-virtual-node installé en version v2.12.0-acs.8 ou ultérieure

  • Le composant kube-scheduler installé dans une version prenant en charge les planificateurs personnalisés :

    Version du cluster ACS Version minimale de kube-scheduler
    1,32 et ultérieures Toutes les versions sont prises en charge
    1.31 v1.31.0-aliyun-1.1.2 ou ultérieure
    1.30 v1.30.3-aliyun-1.1.2 ou ultérieure
    1.28 v1.28.9-aliyun-1.1.2 ou ultérieure
Lorsque vous utilisez un planificateur personnalisé pour les pods GPU-HPN, configurez le champ spec.schedulerName de chaque pod. Pour plus d'informations, consultez Specify schedulers for pods .

Remarques d'utilisation

L'activation des planificateurs personnalisés modifie la gestion des pods et des nœuds GPU-HPN par ACS. Prenez connaissance des différences de comportement avant de poursuivre.

Aspect Planificateur par défaut (désactivé) Planificateur personnalisé (activé)
Nom du planificateur de pod Non personnalisable. Après l'envoi d'un pod, spec.schedulerName est remplacé par default-scheduler. Personnalisable. La valeur de spec.schedulerName est conservée après l'envoi et peut prendre n'importe quelle valeur.
Processus de planification des pods Le planificateur par défaut d'ACS alloue les ressources pour tous les pods. Le planificateur par défaut d'ACS traite uniquement les pods où spec.schedulerName correspond à default-scheduler. Votre planificateur personnalisé gère tous les autres pods.
Contraintes liées aux libellés et aux taints des nœuds GPU-HPN L'ajout, la modification et la suppression de libellés, d'annotations et de taints de nœuds sont soumis aux contraintes d'ACS. Consultez Manage node labels and taints. Les contraintes relatives aux libellés, annotations et taints des nœuds ne s'appliquent plus.
Contraintes de planification par affinité des pods La configuration du champ d'affinité est soumise aux contraintes d'ACS. Consultez Node affinity scheduling. Les contraintes liées au champ d'affinité ne s'appliquent plus.
Important

Ces modifications concernent exclusivement les pods et les nœuds GPU-HPN. Les autres types de calcul ne prennent pas en charge les planificateurs personnalisés.

Déployer et configurer un planificateur personnalisé

Étape 1 : Déployer un planificateur personnalisé

Déployez votre planificateur personnalisé dans le cluster ACS. Pour un exemple complet incluant la configuration requise du ServiceAccount et du ClusterRoleBinding, reportez-vous à la documentation Kubernetes.

Étape 2 : Activer les planificateurs personnalisés dans ACS

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

  2. Sur la page Clusters, cliquez sur l'ID du cluster cible. Dans le volet de navigation de gauche, choisissez Operations > Add-ons.

  3. Sur la page Add-ons, localisez la carte Kube Scheduler puis cliquez sur Configuration.

  4. Dans la boîte de dialogue, sélectionnez Enable custom labels and schedulers for GPU-HPN nodes, puis cliquez sur OK.

Étape 3 : Configurer un planificateur personnalisé pour un pod

  1. Créez un fichier nommé dep-with-koordinator.yaml avec le contenu suivant. Ce Deployment définit alibabacloud.com/compute-class: gpu-hpn sur le modèle de pod et attribue koord-scheduler comme planificateur. Remplacez koord-scheduler par le nom configuré à l'étape 1.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-with-koordinator
      labels:
        app: dep-with-koordinator
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: dep-with-koordinator
      template:
        metadata:
          labels:
            app: dep-with-koordinator
            # Set the compute class to gpu-hpn. Other compute types do not support custom schedulers.
            alibabacloud.com/compute-class: gpu-hpn
        spec:
          containers:
          - name: demo
            image: registry.cn-hangzhou-finance.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "infinity"
          restartPolicy: Always
          # Set the scheduler name to match the one deployed in Step 1.
          schedulerName: koord-scheduler
  2. Appliquez le Deployment au cluster.

    kubectl apply -f dep-with-koordinator.yaml
  3. Vérifiez que le pod utilise bien le planificateur personnalisé.

    kubectl get pod -lapp=dep-with-koordinator -o custom-columns=NAME:.metadata.name,schedulerName:.spec.schedulerName

    Résultat attendu :

    NAME                               schedulerName
    dep-with-koordinator-xxxxx-xxxxx   koord-scheduler

FAQ

Pourquoi l'erreur « Insufficient attachable-volumes-xxx » apparaît-elle lorsqu'un pod utilise un PVC avec un planificateur personnalisé ?

Certains planificateurs personnalisés exigent que l'objet Node CSI (Container Storage Interface) du nœud existe et ait signalé les informations de capacité pour le pilote CSI correspondant. Si cette condition n'est pas remplie, le planificateur signale une erreur de ressource insuffisante, alors que le planificateur Kubernetes par défaut gère ce cas automatiquement.

Configurez le planificateur personnalisé pour qu'il ignore certains pilotes CSI. Pour le planificateur Volcano, ajoutez l'indicateur --ignored-provisioners au démarrage :

# Separate multiple drivers with commas.
--ignored-provisioners=povplugin.csi.alibabacloud.com

Adaptez le nom du pilote afin qu'il corresponde au pilote CSI présent dans votre cluster.