Procéder à l'autoscaling des groupes de nœuds


Si vous utilisez des nœuds à locataire unique pour vos charges de travail, vous pouvez gérer automatiquement la taille des groupes de nœuds à l'aide de l'autoscaler de groupe de nœuds. Vous pouvez configurer l'autoscaling pendant ou après la création d'un groupe de nœuds.

L'autoscaler peut vous aider à gérer automatiquement la taille de vos groupes de nœuds à locataire unique. Il effectue pour cela les opérations suivantes :

  • Il augmente la taille d'un groupe de nœuds lorsque la capacité est insuffisante pour une autre instance de machine virtuelle (VM) sur le groupe de nœuds. Une fois que l'autoscaler a augmenté la taille du groupe de nœuds, les VM sont planifiées de manière transparente.

  • Il réduit la taille d'un groupe de nœuds lorsqu'il comprend des nœuds vides, ce qui vous évite d'avoir à payer pour les nœuds à locataire unique inutilisés.

Lors du scaling d'un groupe de nœuds, l'autoscaler prend en compte la capacité requise pour la VM planifiée, la capacité libre sur les nœuds qu'il cible et la stratégie d'autoscaling du groupe de nœuds. La capacité requise dépend uniquement de la taille de la VM. La capacité disponible est estimée en fonction de la taille du nœud, des VM déjà planifiées dessus et du ratio de sursollicitation des processeurs facultatif.

Le schéma ci-dessous illustre les opérations suivantes :

  1. L'autoscaler de groupe de nœuds, qui effectue le scaling horizontal d'un groupe de nœuds en ajoutant un nouveau nœud en réponse au déploiement d'une VM vers un groupe de nœuds sans nœuds.

  2. L'autoscaler de groupe de nœuds, qui effectue le scaling vertical en supprimant un nœud vide d'un groupe de nœuds à locataire unique.

Autoscaler de groupe de nœuds gérant la taille du groupe de nœuds.

Modes de l'autoscaler

Par défaut, l'autoscaler n'est pas activé sur les groupes de nœuds. Lorsque l'autoscaler est désactivé, vous devez gérer manuellement la taille de vos groupes de nœuds. Si vous activez l'autoscaler sur un groupe de nœuds, vous pouvez le configurer pour qu'il augmente ou diminue la taille du groupe de nœuds (scaling horizontal à la hausse et à la baisse), ou qu'il ne puisse qu'augmenter la taille du groupe (scaling horizontal à la hausse uniquement).

Scaling vertical ou horizontal

Dans ce mode, l'autoscaler de groupe de nœuds augmente (scaling horizontal à la hausse) et diminue (scaling horizontal à la baisse) la taille de vos groupes de nœuds. Pour ce mode, vous devez spécifier une taille maximale et une taille minimale pour le groupe de nœuds. L'autoscaler ne fait pas passer la taille du groupe de nœuds au-dessus du maximum spécifié ni en dessous du minimum spécifié.

L'ajustement à la hausse est déclenché lorsque la planification d'une VM échoue en raison d'un manque de capacité. Pour résoudre ce problème, un nouveau nœud est ajouté au groupe et l'opération est réessayée.

La réduction de l'échelle est déclenchée lorsqu'un nœud reste vide pendant une période donnée. Un nœud vide est le résultat de la suppression ou de la migration d'une VM hors du groupe de nœuds. Si la stratégie d'autoscaling du groupe de nœuds le permet, le nœud vide est programmé pour être supprimé après une période de stabilisation. La période de stabilisation garantit que le nœud est toujours disponible si vous devez l'utiliser.

Scaling horizontal uniquement

Avec ce mode, l'autoscaler augmente la taille du groupe de nœuds en réponse à des requêtes de planification de VM, mais ne supprime pas les nœuds vides des groupes de nœuds. Google recommande ce mode pour augmenter de manière monotone les charges de travail croissantes ou les charges de travail nécessitant une affinité de serveur physique, telles que les charges de travail BYOL, qui requièrent des licences sur le même serveur physique.

Vous devez utiliser ce mode si vos groupes de nœuds sont configurés avec la stratégie de maintenance Migrer dans le groupe de nœuds.

Plage de tailles d'un groupe de nœuds

