À propos de l'autoscaler de cluster

Cet article décrit l'autoscaler de cluster, qui contrôle automatiquement la taille de vos pools de nœuds.

Procéder à l'autoscaling d'un pool de nœuds

L'autoscaler de cluster redimensionne automatiquement le nombre de nœuds dans un pool de nœuds donné, en fonction des demandes des charges de travail. Vous n'avez pas besoin d'ajouter ou de supprimer manuellement des nœuds, ni de surprovisionner vos pools de nœuds. À la place, il suffit de spécifier une taille minimale et une taille maximale pour le pool de nœuds, après quoi le reste est automatique.

Si des ressources doivent être supprimées ou déplacées lors de l'autoscaling de votre cluster, vos charges de travail peuvent être temporairement interrompues. Par exemple, si votre charge de travail comprend un contrôleur avec une seule instance dupliquée, le pod de cette instance dupliquée peut être reprogrammé sur un nœud différent si son nœud actuel est supprimé. Pour cette raison, vous devez concevoir vos charges de travail de manière à tolérer des perturbations potentielles ou à garantir que les pods critiques ne sont pas interrompus.

Fonctionnement de l'autoscaler de cluster

L'autoscaler de cluster fonctionne par pool de nœuds. Lorsque vous utilisez l'autoscaler de cluster pour configurer un pool de nœuds, vous spécifiez une taille minimale et maximale pour le pool de nœuds. Vous pouvez modifier la taille minimale et maximale lorsque vous créez un pool de nœuds ou mettez à jour un pool de nœuds.

L'autoscaler de cluster augmente ou diminue automatiquement la taille d'un pool de nœuds en fonction des demandes en ressources (plutôt que de l'utilisation réelle) de ce pool de nœuds. L'autoscaler de cluster ajoute des nœuds si les objets Pod ne sont pas programmables et que la capacité du pool de nœuds est insuffisante pour répondre aux requêtes.

L'autoscaler de cluster supprime également les nœuds s'ils sont sous-utilisés et si tous les objets du pod peuvent être programmés sur un plus petit nombre de nœuds. Si le nœud ne peut pas être drainé correctement au bout de 10 minutes, il est automatiquement arrêté. Cette durée n'est pas configurable.

Si un pod demande trop peu de ressources (par exemple, si les valeurs par défaut sont insuffisantes), l'autoscaler de cluster ne corrige pas la situation. Vous pouvez vous assurer que l'autoscaler de cluster fonctionne aussi précisément que possible en effectuant des demandes de ressources adéquates pour toutes vos charges de travail. Pour en savoir plus, consultez la page Gérer les ressources pour les conteneurs.

Critères d'exploitation

L'autoscaler de cluster repose sur les hypothèses suivantes lors du redimensionnement d'un pool de nœuds :

  • Tous les objets Pods répliqués peuvent être redémarrés sur un autre nœud, provoquant éventuellement une brève interruption. Si votre charge de travail ne tolère pas les perturbations, configurez-la pour qu'elle s'exécute sur un pool de nœuds où l'autoscaling est désactivé. Pour en savoir plus, consultez la section Contrôler la planification avec des rejets de nœuds.
  • L'autoscaler de cluster peut remplacer toutes les opérations de gestion manuelle des nœuds que vous effectuez.
  • Tous les nœuds d'un pool de nœuds unique ont le même ensemble de libellés.
  • L'autoscaler de cluster sélectionne un groupe de nœuds disposant du processeur le moins inactif ou de la mémoire la moins inutilisée après le scaling à la hausse. Ce comportement affecte le choix des pools de nœuds soumis à un scaling à la hausse si vous avez différentes tailles de nœuds (par exemple, des nœuds à haute capacité de processeur ou de mémoire) dans le même cluster.

Taille minimale et maximale du pool de nœuds

Vous pouvez spécifier la taille minimale et maximale de chaque pool de nœuds de votre cluster à l'aide des options min-nodes et max-nodes. Pour désactiver l'autoscaling, définissez min-nodes et max-nodes sur le même nombre. L'autoscaler de cluster prend des décisions en matière de scaling dans les limites de cette taille.

Lorsque vous définissez la taille maximale de vos pools de nœuds, assurez-vous qu'ils sont suffisamment volumineux pour exécuter toutes vos charges de travail. Si les pools de nœuds de votre cluster ne disposent pas de suffisamment de mémoire et de processeurs pour exécuter toutes vos charges de travail, des interruptions peuvent se produire.

Utiliser PodDisruptionBudget pour protéger les charges de travail

Vous pouvez configurer GKE sur Azure pour vous protéger contre l'interruption de la charge de travail avec un PodDisruptionBudget. Lorsque vous créez un PodDisruptionBudget, vous spécifiez le nombre minimal de pods dupliqués qui doivent être disponibles ou le nombre maximal de pods dupliqués qui peuvent être indisponibles à tout moment. Pour en savoir plus, consultez la section Spécifier un budget d'interruption pour votre application.

Étapes suivantes