Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Scheduling overview

Dernière mise à jour :Aug 11, 2026

ACK étend l'ordonnancement Kubernetes en ajoutant des politiques pour les jobs, la topologie, la qualité de service (QoS) et le désordonnancement.

Avant de commencer

  • Sélectionnez une politique d'ordonnancement adaptée à votre rôle et à votre scénario métier :

    • Les ingénieurs O&M se concentrent sur le coût du cluster et la maximisation de l'utilisation des ressources, tout en garantissant la haute disponibilité du cluster, l'équilibrage de la charge des nœuds et l'évitement des points de défaillance uniques (SPOF).

    • Les développeurs d'applications ont besoin d'un déploiement et d'une gestion simplifiés des applications, ainsi que de ressources suffisantes (CPU, GPU et mémoire) pour assurer leurs performances.

  • Pour utiliser efficacement les politiques d'ordonnancement ACK, familiarisez-vous avec Kubernetes Scheduler, les libellés de nœud, l'éviction sous pression des nœuds et les contraintes de répartition topologique des pods.

    Le planificateur ACK utilise la même politique par défaut que le planificateur Kubernetes open source, composée des plug-ins Filter et Score.

Politiques d'ordonnancement natives de Kubernetes

Les politiques d'ordonnancement natives de Kubernetes se divisent en deux catégories : l'ordonnancement des nœuds et l'ordonnancement inter-pods.

  • Politiques d'ordonnancement des nœuds : elles permettent d'attribuer les pods aux nœuds correspondant à des caractéristiques spécifiques et à des conditions de ressources données.

  • Politiques d'ordonnancement inter-pods : elles contrôlent la distribution des pods afin d'optimiser le déploiement et de garantir la haute disponibilité des applications.

Politique

Description

Scénario

nodeSelector

Attribuez des paires clé-valeur aux nœuds, puis utilisez nodeSelector pour diriger les pods vers les nœuds correspondants.

Par exemple, planifier des pods sur des nœuds spécifiques ou planifier des pods sur un pool de nœuds spécifique.

Méthode de sélection de nœud basique qui ne prend pas en charge des fonctionnalités d'ordonnancement plus complexes, telles que les règles d'ordonnancement souple.

nodeAffinity

Plus flexible et plus granulaire que nodeSelector. Par exemple, la règle d'ordonnancement strict requiredDuringSchedulingIgnoredDuringExecution et la règle d'ordonnancement souple preferredDuringSchedulingIgnoredDuringExecution.

Dirigez les pods vers des nœuds présentant des caractéristiques spécifiques, comme des régions, des types de périphériques ou du matériel. Les règles d'anti-affinité répartissent les pods sur différents nœuds.

Taints et tolérations

Un taint se compose d'une clé, d'une valeur et d'un effet (effets courants : NoSchedule, PreferNoSchedule, NoExecute). Seuls les pods disposant d'une tolération correspondante sont planifiés sur les nœuds affectés par un taint.

  • Réservez des ressources de nœud dédiées à des applications spécifiques, par exemple des nœuds accélérés par GPU pour les charges de travail d'IA ou de ML.

  • Ajoutez des taints ou des libellés aux pools de nœuds pour orienter les pods d'application vers des pools spécifiques. Consultez Créer et gérer des pools de nœuds et Modifier un pool de nœuds.
  • Évincer des pods en fonction des taints et des tolérations. Par exemple, ajoutez un taint à un nœud défectueux et définissez l'effet sur NoExecute.

Affinité et anti-affinité inter-pods

Les libellés des pods déterminent l'ordonnancement pod-vers-nœud. Prend en charge la règle d'affinité requiredDuringSchedulingIgnoredDuringExecution et la règle d'anti-affinité preferredDuringSchedulingIgnoredDuringExecution.

  • Colocalisez les pods collaboratifs sur le même nœud ou sur des nœuds voisins pour réduire la latence réseau.

  • Répartissez les pods d'applications critiques sur différents nœuds ou domaines de panne.

Politiques d'ordonnancement ACK

