Utiliser le provisionnement automatique des nœuds


Cette page explique comment utiliser le provisionnement automatique des nœuds dans les clusters Google Kubernetes Engine (GKE) standards.

Avec les clusters Autopilot, vous n'avez pas à vous soucier du provisionnement des nœuds, ni de la gestion des pools de nœuds, car les nœuds sont automatiquement provisionnés et font l'objet d'un scaling automatique pour répondre aux exigences de vos charges de travail.

Présentation

Le provisionnement automatique des nœuds gère automatiquement un ensemble de pools de nœuds pour le compte de l'utilisateur. Sans provisionnement automatique des nœuds, GKE ne démarre de nouveaux nœuds qu'à partir de pools de nœuds créés par l'utilisateur. Le provisionnement automatique des nœuds permet de créer et de supprimer automatiquement de nouveaux pools de nœuds.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Assurez-vous d'avoir activé l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Assurez-vous d'avoir installé le SDK Cloud.
  • Configurez les paramètres de l'outil de ligne de commande gcloud par défaut pour votre projet en utilisant l'une des méthodes suivantes:
    • Utilisez gcloud init si vous souhaitez suivre les étapes de définition des paramètres par défaut du projet.
    • Utilisez gcloud config pour définir individuellement l'ID, la zone et la région de votre projet.

    gcloud init

    1. Exécutez gcloud init et suivez les instructions :

      gcloud init

      Si vous utilisez SSH sur un serveur distant, utilisez l'option --console-only pour empêcher la commande d'ouvrir un navigateur :

      gcloud init --console-only
    2. Suivez les instructions pour autoriser l'outil gcloud à utiliser votre compte Google Cloud.
    3. Créez ou sélectionnez une configuration.
    4. Choisissez un projet Google Cloud.
    5. Choisissez une zone Compute Engine par défaut.
    6. Choisissez une région Compute Engine par défaut.

    gcloud config

    1. Définissez votre ID de projet par défaut :
      gcloud config set project PROJECT_ID
    2. Définissez votre région Compute Engine par défaut (par exemple, us-central1):
      gcloud config set compute/region COMPUTE_REGION
    3. Définissez votre zone Compute Engine par défaut (par exemple, us-central1-c):
      gcloud config set compute/zone COMPUTE_ZONE
    4. Mettez à jour gcloud vers la dernière version :
      gcloud components update

    En définissant des emplacements par défaut, vous pouvez éviter les erreurs dans l'outil gcloud, telles que les suivantes: One of [--zone, --region] must be supplied: Please specify location.

Exigences

Le provisionnement automatique des nœuds est disponible dans les versions de GKE suivantes :

  • Versions 1.11.2-gke.25 et ultérieures pour les clusters zonaux
  • Versions 1.12.x et ultérieures pour les clusters régionaux

Fonctions non compatibles

Les fonctionnalités suivantes ne sont pas compatibles avec le provisionnement automatique des nœuds. En d'autres termes, le provisionnement automatique des nœuds ne provisionne pas de pools de nœuds dotés de ces fonctionnalités, mais effectue un autoscaling des pools de nœuds existants :

Opération

Le provisionnement automatique des nœuds est un mécanisme de l'autoscaler de cluster, qui évolue par pool de nœuds. Lorsque le provisionnement automatique des nœuds est activé, l'autoscaler de cluster peut étendre automatiquement les pools de nœuds en fonction des spécifications appliquées aux pods non planifiables.

Le provisionnement automatique des nœuds crée des pools de nœuds en fonction des informations suivantes :

Limites de ressources

Le provisionnement automatique des nœuds et l'autoscaler de cluster sont limités à deux niveaux :

  • Au niveau du pool de nœuds
  • Au niveau du cluster

Limites concernant les pools de nœuds

Les pools de nœuds créés par provisionnement automatique sont limités à 1 000 nœuds.

Limites concernant les clusters

