Créer et gérer des pools de nœuds

À partir de la version 1.3 de GKE On-Prem, vous pouvez créer un pool de nœuds pour définir un groupe de nœuds dans tous les clusters d'utilisateur ayant la même configuration. Vous pouvez ensuite gérer ce pool de nœuds séparément sans affecter les autres nœuds de chaque cluster. En savoir plus sur les pools de nœuds

Vous pouvez définir un ou plusieurs pools de nœuds dans les fichiers de configuration de vos clusters d'utilisateur. La création d'un pool de nœuds provoque la création de nœuds supplémentaires dans chaque cluster. La gestion des pools de nœuds (y compris leur création, leur mise à jour et leur suppression) s'effectue via le fichier de configuration du cluster d'utilisateur. Une fois les pools de nœuds définis dans les fichiers de configuration, vous déployez ces modifications sur vos clusters à l'aide de la commande gkectl update cluster. Les modifications que vous déployez sont appliquées immédiatement dans chaque cluster d'utilisateur. Par exemple, si vous supprimez un pool de nœuds d'un cluster, les nœuds concernés sont immédiatement supprimés, même s'ils sont en train d'exécuter une charge de travail.

Exemple de pool de nœuds :

nodepools:
  - name: pool-1
    cpus: 4
    memorymb: 8192
    replicas: 5

Conseil pour les nouvelles installations : Créez un premier cluster d'utilisateur et définissez les pools de nœuds dans ce cluster. Utilisez ensuite le fichier de configuration de ce cluster pour créer des clusters d'utilisateur supplémentaires avec les mêmes paramètres de pool de nœuds.

Avant de commencer

  • Limites de prise en charge :

    • Seuls les clusters d'utilisateur version 1.3.0 ou ultérieure sont compatibles.

    • Les pools de nœuds dans les clusters d'administrateur ne sont pas acceptés.

    • Pour le moment, la commande gkectl update cluster ne prend en charge que la gestion des pools de nœuds. Toutes les autres modifications du fichier de configuration sont ignorées.

    • Même si, dans un cluster d'utilisateur, les nœuds d'un pool de nœuds peuvent être gérés séparément des autres nœuds, il n'est pas possible de ne mettre à niveau qu'une partie des nœuds du cluster. Tous les nœuds sont mis à niveau lorsque vous mettez à niveau le cluster.

  • Ressources :

    • Le changement de la valeur replicas d'un pool de nœuds est la seule modification que vous pouvez déployer sans interrompre les charges de travail en cours d'exécution.

      Important : Si vous déployez une autre modification dans la configuration d'un pool de nœuds, les nœuds de ce pool seront recréés. Il faut donc vous assurer au préalable qu'aucun pool de nœuds n'exécute une charge de travail qui ne doit pas être interrompue.

    • Lorsque vous déployez des modifications de pool de nœuds, un nœud temporaire peut être créé. Vous devez vérifier qu'une adresse IP est disponible pour ce nœud temporaire.

Créer et mettre à jour des pools de nœuds

Vous pouvez gérer un pool de nœuds en modifiant puis en déployant le fichier de configuration d'un cluster d'utilisateur. Vous pouvez créer et déployer un ou plusieurs pools de nœuds sur chaque cluster d'utilisateur.