Lorsque vous activez l'autoscaler, vous définissez la plage de tailles du groupe de nœuds en indiquant une valeur minimale et une valeur maximale pour la taille du groupe de nœuds.

Si vous ne spécifiez pas de valeur pour la taille minimale, l'autoscaler la définit sur zéro (0). Si vous spécifiez une valeur pour la taille minimale, celle-ci doit être un entier supérieur ou égal à 0 et inférieur ou égal à la taille maximale.

Vous devez spécifier une valeur pour la taille maximale du groupe de nœuds. La valeur doit être un entier supérieur ou égal à 0 et inférieur ou égal à 100, qui est la taille maximale autorisée pour un groupe de nœuds à locataire unique. La valeur doit être supérieure ou égale à la valeur minimale spécifiée.

Pour gérer les charges de travail pouvant dépasser la taille maximale de 100 pour un groupe de nœuds, créez plusieurs groupes de nœuds avec des libellés d'affinité correspondants (par exemple, workload:in:my-autoscaled-node-groups). Planifiez ensuite des VM à l'aide de ce libellé d'affinité et activez l'autoscaling sur chaque groupe pour créer un ensemble de groupes de nœuds à scaling dynamique.

Disponibilité

Vous ne pouvez utiliser l'autoscaler de nœuds à locataire unique que dans les régions compatibles avec les nœuds à locataire unique.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Activer l'autoscaler de groupe de nœuds

Configurez l'autoscaling sur un nouveau groupe de nœuds.

gcloud

L'exemple ci-dessous montre comment utiliser la commande node-groups create pour activer l'autoscaler lorsque vous créez un groupe de nœuds. Pour ajouter un autoscaler à un groupe de nœuds existant, utilisez la commande node-groups update.

gcloud compute sole-tenancy node-groups create group-name \
    --node-template template-name \
    --target-size size \
    --maintenance-policy maintenance-policy \
    --zone zone \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

Remplacez les éléments suivants :

  • group-name : le nom du groupe de nœuds à créer.
  • template-name : le nom du modèle de nœud à partir duquel le groupe de nœuds sera créé.
  • size : le nombre cible initial de nœuds dans le groupe de nœuds.
  • maintenance-policy : indique si les VM migrent et si elles sont redémarrées pendant les événements de maintenance d'hôte. Définissez cette option sur l'une des valeurs suivantes :
    • default : les VM migrent à chaud vers un nouveau nœud.
    • migrate-within-node-group : les VM migrent à chaud vers un autre nœud du groupe.
    • restart-in-place : les VM redémarrent sur le même nœud après leur arrêt en raison d'un événement de maintenance.
  • zone : la zone dans laquelle créer le groupe de nœuds.
  • mode : le mode de l'autoscaler sur ce groupe de nœuds. Définissez l'une des valeurs suivantes :
    • off : désactive l'autoscaler.
    • on : active le scaling vertical et le scaling horizontal.
    • only-scale-out : active seulement le scaling horizontal. Vous devez utiliser ce mode si vos groupes de nœuds sont configurés pour redémarrer leurs VM hébergées sur un nombre minimal de serveurs.
  • max-nodes : la taille maximale du groupe de nœuds. Définissez une valeur inférieure ou égale à 100 et supérieure ou égale à la valeur de min-nodes.
  • min-nodes : la taille minimale du groupe de nœuds, qui doit être un entier inférieur ou égal à la valeur de max-nodes. La valeur par défaut est 0.

REST

L'exemple suivant montre comment utiliser la commande nodeGroups.insert pour activer l'autoscaler lorsque vous créez un groupe de nœuds. Pour ajouter un autoscaler à un groupe de nœuds existant, utilisez la commande nodeGroups.patch.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/nodeGroups?initialNodeCount=initial-node-count

  {
    "name": "group-name",
    "nodeTemplate": "template-name",
    "autoscalingPolicy": {
      "mode": "mode",
      "min_nodes": min-nodes,
      "max_nodes": max-nodes
    }
    "maintenancePolicy": maintenance-policy
  }