Les limites que vous définissez s'appliquent en fonction des quantités de processeurs et de mémoire utilisées dans votre cluster, et pas uniquement aux pools provisionnés automatiquement.

L'autoscaler de cluster ne crée pas de nouveaux nœuds si cela entraîne le dépassement de l'une des limites définies. Si les limites sont déjà dépassées, aucun nœud n'est supprimé automatiquement.

Séparation de la charge de travail

S'il existe des pods avec des tolérances et des affinités de nœuds en attente, le provisionnement automatique de nœuds peut provisionner des nœuds avec les libellés et les rejets correspondants.

Le provisionnement automatique des nœuds peut créer des pools de nœuds avec des libellés et des rejets si toutes les conditions suivantes sont réunies :

  • Un pod en attente nécessite un nœud doté d'un libellé avec une clé et une valeur spécifiques.
  • Le pod a une tolérance pour les rejets avec la même clé.
  • La tolérance concerne l'effet NoSchedule, l'effet NoExecute ou l'ensemble des effets.

La spécification du pod peut indiquer qu'elle nécessite des nœuds avec des libellés spécifiques de deux manières :

  • À l'aide d'un champ nodeSelector.
  • À l'aide d'un champ nodeAffinity avec un opérateur In et une seule valeur.

L'exemple suivant est un extrait d'une spécification de pod interprétée comme une demande de séparation de charge de travail. Dans cet exemple, l'administrateur du cluster a choisi dedicated comme clé pour l'isolation de la charge de travail. Les membres de l'équipe chargée de l'interface utilisateur ont déterminé qu'ils avaient besoin de nœuds dédiés pour leurs charges de travail.

Le pod a une tolérance pour les nœuds comportant le libellé dedicated=ui-team et utilise nodeAffinity pour la sélection des nœuds :

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: dedicated
            operator: In
            values:
            - ui-team

Si ce pod existe, la fonction de provisionnement automatique des nœuds peut envisager de créer des nœuds avec le rejet dedicated=ui-team:NoSchedule et le libellé dedicated=ui-team.

L'exemple suivant utilise nodeSelector et a le même effet :

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  nodeSelector:
    dedicated: ui-team

Suppression de pools de nœuds provisionnés automatiquement

Si un pool de nœuds provisionné automatiquement ne contient aucun nœud, GKE supprime ce pool. Les pools de nœuds qui ne sont pas marqués comme étant provisionnés automatiquement ne sont pas supprimés.

Types de machines compatibles

Depuis la version 1.19.7-gke.800 de GKE, le provisionnement automatique des nœuds prend en compte tous les types de machines lors de la création de pools de nœuds, à quelques exceptions près:

  • Pour les machines N1, le provisionnement automatique des nœuds ne prend en compte que les machines comportant jusqu'à 64 processeurs virtuels.
  • Par défaut, la famille de machines E2 est utilisée, sauf dans les cas suivants :
    • La charge de travail demande une fonctionnalité qui n'est pas disponible dans la famille de machines E2. Par exemple, si un GPU est requis par la charge de travail, la famille de machines N1 sera utilisée pour le nouveau pool de nœuds.
    • La charge de travail utilise le libellé machine-family. Il peut être remplacé si la demande de charge de travail ne peut pas être traitée (selon le point précédent). Pour en savoir plus, consultez la section Utiliser une famille de machines personnalisées.

Dans les versions antérieures à GKE 1.19.7-gke.800, le provisionnement automatique des nœuds ne prend en compte que les types de machines N1 comportant jusqu'à 64 processeurs virtuels.

Images de nœuds compatibles

Le provisionnement automatique des nœuds crée des pools de nœuds en utilisant l'une des images de nœuds suivantes :

  • Container-Optimized OS (cos ou cos_containerd).
  • Ubuntu (ubuntu ou ubuntu_containerd).

Compatibilité avec les Spot VM

Le provisionnement automatique des nœuds permet de créer des pools de nœuds en utilisant des Spot VM.

