Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Descheduling overview

Dernière mise à jour :Sep 21, 2026

Le déscheduling consiste à replanifier les pods correspondant aux règles d'éviction d'un nœud vers un autre. Lorsque des nœuds surchargés apparaissent en raison d'une répartition inégale des ressources du cluster, ou lorsque les pods ne peuvent pas être planifiés selon la politique prédéfinie suite à des modifications des attributs des nœuds, utilisez le déscheduling pour optimiser l'utilisation des ressources et affecter les pods aux nœuds les plus appropriés. Cela garantit la haute disponibilité et l'efficacité des charges de travail dans votre cluster.

Avant de commencer

Prenez note des éléments suivants avant d'utiliser le déscheduling.

Cette rubrique vous permet d'acquérir les connaissances suivantes sur le déscheduling :

  • Les scénarios d'utilisation du déscheduling.

  • Le flux de travail du déscheduling.

  • La terminologie liée au déscheduling, notamment les modèles de déscheduling, les politiques Deschedule et Balance, ainsi que les évicteurs DefaultEvictor et MigrationController.

Importance du déscheduling

Le planificateur Kubernetes assigne les pods aux nœuds appropriés en fonction de l'état actuel du cluster. Toutefois, l'état du cluster évolue constamment. Dans certains cas, il s'avère nécessaire de migrer les pods en cours d'exécution vers d'autres nœuds. Voici quelques exemples :

  • Les charges de travail du cluster ne sont pas réparties uniformément. Certains nœuds sont surchargés, ce qui dégrade leurs performances.

  • L'utilisation globale des ressources du cluster est faible. Vous souhaitez supprimer certains nœuds pour réduire les coûts. Pour ce faire, migrez d'abord les pods présents sur ces nœuds vers d'autres nœuds.

  • Le cluster présente une fragmentation importante des ressources. Par conséquent, un nœud peut manquer de ressources libres alors que les ressources totales du cluster restent suffisantes. Dans ce scénario, les pods nécessitant d'importantes ressources ne peuvent pas être planifiés, ce qui augmente encore les dépenses liées aux ressources du cluster.

  • Des taints ou des libellés sont ajoutés ou supprimés d'un nœud. Dans ce cas, certains pods du nœud ne correspondent plus à la règle d'affinité. Migrez ces pods vers un nœud dont la règle d'affinité leur correspond.

Par exemple, une application connaît des fluctuations de charge à différents moments. Des nœuds surchargés peuvent apparaître pendant les heures de pointe, ce qui détériore la qualité de service. Pour résoudre ce problème, la fonctionnalité de déscheduling évince les pods anormaux afin de réduire la charge des nœuds surchargés et garantir la qualité de service.

Pour atteindre cet objectif, ack-koordinator fournit un module de déscheduling nommé Koordinator Descheduler, qui s'exécute sous forme de Deployment sur les nœuds. Koordinator Descheduler est développé sur la base du framework de déscheduling de Kubernetes Descheduler. Il est compatible avec toutes les politiques de déscheduling de Kubernetes Descheduler. Koordinator Descheduler optimise également le déscheduling des pods en termes de politiques, de méthodes d'éviction, de contrôle du trafic d'éviction et de processus d'éviction. Pour plus d'informations sur les différences entre Koordinator Descheduler et Kubernetes Descheduler, consultez la rubrique Koordinator Descheduler et Kubernetes Descheduler.

Flux de travail du déscheduling

Koordinator Descheduler fonctionne de manière périodique. Configurez plusieurs politiques de déscheduling pour filtrer, vérifier et évincer les pods qui remplissent les conditions d'éviction. Le schéma suivant illustre le fonctionnement de Koordinator Descheduler.

image
  1. Parcourez les modèles de déscheduling et exécutez séquentiellement la politique Deschedule activée dans chaque modèle.

    1. Récupérez les informations relatives aux nœuds, aux charges de travail et aux pods.

    2. Faites correspondre les pods avec les règles de déscheduling (Deschedule).

    3. Filtrez, vérifiez et triez les pods qui satisfont aux règles d'éviction.

    4. L'évicteur de pods activé dans le modèle de déscheduling envoie une demande d'éviction de pod.

  2. Parcourez à nouveau les modèles de déscheduling et exécutez séquentiellement la politique Balance activée dans chaque modèle. Le flux de travail est similaire à l'étape 1.

