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 |
|
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. |
|
|
Plus flexible et plus granulaire que nodeSelector. Par exemple, la règle d'ordonnancement strict |
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. |
|
|
Un taint se compose d'une clé, d'une valeur et d'un effet (effets courants : |
|
|
|
Les libellés des pods déterminent l'ordonnancement pod-vers-nœud. Prend en charge la règle d'affinité |
|
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 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. |
|
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. |
|
|
|
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. |
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. |
|
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. |
|
|
|
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. |
|
|
|
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 :
|
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. |
|
|
|
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. |
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
Pour obtenir une présentation et les notes de version de kube-scheduler et de ack-koordinator, consultez Container Service for Kubernetes:kube-scheduler et ack-koordinator (anciennement ack-slo-manager).
Pour personnaliser le comportement de kube-scheduler, consultez Personnaliser les paramètres du planificateur.
Pour connaître les bonnes pratiques d'ordonnancement, telles que l'architecture de colocalisation, consultez Bonnes pratiques pour l'ordonnancement des ressources.
Activez les informations sur les coûts pour afficher l'utilisation des ressources, la répartition des coûts et les recommandations d'économies pour les clusters ACK.
Pour l'ordonnancement GPU et l'isolation mémoire, consultez Partage GPU.
Pour l'ordonnancement sur les nœuds virtuels, consultez Planifier un pod sur un nœud virtuel.