À propos des marges de capacité

Les tampons de capacité vous aident à réduire la latence de démarrage des pods pour vos charges de travail Google Kubernetes Engine (GKE). Pour ce faire, ils vous permettent de déclarer de manière proactive des niveaux de capacité active ou de secours dans votre cluster. En déclarant la capacité de réserve à l'avance, vous pouvez démarrer les charges de travail plus rapidement et de manière économique.

Ce document explique le fonctionnement des marges de capacité. Pour savoir comment activer et utiliser les marges de capacité, consultez Configurer les marges de capacité.

Quand utiliser une marge de capacité ?

Utilisez une marge de capacité pour les applications sensibles à la latence de démarrage et qui doivent évoluer rapidement. En cas d'augmentation soudaine du trafic, un tampon actif fournit une capacité préprovisionnée conçue pour un scaling à faible latence. En cas d'augmentation soutenue du trafic, une mémoire tampon de secours permet de planifier les pods à un coût plus abordable que le préprovisionnement.

Les marges de capacité offrent les avantages suivants :

  • Minimiser la latence de scaling : les tampons actifs fournissent des VM en cours d'exécution, ce qui permet de minimiser la latence. Les tampons de secours reprennent rapidement, ce qui permet de disposer plus rapidement de la capacité que les nouveaux nœuds.
  • Surprovisionnement économique : les tampons de capacité vous aident à maintenir un filet de sécurité de taille fixe. Pour les charges de travail à grande échelle, cette approche est souvent plus économique que les autres méthodes de surprovisionnement (par exemple, en abaissant les cibles d'utilisation de l'autoscaler horizontal de pods (AHP)), qui peuvent augmenter la capacité inutilisée de manière linéaire à mesure que votre cluster se développe.
  • Répondre aux exigences de la charge de travail : vous contrôlez entièrement la taille du tampon de capacité. Vous pouvez, par exemple, intégrer des daemonsets ou des données personnalisés, et contrôler le préchargement des images et le pré-démarrage des charges de travail pour répondre à vos besoins.

Nous recommandons des marges de capacité pour les charges de travail sensibles à la latence qui nécessitent une mise à l'échelle rapide, comme les agents d'IA, l'inférence d'IA, les applications de vente au détail lors d'événements commerciaux ou les serveurs de jeux lors des pics d'activité des joueurs.

Nous ne recommandons pas de tampons de capacité pour les charges de travail qui ne sont pas sensibles à la latence de démarrage, par exemple les tâches de traitement par lot. Pour ces charges de travail, le surprovisionnement des ressources n'apporte aucun avantage.

Fonctionnement des marges de capacité

Implémentez une marge de capacité en utilisant une ressource personnalisée Kubernetes CapacityBuffer pour définir une marge de capacité de réserve. L'autoscaler de cluster GKE surveille les ressources CapacityBuffer et les traite comme une demande en attente pour s'assurer qu'une capacité de réserve est disponible. Si votre cluster ne dispose pas de suffisamment de capacité pour répondre aux demandes de ressources définies dans le tampon, l'autoscaler de cluster provisionne des nœuds supplémentaires.

Lorsqu'une charge de travail à haute priorité est mise à l'échelle, GKE la planifie immédiatement sur la capacité disponible dans le tampon. Cette planification immédiate s'applique au nombre de répliques ou à la quantité de ressources réservées dans le tampon, ce qui évite le délai habituel associé au provisionnement des nœuds. Lorsqu'une charge de travail utilise une unité tampon, l'autoscaler de cluster provisionne un nouveau nœud pour remplir le tampon.

Stratégies de marge de capacité

Vous pouvez configurer des tampons de capacité à l'aide de différentes stratégies de provisionnement en fonction de vos exigences en termes de latence et de coût.

Marge active

Un tampon actif fournit des VM en cours d'exécution pour une mise à l'échelle à faible latence des charges de travail qui s'inscrivent dans la capacité réservée. Comme les nœuds sont déjà prêts, ils offrent une latence minimale pour la consommation initiale du tampon lors d'un événement de scale-up.

Nous recommandons cette stratégie pour les charges de travail critiques où le temps de scaling-up est la priorité absolue.

Tampon de secours

Une mémoire tampon de secours fournit des VM suspendues. La stratégie de veille est plus économique que la stratégie active, mais elle introduit un court délai pour réactiver la VM avant qu'elle n'accepte les charges de travail.

Nous recommandons cette stratégie pour les charges de travail qui peuvent tolérer un léger délai de scaling afin d'optimiser les coûts.

CRD CapacityBuffer

Pour configurer un tampon de capacité, vous devez créer une définition de ressource personnalisée (CRD) CapacityBuffer. Vous pouvez configurer la marge de capacité pour répondre à différents critères :

  • Instances répliquées fixes : spécifiez un nombre fixe de pods tampon. Cette configuration est le moyen le plus simple de créer un tampon de taille connue.
  • Basée sur un pourcentage : définissez la taille du tampon en tant que pourcentage d'un objet évolutif existant qui définit une sous-ressource de scaling (telle qu'un déploiement, un StatefulSet, un ReplicaSet ou un Job). La taille du tampon s'ajuste de manière dynamique à mesure que la charge de travail de référence évolue. Vous ne pouvez pas définir de marge basée sur un pourcentage pour les modèles de pod, car ils ne comportent pas de champ "replicas".
  • Limites de ressources : définissez la quantité totale de processeur et de mémoire que le tampon doit réserver. Le contrôleur calcule le nombre de pods tampon à créer en fonction des demandes de ressources d'un modèle de pod référencé.

Pour en savoir plus, consultez la documentation de référence sur le CRD CapacityBuffer.

Conditions requises et limites

Les marges de capacité sont soumises aux exigences et limites suivantes :

  • Les tampons de capacité sont disponibles pour les clusters GKE exécutant la version 1.35.2-gke.1842000 ou ultérieure pour les tampons actifs, et la version 1.35.2-gke.1842002 pour les tampons de secours.
  • Les tampons de capacité ne sont compatibles qu'avec les charges de travail qui utilisent un modèle de facturation basé sur les nœuds. Les marges de capacité ne sont pas compatibles avec les charges de travail qui utilisent le modèle de facturation basé sur les pods.
  • Nous vous recommandons d'activer le provisionnement automatique des nœuds sur vos clusters. Le provisionnement automatique de nœuds permet à l'autoscaler de cluster de créer des pools de nœuds en fonction des demandes de ressources dans votre CapacityBuffer. Si vous n'activez pas le provisionnement automatique des nœuds, l'autoscaler de cluster ne fait qu'effectuer un scaling à la hausse des pools de nœuds existants.

Les tampons de secours présentent les limites supplémentaires suivantes :

Étapes suivantes