La création de pools de nœuds basés sur des Spot VM n'est envisagée que si des pods non programmables ayant une tolérance pour le rejet cloud.google.com/gke-spot="true":NoSchedule existent. Le rejet est automatiquement appliqué aux nœuds des pools de nœuds provisionnés automatiquement qui sont basés sur des Spot VM.

Vous pouvez combiner la tolérance avec une règle d'affinité de nœud ou nodeSelector pour le libellé de nœud cloud.google.com/gke-spot="true", afin de vous assurer que vos charges de travail ne s'exécutent que sur des pools de nœuds basés sur des Spot VM.

Compatibilité avec les pods demandant un stockage éphémère

Le provisionnement automatique des nœuds permet de créer des pools de nœuds lorsque les pods demandent un stockage éphémère. La taille du disque de démarrage provisionné dans les pools de nœuds est constante pour tous les nouveaux pools de nœuds provisionnés automatiquement. Cette taille de disque de démarrage peut être personnalisée, la valeur par défaut étant de 100 Gio. Le stockage éphémère sauvegardé par les disques SSD locaux n'est pas compatible.

Le provisionnement automatique des nœuds ne provisionnera un pool de nœuds que si le stockage éphémère pouvant être alloué d'un nœud avec un disque de démarrage spécifié est supérieur ou égal à la demande de stockage éphémère d'un pod en attente. Si la demande de stockage éphémère est supérieure à ce qui peut être alloué, le provisionnement automatique des nœuds ne provisionne pas un pool de nœuds. Les tailles de disque des nœuds ne sont pas configurées de manière dynamique en fonction des demandes de stockage éphémère des pods en attente.

Le stockage éphémère pour les pods est compatible avec les versions de GKE 1.19.7-gke.800 ou ultérieures, et 1.18.12-gke.1210 ou ultérieures.

Limites d'évolutivité

Le provisionnement automatique des nœuds présente les mêmes limites que l'autoscaler de cluster, ainsi que les limites supplémentaires suivantes :

Limite du nombre de charges de travail distinctes
Le provisionnement automatique des nœuds accepte un maximum de 100 charges de travail distinctes.
Limite du nombre de pools de nœuds
Le provisionnement automatique des nœuds est prioritaire sur la création de pools de nœuds lorsque le nombre de pools approche 100. La création de plus de 100 pools de nœuds est possible, mais prise en compte lorsque la création d'un pool de nœuds est la seule option permettant de planifier un pod en attente.

Activation du provisionnement automatique des nœuds

Vous activez le provisionnement automatique des nœuds sur un cluster à l'aide de gcloud ou de Google Cloud Console.

gcloud

Pour activer le provisionnement automatique des nœuds, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --min-cpu MINIMUM_CPU \
    --min-memory MIMIMUM_MEMORY \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster sur lequel activer le provisionnement automatique des nœuds
  • MINIMUM_CPU : nombre minimal de cœurs dans le cluster
  • MINIMUM_MEMORY : quantité minimale de mémoire dans le cluster, en gigaoctets
  • MAXIMUM_CPU : nombre maximal de cœurs dans le cluster
  • MAXIMUM_MEMORY : quantité maximale de mémoire dans le cluster, en gigaoctets

L'exemple suivant active le provisionnement automatique des nœuds sur le cluster dev-cluster et permet le scaling d'une taille totale de cluster de 1 processeur et 1 gigaoctet de mémoire à une taille maximale de 10 processeurs et 64 gigaoctets de mémoire :

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --min-cpu 1 \
    --min-memory 1 \
    --max-cpu 10 \
    --max-memory 64

Console

Pour activer le provisionnement automatique des nœuds, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur le nom du cluster.

  3. Dans la section Automatisation, cliquez sur Modifier pour accéder au Provisionnement automatique des nœuds.

  4. Cochez la case Activer le provisionnement automatique des nœuds.

  5. Définissez l'utilisation minimale et maximale du processeur et de la mémoire pour le cluster.

  6. Cliquez sur Enregistrer les modifications.