Pour créer ou mettre à jour des pools de nœuds :

  1. Dans un éditeur, ouvrez le fichier de configuration du cluster d'utilisateur dans lequel vous souhaitez créer ou mettre à jour des pools de nœuds.

  2. Définissez un ou plusieurs pools de nœuds dans la section nodepools située sous usercluster dans le fichier de configuration :

    1. Configurez les attributs de pool de nœuds minimaux requis. Vous devez spécifier les attributs suivants pour chaque pool de nœuds :

      • usercluster.nodepools.name : nom unique du pool de nœuds. La mise à jour de cet attribut provoque la recréation des nœuds. Exemple : name: pool-1

      • usercluster.nodepools.cpus : nombre de processeurs alloués à chaque nœud de calcul du cluster d'utilisateur. La mise à jour de cet attribut provoque la recréation des nœuds. Exemple : cpus: 4

      • usercluster.nodepools.memorymb : quantité de mémoire, en mégaoctets, allouée à chaque nœud de calcul du cluster d'utilisateur. La mise à jour de cet attribut provoque la recréation des nœuds. Exemple : memorymb: 8192

      • usercluster.nodepools.replicas : nombre total de nœuds de calcul utilisés par le cluster d'utilisateur pour exécuter des charges de travail. Vous pouvez mettre à jour cet attribut sans perturber les nœuds ni les charges de travail en cours d'exécution. Exemple : replicas: 5

      Notez que même si certains des attributs nodepools sont identiques à workernode (DHCP | IP statique), la section workernode est obligatoire pour chaque cluster d'utilisateur. Vous ne pouvez pas supprimer la section workernode ni la remplacer par une section nodepools.

      Exemple :

      nodepools:
        - name: pool-1
          cpus: 4
          memorymb: 8192
          replicas: 5
      

      Consultez la section Exemples pour voir un exemple de configuration avec plusieurs pools de nœuds.

    2. Configurez les attributs de pool de nœuds facultatifs. Vous pouvez ajouter des libellés et des rejets à la configuration de votre pool de nœuds pour orienter les charges de travail des nœuds. Vous pouvez également définir quel datastore vSphere est utilisé par votre pool de nœuds.

      • usercluster.nodepools.labels : une ou plusieurs paires clé/valeur (au format key : value) pour identifier de manière unique vos pools de nœuds. La key et la value doivent commencer par une lettre ou un chiffre. Elles peuvent contenir des lettres, des chiffres, des traits d'union, des points et des traits de soulignement (jusqu'à 63 caractères chacune).

        Pour obtenir des informations détaillées sur la configuration, consultez la section sur les libellés.

        Important : Vous ne pouvez pas spécifier les clés de libellé suivantes, car elles sont réservées pour GKE On-Prem : kubernetes.io, k8s.io et googleapis.com.

        Exemple :

        labels:
          key1: value1
          key2: value2
        
      • usercluster.nodepools.taints : ensemble(s) key (clé), value (valeur) et effect (effet) définissant des taints (rejets) pour les pools de nœuds. Ces taints (rejets) correspondent aux tolerations (tolérances) que vous configurez sur les pods.

        La key est obligatoire alors que la value est facultative. Elles doivent toutes deux commencer par une lettre ou un chiffre, et peuvent contenir des lettres, des chiffres, des tirets, des points et des traits de soulignement, jusqu'à 253 caractères. Vous pouvez éventuellement préfixer la key avec un sous-domaine DNS suivi d'une barre oblique /. Exemple : example.com/my-app.

        Les valeurs valides pour l'effect sont : NoSchedule, PreferNoSchedule et NoExecute.

        Pour obtenir des informations détaillées sur la configuration, consultez la section sur les rejets.

        Exemple :

        taints:
          - key: key1
            value: value1
            effect: NoSchedule
        
      • usercluster.nodepools.vsphere.datastore : datastore vSphere à utiliser avec le pool de nœuds. Cette valeur remplace le datastore vSphere par défaut du cluster d'utilisateur.

        Exemple :

        vsphere:
          datastore: datastore_name
        

    Consultez la section Exemples pour voir un exemple de configuration avec plusieurs pools de nœuds.

  3. Utilisez la commande gkectl update cluster pour déployer vos modifications sur le cluster d'utilisateur.

    Remarque : La commande gkectl update cluster ne prend en charge que la gestion des pools de nœuds. Seules les modifications apportées à la section nodepools sont déployées. Toutes les autres modifications du fichier de configuration sont ignorées.

    gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config config.yaml --dry-run --yes
    
    où :
    • [ADMIN_CLUSTER_KUBECONFIG] : fichier kubeconfig de votre cluster d'administrateur.
    • config.yaml : configuration file (fichier de configuration) modifié du cluster d'utilisateur. Vous avez peut-être choisi un autre nom pour ce fichier.
    • --dry-run : option facultative. Ajoutez cette option pour afficher uniquement la modification. Aucune modification n'est déployée dans le cluster d'utilisateur.
    • --yes : option facultative. Ajoutez cette option pour exécuter la commande silencieusement. L'invite permettant de confirmer que vous souhaitez continuer est alors désactivée.

    Si vous avez annulé la commande prématurément, vous pouvez exécuter à nouveau la même commande pour terminer l'opération et déployer vos modifications sur le cluster d'utilisateur.

    Si vous devez revenir en arrière, faites les modifications inverses dans le fichier de configuration, puis déployez à nouveau les modifications dans votre cluster d'utilisateur.

  4. Vérifiez que les modifications sont bien prises en compte en inspectant tous les nœuds. Exécutez la commande suivante pour répertorier tous les nœuds du cluster d'utilisateur :

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
    

    [USER_CLUSTER_KUBECONFIG] est le fichier kubeconfig de votre cluster d'utilisateur.