Remplacez les éléments suivants :

  • project-id : l'ID du projet pour lequel vous souhaitez ajouter un groupe de nœuds avec un autoscaler.
  • zone : la zone dans laquelle créer le groupe de nœuds.
  • initial-node-count : obligatoire lors de la création du groupe de nœuds. Cet élément spécifie le nombre initial de nœuds dans le groupe de nœuds. Si la valeur de min-nodes est supérieure au nombre initial de nœuds, la taille du groupe de nœuds est soumise à un scaling horizontal pour correspondre à la valeur de min-nodes.
  • group-name : le nom du nouveau groupe de nœuds.
  • template-name : le nom du modèle de nœud à partir duquel créer le groupe de nœuds.
  • mode : le mode de l'autoscaler sur ce groupe de nœuds. Définissez cette option sur l'une des valeurs suivantes :
    • OFF : désactive l'autoscaler.
    • ON : active le scaling vertical et le scaling horizontal.
    • ONLY_SCALE_OUT : active seulement le scaling horizontal. Vous devez utiliser ce mode si vos groupes de nœuds sont configurés pour redémarrer leurs VM hébergées sur un nombre minimal de serveurs.
  • max-nodes : la taille maximale du groupe de nœuds. Définissez une valeur inférieure ou égale à 100 et supérieure ou égale à la valeur de min-nodes.
  • min-nodes : la taille minimale du groupe de nœuds, qui doit être un entier inférieur ou égal à la valeur de max-nodes. La valeur par défaut est 0.
  • maintenance-policy : indique si les VM migrent et si elles sont redémarrées pendant les événements de maintenance d'hôte. Définissez ce paramètre sur l'une des valeurs suivantes :
    • DEFAULT : les VM migrent à chaud vers un nouveau nœud.
    • MIGRATE_WITHIN_NODE_GROUP : les VM migrent à chaud vers un autre nœud du groupe.
    • RESTART_IN_PLACE : les VM redémarrent sur le même nœud après leur arrêt en raison d'un événement de maintenance.

Mettre à jour les paramètres de l'autoscaler

Vous modifiez les paramètres de l'autoscaler sur un groupe de nœuds en mettant à jour le mode de l'autoscaler ou les tailles minimale et maximale du groupe de nœuds.

gcloud

L'exemple suivant montre comment utiliser la commande node-groups update pour modifier le mode de l'autoscaler sur un groupe de nœuds.

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode mode \
    --max-nodes max-nodes \
    --min-nodes min-nodes

Remplacez les éléments suivants :

  • name : le nom du groupe de nœuds sur lequel vous souhaitez modifier le mode de l'autoscaler.
  • mode : le mode de l'autoscaler sur ce groupe de nœuds. Définissez cette option sur l'une des valeurs suivantes :
    • off : désactive l'autoscaler.
    • on : active le scaling vertical et le scaling horizontal.
    • only-scale-out : active seulement le scaling horizontal. Vous devez utiliser ce mode si vos groupes de nœuds sont configurés pour redémarrer leurs VM hébergées sur un nombre minimal de serveurs.
  • max-nodes : taille maximale du groupe de nœuds. Définissez une valeur inférieure ou égale à 100 et supérieure ou égale à la valeur de min-nodes.
  • min-nodes : la taille minimale du groupe de nœuds, qui doit être un entier inférieur ou égal à la valeur de max-nodes. La valeur par défaut est 0.

REST

L'exemple suivant montre comment utiliser la commande nodeGroups.patch pour modifier le mode d'un autoscaler sur un groupe de nœuds.

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode",
    "minSize": min-nodes,
    "maxSize": max-nodes
  }
}

Remplacez les éléments suivants :

  • project-id : l'ID du projet contenant le groupe de nœuds pour lequel vous souhaitez modifier le mode de l'autoscaler.
  • group-zone : la zone contenant le groupe de nœuds pour lequel vous souhaitez modifier le mode de l'autoscaler.
  • group-name : le nom du groupe de nœuds pour lequel vous souhaitez modifier le mode de l'autoscaler.
  • template-name : le nom du modèle de nœud à partir duquel le groupe de nœuds a été créé.
  • mode : le mode de l'autoscaler sur ce groupe de nœuds. Définissez l'une des options suivantes :

    • OFF : désactive l'autoscaler.
    • ON : active le scaling vertical et le scaling horizontal.

    • ONLY_SCALE_OUT : active seulement le scaling horizontal. Vous devez utiliser ce mode si vos groupes de nœuds sont configurés avec la stratégie de maintenance Migrer dans le groupe de nœuds.

  • max-nodes : taille maximale du groupe de nœuds. Définissez une valeur inférieure ou égale à 100 et supérieure ou égale à la valeur de min-nodes.

  • min-nodes : la taille minimale du groupe de nœuds, qui doit être un entier inférieur ou égal à la valeur de max-nodes. La valeur par défaut est 0.