Utiliser un fichier de configuration de provisionnement automatique

Le provisionnement automatique des nœuds peut être configuré à l'aide d'un fichier de configuration YAML. Ce fichier peut ne contenir qu'une seule ligne s'il n'y a qu'un seul paramètre à modifier. Plusieurs paramètres peuvent être spécifiés dans un même fichier de configuration. Dans ce cas, tous ces paramètres seront modifiés lors de l'application du fichier de configuration.

Certaines configurations avancées ne peuvent être spécifiées qu'à l'aide d'un fichier de configuration.

Exemple 1 : l'application du fichier de configuration suivant active la réparation et la mise à niveau automatiques des nœuds sur tous les nouveaux pools de nœuds créés par provisionnement automatique :

management:
  autoRepair: true
  autoUpgrade: true

Exemple 2 : l'application du fichier de configuration ci-dessous modifie les paramètres suivants :

  • resourceLimits : définit les limites de ressources pour le processeur, la mémoire et le GPU. Le provisionnement automatique ne crée pas de nœud si la taille totale du cluster dépasse les limites de ressources spécifiées.
  • management : active la réparation et la mise à niveau automatiques des nœuds sur tous les nouveaux pools de nœuds créés par provisionnement automatique.
  • shieldedInstanceConfig : active le démarrage sécurisé et la surveillance de l'intégrité pour tous les nouveaux pools de nœuds créés par provisionnement automatique.
  • diskSizeGb : fixe la taille du disque de démarrage à 100 Go pour tous les nouveaux pools de nœuds créés par provisionnement automatique.
resourceLimits:
  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Créez un fichier avec la configuration souhaitée dans un emplacement auquel gcloud peut accéder.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster.
    • FILE_NAME : nom du fichier de configuration

    Pour en savoir plus, reportez-vous à la documentation gcloud container clusters update.

Paramètres par défaut du provisionnement automatique

Le provisionnement automatique des nœuds examine les exigences de pod dans votre cluster pour déterminer le type de nœud qui conviendrait le mieux à ces pods. Toutefois, certains paramètres de pool de nœuds ne sont pas spécifiés directement par les pods (par exemple, les paramètres liés à la mise à niveau des nœuds). Vous pouvez définir des valeurs par défaut pour ces paramètres. Ces valeurs seront appliquées à tous les pools de nœuds nouvellement créés.

Définir le type d'image de nœud par défaut

Vous pouvez spécifier le type d'image de nœud à utiliser pour tous les nouveaux pools de nœuds provisionnés automatiquement à l'aide de l'outil gcloud ou d'un fichier de configuration. Ce paramètre n'est disponible que pour les clusters GKE version 1.20.6-gke.1800 et ultérieures.

gcloud

Pour définir le type d'image de nœud par défaut, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-image-type IMAGE_TYPE

Remplacez l'élément suivant :

  • CLUSTER_NAME : nom du cluster.
  • IMAGE_TYPE : le type d'image de nœud, qui peut être l'un des éléments suivants :

    • cos_containerd : Container-optimized OS avec containerd
    • cos : Container-Optimized OS avec Docker.
    • ubuntu_containerd : Ubuntu avec containerd
    • ubuntu : Ubuntu avec Docker.

Fichier