Supprimer des pools de nœuds

Pour supprimer des pools de nœuds d'un cluster d'utilisateur, procédez comme suit :

  1. Supprimez tous les paramètres nodepools du fichier de configuration de votre cluster d'utilisateur. S'il existe plusieurs pools de nœuds, vous devez supprimer tous les paramètres correspondants.

  2. Assurez-vous qu'aucune charge de travail n'est en cours d'exécution. Tous les nœuds concernés seront supprimés.

  3. Déployez vos modifications en exécutant la commande gkectl update cluster :

    gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config config.yaml --dry-run --yes
    
    où :
    • [ADMIN_CLUSTER_KUBECONFIG] : fichier kubeconfig de votre cluster d'administrateur.
    • config.yaml : configuration file (fichier de configuration) modifié du cluster d'utilisateur. Vous avez peut-être choisi un autre nom pour ce fichier.
    • --dry-run : option facultative. Ajoutez cette option pour afficher uniquement la modification. Aucune modification n'est déployée dans le cluster d'utilisateur.
    • --yes : option facultative. Ajoutez cette option pour exécuter la commande silencieusement. L'invite permettant de confirmer que vous souhaitez continuer est alors désactivée.
  4. Vérifiez que les modifications sont bien prises en compte en inspectant tous les nœuds. Exécutez la commande suivante pour répertorier tous les nœuds du cluster d'utilisateur :

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
    

    [USER_CLUSTER_KUBECONFIG] est le fichier kubeconfig de votre cluster d'utilisateur.

Examples

Il y a quatre pools de nœuds dans l'exemple de configuration suivant, avec des attributs différents pour chacun :

  • pool-1 : seuls les attributs minimaux requis sont spécifiés.
  • pool-2 : le datastore vSphere est spécifié.
  • pool-3 : des rejets et des libellés sont spécifiés.
  • pool-4 : tous les attributs sont spécifiés.
...
usercluster:
  ...
  workernode:
    cpus: 4
    memorymb: 8192
    replicas: 3
  # (Optional) Node pools with customizable labels, taints, etc.
  nodepools:
    - name: pool-1
      cpus: 4
      memorymb: 8192
      replicas: 5
    - name: pool-2
      cpus: 8
      memorymb: 16384
      replicas: 3
      vsphere:
        datastore: my_datastore
    - name: pool-3
      cpus: 4
      memorymb: 8192
      replicas: 5
      taints:
        - key: "example-key"
          effect: NoSchedule
      labels:
        environment: production
        app: nginx
    - name: pool-4
      cpus: 8
      memorymb: 16384
      replicas: 3
      taints:
        - key: "my_key"
          value: my_value1
          effect: NoExecute
      labels:
        environment: test
      vsphere:
        datastore: my_datastore
...

Afficher un exemple complet de fichier de configuration du cluster d'utilisateur

Dépannage

  • En général, la commande gkectl update cluster fournit des détails en cas d'échec. Si la commande aboutit et que vous ne voyez pas les nœuds, suivez le guide Diagnostiquer les problèmes de cluster pour résoudre le problème.

  • Il est possible que les ressources du cluster soient insuffisantes. Par exemple, il peut arriver qu'il n'y ait plus d'adresse IP disponible lors de la création ou de la mise à jour du pool de nœuds. Consultez la page Redimensionner un cluster d'utilisateur pour savoir comment vérifier que des adresses IP sont disponibles.

  • Vous pouvez également consulter le guide général de dépannage.

  • Symptôme : Plus rien ne se passe après le message Creating node MachineDeployment(s) in user cluster….

    La création ou la mise à jour des pools de nœuds dans votre cluster d'utilisateur peut prendre un certain temps. Cependant, si le temps d'attente est extrêmement long et que vous soupçonnez un échec, vous pouvez exécuter les commandes suivantes :

    1. Exécutez la commande kubectl get nodes pour connaître l'état des nœuds.
    2. Pour tous les nœuds qui ne sont pas "Ready" (prêts), exécutez la commande kubectl describe node [node_name] pour obtenir plus de détails.