Les sections suivantes décrivent les termes utilisés dans le flux de travail du déscheduling.

Modèle de déscheduling

Configurez un ou plusieurs modèles de déscheduling pour répondre à différents besoins. Pour chaque modèle, spécifiez la politique de déscheduling et l'évicteur de pods à utiliser, définissez la portée d'application et configurez des paramètres avancés pour un type spécifique de pod.

L'utilisation de politiques de déscheduling vous permet d'appliquer différentes stratégies d'éviction de pods selon les scénarios. Par exemple, pour évincer des pods expirés avec des TTL différents dans divers namespaces, configurez plusieurs modèles de déscheduling et définissez un seuil de TTL pour les pods de chaque namespace.

Pendant le processus de déscheduling, Koordinator Descheduler parcourt tous les modèles de déscheduling et exécute la politique Deschedule de chaque modèle. Une fois toutes les politiques Deschedule exécutées, Koordinator Descheduler parcourt à nouveau les modèles et exécute la politique Balance de chaque modèle.

Politiques de déscheduling : Deschedule et Balance

Deux politiques de déscheduling sont disponibles : Deschedule et Balance. Les politiques de déscheduling servent à identifier les pods à évincer. Pour plus d'informations sur la configuration des politiques de déscheduling et les fonctionnalités prises en charge par chaque politique, consultez la section Appliquer la configuration.

  • Deschedule : Koordinator Descheduler compare chaque pod aux contraintes de planification actuelles et évince les pods correspondants séquentiellement. Par exemple, Koordinator Descheduler évince un par un les pods qui ne correspondent pas à la règle d'affinité ou d'anti-affinité du nœud.

  • Balance : Koordinator Descheduler optimise la distribution de certains pods ou de tous les pods du cluster, puis décide quels pods évincer. Par exemple, Koordinator Descheduler évince les pods des nœuds surchargés en fonction de l'utilisation des ressources des nœuds.

Les politiques de déscheduling sont indépendantes les unes des autres. Koordinator Descheduler exécute chaque politique de déscheduling pour évincer les pods selon les règles d'éviction de la politique, puis filtre, vérifie et trie les pods correspondants. Des contraintes telles que la capacité du cluster, l'utilisation des ressources et le nombre de réplicas sont prises en compte lors de la mise en correspondance des pods avec les règles d'éviction. Une fois que Koordinator Descheduler a déterminé les pods à évincer, il envoie une demande à l'évicteur de pods pour les évincer.

Évicteurs et contrôle de l'éviction

Les évicteurs dans Koordinator Descheduler sont utilisés pour évincer les pods. Deux évicteurs sont disponibles : DefaultEvictor et MigrationController.

  • DefaultEvictor : évicteur de pods de base, qui permet de limiter le nombre maximal de pods à évincer. Utilisez et configurez DefaultEvictor de la même manière que dans Kubernetes Descheduler. Pour plus d'informations, consultez DefaultEvictor.

  • MigrationController : permet d'évincer et de migrer les pods de manière sécurisée et de suivre l'éviction des pods. Pour plus d'informations sur les paramètres, consultez MigrationController.

Pour plus d'informations sur la différence entre ces deux évicteurs, consultez la section Activer la fonctionnalité de déscheduling.

Activer le déscheduling

Pour plus d'informations sur l'installation du composant ack-koordinator et l'activation du déscheduling, consultez la rubrique Activer la fonctionnalité de déscheduling.

Vous pouvez également configurer des paramètres avancés pour Koordinator Descheduler, les modèles de déscheduling, les plug-ins de politique de déscheduling et les plug-ins d'évicteur dans un ConfigMap. Pour plus d'informations, consultez la section Configurer les paramètres avancés.

Références

  • Si vous utilisez Kubernetes Descheduler, nous vous recommandons de migrer vers Koordinator Descheduler. Pour plus d'informations sur les différences et la procédure de migration vers Koordinator Descheduler, consultez la rubrique Koordinator Descheduler et Kubernetes Descheduler.

  • La fonctionnalité de déscheduling est développée sur la base de Koordinator Descheduler du composant ack-koordinator. Vous pouvez installer et utiliser le composant ack-koordinator gratuitement. Toutefois, ce composant peut engendrer des frais dans certains scénarios. Pour plus d'informations, consultez la section Facturation.