Tutoriel : Redimensionner vos node pools avec l’autoscaling (bêta)

Vous pouvez désormais activer l’autoscaler d’un cluster OKS pour gérer et redimensionner automatiquement vos node pools en fonction de votre consommation de ressources.

L’autoscaling OKS est une forme d’autoscaling horizontal. Cela signifie qu’au lieu d’augmenter les ressources CPU ou la mémoire d’une machine virtuelle existante (autoscaling vertical), il ajuste le nombre de nœuds dans vos node pools (groupes de machines virtuelles). Cela garantit une adaptation dynamique et économique de votre cluster en ajoutant ou supprimant des nœuds en fonction de l’évolution de la demande.

Après vous avoir expliqué comment fonctionne l’autoscaling, ce tutoriel est divisé en deux parties :

  • Mise à jour des clusters existants pour prendre en charge l’autoscaling.

  • Création de node pools pouvant être gérés par l’autoscaler.

L’autoscaling n’est pris en charge que pour les node pools mono-Sous-région. Vous ne pouvez pas définir le paramètre d’autoscaling sur true pour un node pool multi-Sous-région.

Cette fonctionnalité est actuellement en bêta. Pour en savoir plus sur les services bêta, voir le Glossaire et nos Conditions générales de ventes et d’utilisation.

Comprendre comment l’autoscaling se déclenche

L’upscaling

L’autoscaler ajoute des nœuds au pool dans les cas suivants :

  • Lorsque les pods restent dans un état Pending (En attente) car aucun nœud ne dispose d’une puissance CPU ou d’une mémoire suffisante pour les héberger.

  • Lorsqu’une nouvelle charge de travail demande des ressources dépassant la capacité actuelle du cluster.

  • Lorsque l’utilisation des ressources dépasse constamment la capacité disponible des nœuds.

Les pods doivent généralement rester en état Pending pendant quelques minutes avant que le upscaling ne se produise. Cela permet d’éviter la création inutile de nœuds lors de brefs retards de planification.

Le downscaling

L’autoscaler supprime des nœuds lorsque :

  • Les nœuds restent sous-exploités (faible utilisation du processeur et de la mémoire) pendant une période prolongée.

  • Tous les pods d’un nœud peuvent être reprogrammés ailleurs sans surcharger les autres nœuds.

Le downscaling ne se produit qu’après une période d’attente d’environ 10 minutes. Ce délai empêche tout nœud d’être supprimé prématurément lors de baisses temporaires du trafic.

Mettre à jour des clusters existants pour utiliser l’autoscaling avec OKS CLI

  1. Exécutez la commande cluster update pour activer manuellement la prise en charge de l’autoscaling :

    $ oks-cli cluster update \
        --profile NAME_OF_PROFILE \
        --project-name NAME_OF_PROJECT \
        --cluster-name NAME_OF_CLUSTER

    Cette commande contient les options suivantes que vous devez spécifier :

    • profile : Le profil nommé que vous avez utilisé pour créer le cluster que vous souhaitez mettre à jour.

    • project-name : Le nom du projet contenant le cluster que vous souhaitez mettre à jour.

    • cluster-name : Le nom du cluster que vous souhaitez mettre à jour.

  2. Exécutez la commande cluster upgrade pour déployer les composants de l’autoscaler sur votre cluster :

    $ oks-cli cluster upgrade \
        --profile NAME_OF_PROFILE \
        --project-name NAME_OF_PROJECT \
        --cluster-name NAME_OF_CLUSTER

    Cette commande contient les options suivantes que vous devez spécifier :

    • profile : Le profil nommé que vous avez utilisé pour créer le cluster que vous souhaitez mettre à niveau.

    • project-name : Le nom du projet contenant le cluster que vous souhaitez mettre à niveau.

    • cluster-name : Le nom du cluster que vous souhaitez mettre à niveau.

Vous devez ensuite confirmer la mise à niveau du cluster. Entrez y pour continuer.

Créer des node pools gérés par l’autoscaler

Une fois que votre cluster prend en charge l’autoscaler, vous pouvez configurer vos node pools pour qu’ils soient automatiquement mis à l’échelle en fonction de la charge de travail.

Avant de commencer :

  • Vous devez disposer d’un cluster OKS existant dans un état Ready (Prêt).

  • Vous devez disposer d’un fichier kubeconfig valide et d’un accès réseau au point de terminaison API du cluster. Vous pouvez vérifier la connectivité à l’aide de la commande kubectl get nodes.

  • Les nœuds auxquels sont associés des volumes locaux (par exemple, via hostPath) sont exclus des opérations et des mises à niveau de l’autoscaler afin d’éviter toute perte de données. Pour autoriser leur suppression, vous devez les annoter manuellement à l’aide de la commande kubectl annotate node.

Mettre à jour votre manifeste de node pool

Pour créer un node pool pouvant être géré par l’autoscaler, vous devez ajouter les annotations requises à votre manifeste de node pool, notamment en :

  • Définissant un nombre minimum et maximum de nœuds.

  • Définissant le paramètre d’autoscaling sur true.

L’exemple de manifeste suivant définit un node pool nommé autoscaling-pool avec un autoscaling activé entre 2 et 10 nœuds. Il utilise le type de nœuds tinav6.c2r4p3 dans la Région eu-west-2a, démarre avec 2 nœuds, prend en charge la mise à niveau automatique et la réparation automatique, et limite les mises à niveau à 1 nœud indisponible à la fois sans surcharge :

Exemple de manifeste de node pool
apiVersion: oks.dev/v1beta2
kind: NodePool
metadata:
  name: autoscaling-pool
spec:
  minNodes: 2
  maxNodes: 10
  desiredNodes: 2
  nodeType: tinav6.c2r4p3
  autoscaling: true
  zones:
    - eu-west-2a
  upgradeStrategy:
    maxUnavailable: 1
    maxSurge: 0
    autoUpgradeEnabled: true
  autoHealing: true

Pour en savoir plus sur comment rédiger un manifeste, voir Référence des manifestes de node pool.

Appliquer le manifeste de node pool avec kubectl

Une fois votre manifeste prêt à l’emploi, vous pouvez l’appliquer à votre cluster avec la commande suivante :

$ kubectl apply -f NAME_OF_MANIFEST.yaml

L’autoscaler gère à présent le nombre de nœuds en fonction des exigences de la charge de travail, en augmentant ou en diminuant le nombre de nœuds dans les limites définies par les paramètres minNodes et maxNodes de votre manifeste.

La valeur desiredNodes sert uniquement à définir le nombre initial de nœuds. L’autoscaler la remplacera si nécessaire afin de répondre aux exigences de la charge de travail.

Une fois le node pool actif, l’autoscaler surveille en permanence le cluster.

Pages connexes