Utiliser la mise à l’échelle automatique du cluster sur un cluster AKS

S’applique à : AKS sur Azure Local

Pour suivre les demandes d’application dans Kubernetes, vous devrez peut-être ajuster le nombre de nœuds qui exécutent vos charges de travail. Le composant de mise à l’échelle automatique de cluster surveille les pods de votre cluster qui ne peuvent pas être programmés en raison de contraintes de ressources. Lorsque la mise à l’échelle automatique détecte des problèmes, elle augmente le nombre de nœuds dans le pool de nœuds pour répondre à la demande de l’application. Il vérifie également régulièrement les nœuds pour s’assurer qu’il n’y a pas de pods en cours d’exécution et réduit le nombre de nœuds si nécessaire. Cet article vous montre comment activer et gérer l’autoscaler de cluster dans AKS.

Note

Avant d’activer la mise à l’échelle automatique sur votre cluster Local Azure, passez en revue les exigences de mise à l’échelle pour AKS sur Azure Local pour vous assurer que votre environnement répond aux limites requises.

Activer la mise à l’échelle automatique du cluster sur un nouveau cluster

Créez un cluster AKS à l’aide de la commande az aksarc create, puis activez et configurez l’autoscaler du cluster sur le pool de nœuds du cluster à l’aide du paramètre --enable-cluster-autoscaler, en spécifiant --min-count et --max-count pour un nœud. L’exemple de commande suivant crée un cluster avec un nœud unique, active la mise à l’échelle automatique du cluster et définit au minimum un et un maximum de trois nœuds :

az aksarc create \
--resource-group myResourceGroup \
--name my-aks-arc-cluster \
--custom-location $customLocationId 
--vnet-ids $vnetId
--generate-ssh-keys
--aad-admin-group-object-ids $entraIds
--node-count 1 \
--enable-cluster-autoscaler \
--min-count 1 \
--max-count 3

La création du cluster et la configuration des paramètres de mise à l’échelle automatique du cluster prennent quelques minutes.

Activer la mise à l’échelle automatique du cluster sur un cluster existant

Mettez à jour un cluster existant à l’aide de la commande az aksarc update, puis activez et configurez l’outil de mise à l’échelle automatique du cluster à l’aide du paramètre --enable-cluster-autoscaler en spécifiant --min-count et --max-count pour un nœud. L’exemple de commande suivant met à jour un cluster AKS existant pour activer la mise à l’échelle automatique du cluster sur le cluster et définit au minimum un et un maximum de trois nœuds :

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

La mise à jour du cluster et la configuration des paramètres de mise à l’échelle automatique du cluster prennent quelques minutes.

Désactiver la mise à l’échelle automatique du cluster sur un cluster

Désactivez l’autoscaler du cluster à l’aide de la commande az aksarc update et du paramètre --disable-cluster-autoscaler :

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --disable-cluster-autoscaler

Les nœuds ne sont pas supprimés lorsque le générateur de mise à l’échelle automatique du cluster est désactivé.

Modifier les paramètres de l’autoscaler de cluster

Si vos demandes d’application changent, vous devrez peut-être ajuster le nombre de nœuds de l’autoscaler de cluster pour que la mise à l'échelle soit efficace. Modifiez le nombre de nœuds à l’aide de la commande az aksarc update et mettez à jour l’autoscaler du cluster à l’aide du paramètre --update-cluster-autoscaler en spécifiant vos valeurs --min-count et --max-count mises à jour pour le nœud.

az aksarc update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

Utiliser le profil de mise à l’échelle automatique du cluster

Vous pouvez configurer des paramètres plus précis de l’autoscaler de cluster en modifiant les valeurs par défaut du profil d’autoscaler à l’échelle du cluster. Par exemple, un événement de scale-down se produit lorsque des nœuds sont sous-utilisés après 10 minutes. Si vous avez des charges de travail qui s’exécutent toutes les 15 minutes, vous souhaitez peut-être modifier le profil du programme de mise à l’échelle automatique pour effectuer un scale-down des nœuds sous-utilisés après 15 ou 20 minutes. Lorsque vous activez l’option de mise à l’échelle automatique de cluster, un profil par défaut est utilisé, à moins de spécifier différents paramètres.

Paramètres du profil de mise à l’échelle automatique du cluster

Le tableau suivant répertorie les paramètres disponibles pour le profil d’autoscaler de cluster :