ACK étend l'ordonnancement Kubernetes pour répondre à des exigences telles que la mise à l'échelle ascendante ordonnée avec mise à l'échelle descendante inversée, ainsi que l'ordonnancement conscient de la charge basé sur l'utilisation réelle des ressources des nœuds.

Configurer l'ordonnancement des ressources basé sur la priorité

  • Rôle cible : ingénieurs O&M de cluster.

  • Description : Pour les clusters comportant des types d'instances mixtes (telles que des instances ECS et des instances de conteneur élastiques) et des méthodes de facturation variées (abonnement, paiement à l'utilisation et instances préemptibles), configurez l'ordonnancement des ressources basé sur la priorité afin de définir l'ordre de sélection des nœuds pour l'attribution des pods, et inversez cet ordre lors de la mise à l'échelle descendante.

Politique

Description

Scénario

Référence

Ordonnancement des ressources basé sur une priorité personnalisée

Spécifiez une valeur ResourcePolicy personnalisée lors des versions ou de la mise à l'échelle pour définir l'ordre de sélection des ressources de nœud. Par exemple, privilégiez les instances ECS sous abonnement, puis les instances ECS au paiement à l'utilisation, et enfin les instances de conteneur élastiques.

La mise à l'échelle descendante inverse cet ordre : d'abord les instances de conteneur élastiques, puis les instances ECS au paiement à l'utilisation, et enfin les instances ECS sous abonnement.

  • Définissez les nœuds privilégiés ou à éviter pour équilibrer l'utilisation des ressources du cluster.

  • Les pods d'applications haute performance sont prioritairement attribués aux nœuds haute performance.

  • Les pods non critiques en termes de performance sont prioritairement attribués aux instances préemptibles ou aux nœuds disposant de ressources inactives, ce qui permet de réduire les coûts.

Ordonnancement par priorité personnalisée pour les ressources élastiques

Ordonnancement des jobs

  • Rôle cible : ingénieurs O&M de cluster.

  • Description : Le planificateur par défaut n'est pas adapté à l'ordonnancement des jobs par lots. ACK prend en charge l'ordonnancement gang et l'ordonnancement basé sur la capacité pour les jobs par lots.

Politique

Description

Scénario

Référence

Ordonnancement Gang

Tous les pods associés sont planifiés simultanément ou aucun ne l'est, empêchant ainsi les processus anormaux de bloquer le groupe.

  • Jobs par lots : un job comprend plusieurs tâches interdépendantes qui doivent être traitées en même temps.

  • Calcul distribué : jobs d'entraînement de machine learning ou autres applications distribuées qui doivent s'exécuter simultanément.

  • Calcul haute performance : un job peut nécessiter la disponibilité simultanée de toutes les ressources avant son exécution.

Utiliser l'ordonnancement Gang

Ordonnancement basé sur la capacité

Réservez des ressources pour des namespaces ou des groupes d'utilisateurs spécifiques, et améliorez l'utilisation grâce au partage des ressources lorsque les ressources du cluster sont limitées.

Dans les clusters multi-locataires, la diversité des cycles de vie des ressources et des modèles d'utilisation entraîne une faible utilisation. Le partage et la récupération des ressources améliorent l'utilisation globale.

Travailler avec l'ordonnancement basé sur la capacité

Ordonnancement conscient de la topologie

  • Rôle cible : ingénieurs O&M de cluster.

  • Description : Les charges de travail de machine learning et de big data requièrent une communication intensive entre les pods, mais le planificateur par défaut répartit les pods uniformément dans le cluster, ce qui allonge les délais d'exécution des jobs. Les mécanismes natifs d'affinité ne permettent pas de nouvelles tentatives sur plusieurs domaines topologiques.

Description

Scénario

Référence

Le planificateur utilise des libellés d'ordonnancement gang pour garantir que toutes les demandes de ressources des pods sont satisfaites simultanément. L'ordonnancement conscient de la topologie parcourt les domaines topologiques pour trouver celui qui répond à toutes les exigences des pods.