Pour tous les nouveaux pools de nœuds provisionnés automatiquement, vous pouvez spécifier le type d'image de nœud à utiliser à l'aide d'un fichier de configuration. La configuration YAML suivante indique que pour les nouveaux pools de nœuds provisionnés automatiquement, le type d'image est cos_containerd et est associé à des limites de ressources pour le processeur et la mémoire. Vous devez spécifier des valeurs maximales pour le processeur et la mémoire afin d'activer le provisionnement automatique.

  1. Enregistrez la configuration YAML :

    resourceLimits:
      - resourceType: 'cpu'
          minimum: 4
          maximum: 10
      - resourceType: 'memory'
          maximum: 64
    autoprovisioningNodePoolDefaults:
      imageType: 'cos_containerd'
    
  2. Appliquez la configuration :

    gcloud container clusters update CLUSTER_NAME \
      --enable-autoprovisioning \
      --autoprovisioning-config-file FILE_NAME
    

    Remplacez l'élément suivant :

    • CLUSTER_NAME : nom du cluster.
    • FILE_NAME : nom du fichier de configuration

Définir des paramètres d'identité par défaut pour les pools de nœuds provisionnés automatiquement

Les autorisations associées aux ressources Google Cloud sont fournies par les identités.

À l'aide de via l'outil gcloud ou d'un fichier de configuration, vous pouvez spécifier l'identité par défaut pour les nouveaux pools de nœuds provisionnés automatiquement : soit un compte de service, soit un ou plusieurs champs d'application.

gcloud

Pour spécifier le compte de service IAM par défaut que doit utiliser le provisionnement automatique des nœuds, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • SERVICE_ACCOUNT : nom du compte de service par défaut.

L'exemple suivant définit test-service-account@google.com en tant que compte de service par défaut sur le cluster dev-cluster :

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com

Pour spécifier les champs d'application par défaut qui seront utilisés par le provisionnement automatique des nœuds, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-scopes=SCOPE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • SCOPE : champs d'application Google Cloud que les pools de nœuds provisionnés automatiquement doivent utiliser. Pour spécifier plusieurs champs d'application, séparez-les par une virgule (par exemple, SCOPE1, SCOPE2,...).

L'exemple suivant définit le champ d'application par défaut du cluster dev-cluster sur devstorage.read_only :

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only

Fichier

Vous pouvez spécifier l'identité par défaut que doit utiliser le provisionnement automatique des nœuds à l'aide d'un fichier de configuration. La configuration YAML suivante définit le compte de service IAM :

  serviceAccount: SERVICE_ACCOUNT

Remplacez SERVICE_ACCOUNT par le nom du compte de service par défaut.

Vous pouvez également utiliser la configuration YAML suivante pour spécifier les champs d'application par défaut que doit utiliser le provisionnement automatique des nœuds :

  scopes: SCOPE

Remplacez SCOPE par le champ d'application Google Cloud que doivent utiliser les pools de nœuds provisionnés automatiquement. Pour spécifier plusieurs champs d'application, séparez-les par une virgule (par exemple, SCOPE1, SCOPE2,...).

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Créez un fichier de configuration spécifiant les paramètres d'identité par défaut dans un emplacement auquel gcloud peut accéder.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • FILE_NAME : nom du fichier de configuration

Clés de chiffrement gérées par le client (CMEK)

Vous pouvez spécifier les clés de chiffrement gérées par le client (CMEK) que doivent utiliser les nouveaux pools de nœuds provisionnés automatiquement.

Vous pouvez activer le chiffrement géré par le client sur les disques de démarrage à l'aide d'un fichier de configuration. La configuration YAML suivante définit la clé CMEK :

  bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Remplacez les éléments suivants :

  • KEY_PROJECT_ID : identifiant de votre projet de clé
  • LOCATION : emplacement de votre trousseau de clés
  • KEY_RING : nom de votre trousseau de clés
  • KEY_NAME : nom de votre clé

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Créez un fichier de configuration spécifiant une clé CMEK dans un emplacement auquel gcloud peut accéder.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster.
    • FILE_NAME : nom du fichier de configuration

Intégrité des nœuds

Le provisionnement automatique des nœuds permet de créer des pools de nœuds avec les fonctionnalités de démarrage sécurisé et de surveillance de l'intégrité activées.