Setting Description Valeur par défaut
scan-interval Fréquence à laquelle le cluster est réévalué pour effectuer un scale-up ou un scale-down. 10 secondes
scale-down-delay-after-add Durée, après le scale-up, à l’issue de laquelle s’effectue la reprise de l’évaluation de scale-down. 10 minutes
scale-down-delay-after-delete Durée, après la suppression du nœud, à l’issue de laquelle s’effectue la reprise de l’évaluation de scale-down. scan-interval
scale-down-delay-after-failure Délai après un échec de réduction de capacité au terme duquel l’évaluation de la réduction de capacité reprend. Trois minutes
scale-down-unneeded-time Durée pendant laquelle un nœud doit être inutile avant d’être éligible pour un scale-down. 10 minutes
scale-down-unready-time Durée pendant laquelle un nœud non prêt doit être inutile avant d’être éligible pour un scale-down. 20 minutes
scale-down-utilization-threshold Niveau d’utilisation du nœud (défini comme la somme des ressources demandées divisée par la capacité) auquel un nœud peut être envisagé pour un scale-down. 0.5
max-graceful-termination-sec Nombre maximal de secondes pendant lesquelles l’autoscaler du cluster attend l’arrêt d’un pod lorsqu’il tente de réduire le nombre de nœuds. 600 secondes
balance-similar-node-groups Détecte les pools de nœuds similaires et équilibre le nombre de nœuds entre eux. false
expander Type de groupe de nœuds utilisé par l’outil d’expansion lors de la mise à l’échelle vers le haut. Les valeurs possibles incluent most-pods, random, least-waste etpriority.
skip-nodes-with-local-storage Si true, la mise à l’échelle automatique du cluster ne supprime pas les nœuds avec des pods avec un stockage local ; par exemple, EmptyDir ou HostPath. true
skip-nodes-with-system-pods Si true, l’autoscaler du cluster ne supprime pas les nœuds contenant des pods du namespace kube-system (à l’exception des DaemonSet et des pods miroir). true
max-empty-bulk-delete Nombre maximal de nœuds vides pouvant être supprimés en même temps 10 nœuds
new-pod-scale-up-delay Pour les scénarios de type mise à l’échelle en rafales ou par lots dans lesquels l’autorité de certification ne doit pas agir avant que le planificateur Kubernetes n’ait pu planifier tous les pods, vous pouvez indiquer à l’autorité de certification d’ignorer les pods non planifiés avant qu’ils n’aient atteint une certaine ancienneté. 0 seconde
max-total-unready-percentage Pourcentage maximal de nœuds non prêts dans le cluster. Une fois ce pourcentage dépassé, l’autorité de certification arrête les opérations. 45%
max-node-provision-time Durée maximale pendant laquelle la mise à l’échelle automatique attend qu’un nœud soit provisionné. 15 minutes

Définir le profil de mise à l’échelle automatique du cluster sur un nouveau cluster

Créez un cluster AKS à l’aide de la az aksarc create commande et définissez le profil de mise à l’échelle automatique du cluster à l’aide du cluster-autoscaler-profile paramètre :

az aksarc create \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --node-count 1 \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3 \
  --cluster-autoscaler-profile scan-interval=30s

Définir le profil de mise à l’échelle automatique du cluster sur un cluster existant

Définissez la mise à l’échelle automatique de cluster sur un cluster existant à l’aide de la commande az aksarc update et du paramètre cluster-autoscaler-profile. L’exemple suivant configure le paramètre d’intervalle d’analyse sur 30 s :

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --cluster-autoscaler-profile scan-interval=30s

Rétablir les valeurs par défaut du profil de mise à l’échelle automatique de cluster

Réinitialisez le profil de mise à l’échelle automatique du cluster à l’aide de la az aksarc update commande :

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --cluster-autoscaler-profile ""

Utiliser efficacement la mise à l’échelle automatique

Maintenant que le cluster et le pool de nœuds sont configurés pour être mis à l’échelle automatiquement, vous pouvez éventuellement configurer une charge de travail pour qu’elle soit également mise à l’échelle de manière à utiliser les fonctionnalités de mise à l’échelle automatique horizontale.

Note

Les conseils suivants ne sont pas officiellement pris en charge par Microsoft. Il est partagé comme recommandation de meilleur effort basée sur les pratiques open source.

Il existe deux méthodes disponibles pour la mise à l’échelle de la charge de travail :

  • Kubernetes Horizontal Pod Autoscaler : en fonction des caractéristiques de charge, Horizontal Pod Autoscaler (également appelé « horizontal autoscaler ») adapte les pods d'un déploiement d'application aux nœuds disponibles dans le cluster Kubernetes. Si aucun autre nœud n'est disponible pour être planifié, l'autoscaler horizontal instancie un nouveau nœud sur lequel planifier les pods. Si la charge de l'application diminue, les nœuds sont réduits à nouveau. Pour que l’autoscaler de pod horizontal fonctionne, vous devez déployer manuellement le composant Metrics Server dans votre cluster AKS. Pour plus d’informations sur les règles de mise à l’échelle automatique de pod horizontale, consultez mise à l’échelle automatique de pod horizontale Kubernetes.
  • Règles d’anti-affinité des nœuds Kubernetes : les règles d’anti-affinité pour un déploiement Kubernetes peuvent spécifier qu’un ensemble de pods ne peut pas être mis à l’échelle sur le même nœud et qu’un autre nœud est nécessaire pour mettre à l’échelle la charge de travail. En combinaison avec les caractéristiques de charge ou le nombre de pods cibles pour les instances d'application, l'autoscaler horizontal instancie de nouveaux nœuds dans le pool de nœuds afin de satisfaire les requêtes. Si la demande d’application diminue, l’autoscaler horizontal effectue une nouvelle mise à l’échelle vers le bas du pool de nœuds. Pour plus d’informations sur les règles d’affinité des pods Kubernetes, consultez Affectation de pods à des nœuds.

Étapes suivantes

Cet article vous a montré comment mettre automatiquement à l’échelle le nombre de nœuds AKS. Pour mettre à l’échelle manuellement des pools de nœuds, consultez gérer les pools de nœuds dans les clusters AKS.