Associez les pools de nœuds à des ensembles de déploiement afin d'orienter les pods vers des instances ECS situées dans le même ensemble de déploiement à faible latence, améliorant ainsi les performances des jobs.

Lors de jobs de machine learning ou de big data, les pods doivent communiquer fréquemment. Le planificateur parcourt les domaines topologiques pour identifier celui qui satisfait toutes les exigences des pods, réduisant ainsi le temps d'exécution des jobs.

Ordonnancement conscient de la charge

  • Rôle cible : ingénieurs O&M de cluster et développeurs d'applications.

  • Description : Le planificateur natif attribue les pods en fonction de l'allocation des ressources, et non de leur utilisation réelle. Étant donné que les charges des nœuds évoluent dynamiquement selon le trafic et les charges de travail, le planificateur natif ne peut pas détecter les charges de ressources en temps réel.

|
**Description**
|
**Scénario**
|
**Référence**
| | --- | --- | --- | |
Le planificateur ACK surveille l'historique de charge des nœuds et estime l'utilisation des ressources des nouveaux pods pour les attribuer aux nœuds les moins chargés, évitant ainsi les plantages dus à la surcharge des nœuds.
|
Applications sensibles à la charge, à la latence d'accès ou à la QoS des ressources.
|
[Utiliser l'ordonnancement conscient de la charge](t2105329.xdita#)
|
Utiliser le désordonnancement des points chauds sensible à la charge pour prévenir le déséquilibre des charges des nœuds.












Ordonnancement conscient de la QoS

  • Rôle cible : ingénieurs O&M de cluster et développeurs d'applications.

  • Description : Les classes QoS de Kubernetes (Garantie, Burst, BestEffort) déterminent la priorité d'éviction des pods lorsque les ressources du nœud sont insuffisantes. ACK ajoute l'ordonnancement sensible aux SLO pour améliorer les performances des applications sensibles à la latence, tout en garantissant l'accès aux ressources pour les jobs de priorité inférieure.

Politique

Description

Scénario

Référence

CPU Burst

Le système d'exploitation peut limiter l'utilisation du CPU par le conteneur au sein d'un cycle (limitation du CPU). CPU Burst permet aux conteneurs inactifs d'accumuler des tranches de temps CPU et de dépasser la limite CPU lors des pics de demande, améliorant ainsi les performances et réduisant la latence.

  • Conteneurs consommant beaucoup de CPU lors du démarrage et du chargement, mais nécessitant un usage CPU régulier par la suite.

  • Applications sujettes à des pics soudains de CPU, comme le e-commerce, les jeux vidéo et autres services web, qui doivent répondre rapidement aux augmentations brutales de trafic.

Activer la politique d'optimisation des performances CPU Burst

Ordonnancement CPU conscient de la topologie

Épinglez les pods sensibles au CPU à des cœurs CPU spécifiques pour éviter la dégradation des performances due aux changements de contexte fréquents et aux accès mémoire cross-NUMA.

  • Applications non adaptées aux environnements cloud-native — par exemple, nombre de threads basé sur les cœurs physiques plutôt que sur les spécifications du conteneur, entraînant une dégradation des performances.

  • Applications exécutées sur des instances Bare Metal ECS multicœurs équipées de processeurs Intel ou AMD, qui subissent une dégradation des performances due aux accès mémoire cross-NUMA.

  • Applications très sensibles aux changements de contexte CPU qui ne peuvent pas tolérer de fluctuations de performances.

Activer l'ordonnancement conscient de la topologie CPU

Ordonnancement GPU conscient de la topologie

Lorsque plusieurs pods gourmands en GPU s'exécutent simultanément, ils peuvent entrer en concurrence pour les ressources GPU et basculer entre différents GPU ou nœuds NUMA, ce qui dégrade les performances. L'ordonnancement GPU conscient de la topologie assigne les charges de travail à des GPU spécifiques, réduisant les accès mémoire cross-NUMA et améliorant les performances.

  • Calcul distribué à grande échelle nécessitant un transfert efficace des données, tel que le calcul haute performance.

  • Charges de travail de machine learning et de deep learning qui exigent d'importantes ressources GPU et une allocation appropriée des jobs d'entraînement sur les GPU.

  • Rendu graphique et développement de jeux vidéo nécessitant une allocation efficace des jobs de rendu sur les GPU.

Surengagement dynamique des ressources

Récupérez les ressources allouées mais inutilisées par les pods et attribuez-les à des jobs de faible priorité pour permettre la surallocation. Utilisez conjointement les politiques QoS suivantes au niveau du nœud unique pour empêcher les applications de s'affecter mutuellement :

  • CPU Suppress : Limitez les ressources CPU disponibles pour les pods de faible priorité lorsque l'utilisation globale du nœud est inférieure au seuil, garantissant ainsi la stabilité des conteneurs.

  • QoS CPU : Garantissez une allocation CPU suffisante pour les applications prioritaires.

  • QoS mémoire : Garantissez une allocation mémoire suffisante pour les applications prioritaires et retardez la récupération de la mémoire.

  • Isolation des ressources basée sur le cache L3 et l'allocation de bande passante mémoire (MBA) : Accordez la priorité au cache L3 et à la MBA pour les applications prioritaires.

Améliorez l'utilisation des ressources du cluster grâce à la colocalisation. Parmi les scénarios typiques figurent l'entraînement et l'inférence de modèles ML, le traitement et l'analyse par lots de big data, les services en ligne et les sauvegardes hors ligne.

Modifier dynamiquement les paramètres de ressources d'un pod

Dans Kubernetes 1.27 ou versions antérieures, la modification des paramètres du conteneur nécessite la suppression et la recréation du pod. ACK vous permet de modifier les limites CPU, mémoire et IOPS de disque sans redémarrer le pod.

Ajustements temporaires des ressources CPU ou mémoire.

Modifier dynamiquement les paramètres de ressources des pods

Désordonnancement

  • Rôle cible : ingénieurs O&M de cluster et développeurs d'applications.

  • Description : À mesure que les conditions du cluster évoluent, il peut s'avérer nécessaire de migrer les pods en cours d'exécution vers des nœuds plus adaptés.

Politique

Description

Scénario

Référence

Désordonnancement

Replanifiez les pods mal positionnés vers les nœuds optimaux lorsque des points chauds se forment en raison d'une utilisation inégale des ressources ou de modifications des attributs des nœuds, garantissant ainsi la haute disponibilité et l'efficacité des charges de travail.

  • Distribution inégale des charges de travail avec des nœuds surchargés, par exemple dans des scénarios de colocalisation.

  • Faible utilisation des ressources du cluster nécessitant la suppression de nœuds pour réduire les coûts.

  • La fragmentation des ressources empêche les nœuds individuels de disposer de ressources suffisantes, malgré une capacité adéquate à l'échelle du cluster.

  • Des taints ou des libellés sont ajoutés à un nœud ou supprimés de celui-ci.

Travailler avec le désordonnancement des points chauds sensible à la charge

Combinez l'ordonnancement conscient de la charge et le désordonnancement des points chauds pour surveiller les charges des nœuds et rééquilibrer automatiquement les nœuds qui dépassent le seuil de charge.

Désordonnancement des points chauds sensible à la charge

Facturation

L'ordonnancement ACK entraîne des frais de gestion de cluster et de ressources cloud conformément aux règles de facturation. Frais supplémentaires liés aux composants d'ordonnancement :

  • Le planificateur ACK par défaut (kube-scheduler) est gratuit à installer et à utiliser.

  • L'ordonnancement des ressources et le désordonnancement ACK reposent sur ack-koordinator. ack-koordinator est gratuit à installer et à utiliser, mais peut engendrer des frais supplémentaires dans certains scénarios. Consultez ack-koordinator (anciennement ack-slo-manager).

FAQ

Pour résoudre les problèmes d'ordonnancement, consultez la FAQ sur l'ordonnancement.

Références