Vous pouvez activer le démarrage sécurisé et la surveillance de l'intégrité à l'aide d'un fichier de configuration. La configuration YAML suivante active le démarrage sécurisé et désactive la surveillance de l'intégrité :

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Copiez la configuration ci-dessus dans un fichier situé dans un emplacement auquel gcloud peut accéder. Modifiez les valeurs définies pour enableSecureBoot et enableIntegrityMonitoring. Enregistrez le fichier.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster.
    • FILE_NAME : nom du fichier de configuration

Réparation et mise à niveau automatiques des nœuds

Le provisionnement automatique des nœuds permet de créer des pools de nœuds avec les fonctionnalités de réparation et de mise à niveau automatiques des nœuds activées.

gcloud

Pour activer la réparation et la mise à niveau automatiques sur tous les nouveaux pools de nœuds provisionnés automatiquement, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --enable-autoprovisioning-autorepair \
    --enable-autoprovisioning-autoupgrade

Remplacez CLUSTER_NAME par le nom du cluster.

Pour désactiver la réparation et la mise à niveau automatiques sur tous les nouveaux pools de nœuds provisionnés automatiquement, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \
    --no-enable-autoprovisioning-autoupgrade

Remplacez CLUSTER_NAME par le nom du cluster.

Fichier

Vous pouvez activer ou désactiver la réparation et la mise à niveau automatiques des nœuds à l'aide d'un fichier de configuration. La configuration YAML suivante permet d'activer la réparation automatique et de désactiver la mise à niveau automatique :

  management:
    autoRepair: true
    autoUpgrade: false

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Copiez la configuration ci-dessus dans un fichier situé dans un emplacement auquel gcloud peut accéder. Modifiez les valeurs définies pour autoUpgrade et autoRepair. Enregistrez le fichier.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • FILE_NAME : nom du fichier de configuration

Paramètres des mises à niveau de la surutilisation des nœuds

Vous pouvez spécifier des paramètres de mise à niveau de la surutilisation sur tous les nouveaux pools de nœuds provisionnés automatiquement à l'aide de l'outil gcloud ou d'un fichier de configuration.

gcloud

Pour spécifier les paramètres de mise à niveau de la surutilisation pour tous les nouveaux pools de nœuds provisionnés automatiquement, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-max-surge-upgrade MAX_SURGE \
    --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • MAX_SURGE : nombre maximal de nœuds pouvant être ajoutés au pool de nœuds lors des mises à niveau.
  • MAX_UNAVAILABLE : nombre maximal de nœuds dans le pool de nœuds pouvant être simultanément indisponibles pendant les mises à niveau.

Fichier

Vous pouvez spécifier les paramètres de mise à niveau de la surutilisation pour tous les nouveaux pools de nœuds provisionnés automatiquement à l'aide d'un fichier de configuration semblable à celui-ci :

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Copiez la configuration ci-dessus dans un fichier situé dans un emplacement auquel gcloud peut accéder. Modifiez les valeurs définies pour maxSurgeUpgrade et maxUnavailableUpgrade. Enregistrez le fichier.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • FILE_NAME : nom du fichier de configuration

Pour en savoir plus, reportez-vous à la documentation gcloud container clusters update.

Disques de démarrage personnalisés

Le provisionnement automatique des nœuds permet de créer des pools de nœuds avec des disques de démarrage personnalisés.

Vous pouvez personnaliser les paramètres du disque de démarrage à l'aide d'un fichier de configuration. La configuration YAML suivante oblige le provisionnement automatique des nœuds à créer des pools de nœuds avec des disques SSD de 100 Go :

  diskSizeGb: 100
  diskType: pd-ssd

Renseignez les champs suivants :

  • diskSizeGb : taille du disque, spécifiée en Go
  • diskType : type de disque, qui peut prendre l'une des valeurs suivantes :
    • pd-standard : disque persistant standard (par défaut)
    • pd-ssd : disque persistant SSD

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Créez un fichier avec la configuration de disque de démarrage souhaitée dans un emplacement auquel gcloud peut accéder.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster.
    • FILE_NAME : nom du fichier de configuration