Mettre à jour manuellement la taille des groupes de nœuds avec autoscaling

Lorsque l'autoscaler est activé, la taille du groupe de nœuds est gérée automatiquement, mais vous pouvez planifier ou supprimer des VM sur ce groupe de nœuds, en procédant ainsi à une mise à jour manuelle de la taille du groupe.

Pour réduire manuellement la taille d'un groupe de nœuds avec autoscaling, supprimez les VM du nœud jusqu'à ce que le nœud soit vide. Lorsque le nœud est vide, l'autoscaler le supprime, ce qui réduit la taille du groupe de nœuds.

Pour augmenter manuellement la taille d'un groupe de nœuds avec autoscaling, définissez la taille minimale du groupe sur une valeur supérieure à la taille actuelle. Lorsque la taille minimale d'un groupe est définie sur une valeur supérieure à la taille actuelle, l'autoscaler adapte la taille du groupe à la nouvelle taille minimale spécifiée.

Lorsque les groupes de nœuds sont configurés seulement pour un scaling horizontal, l'autoscaler gère automatiquement les augmentations de taille de groupe et désactive les augmentations manuelles. Avec ce paramètre, vous pouvez réduire la taille d'un groupe en supprimant les VM d'un nœud jusqu'à ce que ce nœud soit vide, puis vous pouvez supprimer le nœud vide.

Désactiver l'autoscaler

Lorsque vous n'avez plus besoin d'utiliser l'autoscaler pour gérer automatiquement la taille de vos groupes de nœuds, ou si vous devez gérer manuellement la taille de vos groupes de nœuds, désactivez-le.

gcloud

gcloud compute sole-tenancy node-groups update name \
    --autoscaler-mode OFF

Remplacez name par le nom du groupe de nœuds pour lequel vous souhaitez supprimer la règle d'autoscaling.

REST

L'exemple suivant montre comment utiliser la commande nodeGroups.patch pour désactiver l'autoscaler sur un groupe de nœuds.

PATCH https://compute.googleapis.com/compute/beta/projects/project-id/zones/group-zone/nodeGroups/group-name

{
  "nodeTemplate": "template-name",
  "autoscalingPolicy": {
    "mode": "mode"
  }
}

Remplacez les éléments suivants :

  • project-id : l'ID du projet contenant le groupe de nœuds pour lequel vous souhaitez modifier le mode de l'autoscaler.
  • group-zone : la zone contenant le groupe de nœuds pour lequel vous souhaitez modifier le mode de l'autoscaler.
  • group-name : le nom du groupe de nœuds pour lequel vous souhaitez modifier le mode de l'autoscaler.
  • template-name : le nom du modèle de nœud à partir duquel le groupe de nœuds a été créé.
  • mode : le mode de l'autoscaler sur ce groupe de nœuds. Définissez la valeur sur OFF pour désactiver l'autoscaler sur ce groupe de nœuds.

Afficher l'activité de l'autoscaler

Dans la console Google Cloud, vous pouvez visualiser la modification par l'autoscaler de la taille de vos groupes de nœuds. La console Google Cloud affiche la taille actuelle du groupe de nœuds. Si l'autoscaler est en train d'ajuster la taille du groupe, vous pouvez également voir la taille cible du groupe de nœuds.

Console

  1. Dans Google Cloud Console, accédez à la page Nœuds à locataire unique.

    Accéder à la page Nœuds à locataire unique

  2. Cliquez sur Groupes de nœuds.

  3. Vous pouvez consulter le nombre de nœuds dans chaque groupe de nœuds. Si Compute Engine est en train d'effectuer le scaling du groupe de nœuds, vous voyez également s'afficher le nombre cible de nœuds.

Étape suivante