Configuration minimale de la plate-forme du processeur

Le provisionnement automatique des nœuds permet de créer des pools de nœuds avec une configuration minimale de plate-forme de processeur.

Vous pouvez spécifier la configuration minimale par défaut de plate-forme de processeur pour les nouveaux pools de nœuds provisionnés automatiquement à l'aide de l'outil gcloud ou d'un fichier de configuration.

gcloud

Pour définir la configuration minimale par défaut de plate-forme de processeur, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-min-cpu-platform MIN_CPU_PLATFORM

Remplacez les éléments suivants :

Fichier

Pour définir la configuration minimale par défaut de plate-forme de processeur, vous pouvez utiliser un fichier de configuration. La configuration YAML suivante définit la configuration minimale par défaut de plate-forme de processeur :

minCpuPlatform: MIN_CPU_PLATFORM

Remplacez MIN_CPU_PLATFORM par la configuration minimale de plate-forme de processeur souhaitée.

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Créez un fichier de configuration spécifiant la configuration minimale de plate-forme de processeur dans un emplacement auquel gcloud peut accéder.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • FILE_NAME : nom du fichier de configuration

Configurer les limites de GPU

Lorsque vous utilisez le provisionnement automatique des nœuds avec des GPU, vous pouvez définir la limite maximale pour chaque type de GPU dans le cluster à l'aide de l'outil gcloud ou de Google Cloud Console. Pour configurer plusieurs types de GPU, vous devez utiliser un fichier de configuration.

Pour répertorier les types de ressources disponibles, exécutez la commande gcloud compute accelerator-types list.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY \
    --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \
    --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • MAXIMUM_CPU : nombre maximal de cœurs dans le cluster
  • MAXIMUM_MEMORY : quantité maximale de mémoire dans le cluster, en gigaoctets
  • GPU_TYPE : type de GPU.
  • MINIMUM_ACCELERATOR : nombre minimal d'accélérateurs GPU dans le cluster.
  • MAXIMUM_ACCELERATOR : nombre maximal d'accélérateurs GPU dans le cluster.

L'exemple suivant définit les limites de GPU pour le type d'accélérateur GPU nvidia-tesla-k80 dans le cluster dev-cluster :

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --max-cpu 10 \
    --max-memory 64 \
    --min-accelerator type=nvidia-tesla-k80,count=1 \
    --max-accelerator type=nvidia-tesla-k80,count=4

Fichier

Vous pouvez charger des limites pour plusieurs types de GPU à l'aide d'un fichier de configuration. La configuration YAML suivante permet de configurer deux types de GPU différents :

  resourceLimits:
    -resourceType: 'cpu'
     minimum: 4
     maximum: 10
    -resourceType: 'memory'
     maximum: 64
    -resourceType: 'nvidia-tesla-k80'
     maximum: 4
    -resourceType: 'nvidia-tesla-v100'
     maximum: 2

Pour utiliser un fichier de configuration de provisionnement automatique, procédez comme suit :

  1. Copiez la configuration ci-dessus dans un fichier situé dans un emplacement auquel gcloud peut accéder. Modifiez les valeurs définies pour cpu et memory. Ajoutez autant de valeurs que vous le souhaitez pour resourceType. Enregistrez le fichier.

  2. Appliquez la configuration à votre cluster en exécutant la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • FILE_NAME : nom du fichier de configuration

Pour en savoir plus, reportez-vous à la documentation gcloud container clusters update.

Console

Pour activer le provisionnement automatique des nœuds à l'aide de ressources GPU, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur le nom du cluster.

  3. Dans la section Automatisation, cliquez sur Modifier pour accéder au Provisionnement automatique des nœuds.

  4. Cochez la case Activer le provisionnement automatique des nœuds.

  5. Définissez l'utilisation minimale et maximale du processeur et de la mémoire pour le cluster.

  6. Cliquez sur Ajouter une ressource.

  7. Sélectionnez le type de GPU que vous souhaitez ajouter, par exemple NVIDIA TESLA K80. Définissez le nombre minimal et maximal de GPU à ajouter au cluster.

  8. Acceptez les limitations des GPU dans GKE.

  9. Cliquez sur Enregistrer les modifications.

Zones de provisionnement automatique des nœuds

Vous pouvez définir les zones dans lesquelles le provisionnement automatique des nœuds peut créer des pools de nœuds. Les zones régionales ne sont pas acceptées. Les zones doivent appartenir à la même région que le cluster, mais ne sont pas limitées aux emplacements de nœuds définis au niveau du cluster. La modification des zones de provisionnement automatique des nœuds n'a pas d'incidence sur les pools de nœuds existants.

Pour définir les zones dans lesquelles le provisionnement automatique des nœuds peut créer des pools de nœuds, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-locations=ZONE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • ZONE : zone dans laquelle le provisionnement automatique des nœuds peut créer des pools de nœuds. Pour spécifier plusieurs zones, séparez-les par une virgule (par exemple, ZONE1, ZONE2,...).

Désactivation du provisionnement automatique des nœuds

Lorsque vous désactivez le provisionnement automatique des nœuds pour un cluster, les pools de nœuds ne sont plus provisionnés automatiquement.

gcloud

Pour désactiver le provisionnement automatique des nœuds sur un cluster, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
  --no-enable-autoprovisioning

Remplacez CLUSTER_NAME par le nom de votre cluster.

Console

Pour désactiver le provisionnement automatique des nœuds à l'aide de Google Cloud Console, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur le nom du cluster.

  3. Dans la section Automatisation, cliquez sur Modifier pour accéder au provisionnement automatique des nœuds.

  4. Décochez la case Activer le provisionnement automatique des nœuds.

  5. Cliquez sur Enregistrer les modifications.

Marquage du pool de nœuds comme étant provisionné automatiquement

Après avoir activé le provisionnement automatique des nœuds sur le cluster, vous pouvez spécifier les pools de nœuds qui sont provisionnés automatiquement. Un pool de nœuds provisionné automatiquement est supprimé automatiquement lorsqu'aucune charge de travail ne l'utilise.

Pour marquer un pool de nœuds comme étant provisionné automatiquement, exécutez la commande suivante :

gcloud container node-pools update NODE_POOL_NAME \
  --enable-autoprovisioning

Remplacez NODE_POOL_NAME par le nom du pool de nœuds.

Marquage du pool de nœuds comme n'étant pas provisionné automatiquement

Pour marquer un pool de nœuds comme n'étant pas provisionné automatiquement, exécutez la commande suivante :

gcloud container node-pools update NODE_POOL_NAME \
  --no-enable-autoprovisioning

Remplacez NODE_POOL_NAME par le nom du pool de nœuds.

Utiliser une famille de machines personnalisées

À partir de GKE 1.19.7-gke.800, vous pouvez choisir une famille de machines pour vos charges de travail.

Pour choisir une famille de machines pour vos charges de travail, effectuez l'une des tâches suivantes:

  • Définir l'affinité de nœuds avec la clé cloud.google.com/machine-family, l'opérateur In et la valeur correspondant à la famille de machines souhaitée (par exemple, n2).
  • Ajouter une valeur nodeSelector avec la clé cloud.google.com/machine-family et la valeur correspondant à la famille de machines souhaitée.

Voici un exemple qui définit nodeAffinity sur une famille de machines n2 :

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.google.com/machine-family
            operator: In
            values:
            - n2

Après avoir appliqué les modifications, le provisionnement automatique des nœuds choisit le meilleur pool de nœuds avec un type de machine dans la famille de machines spécifiée. Si plusieurs valeurs sont utilisées pour l'expression de correspondance, une valeur sera choisie arbitrairement.

Étape suivante