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

Lorsque vous créez un cluster d'utilisateur, vous devez configurer au moins un pool de nœuds, qui est un groupe de nœuds partageant tous la même configuration. Une fois le cluster créé, vous pouvez ajouter des pools de nœuds, en mettre à jour les paramètres et les supprimer.

La façon dont vous créez, mettez à jour et supprimez des pools de nœuds varie selon que le cluster est géré par l'API Anthos On-Prem ou non. Un cluster d'utilisateur est géré par l'API Anthos On-Prem si l'une des conditions suivantes est remplie :

Si l'API Anthos On-Prem gère un cluster d'utilisateur, vous pouvez utiliser la console Google Cloud pour gérer les pools de nœuds. Si le cluster d'utilisateur n'est pas géré par l'API Anthos On-Prem, utilisez gkectl sur la ligne de commande de votre poste de travail administrateur pour gérer les pools de nœuds.

Ajouter un pool de nœuds

Si vous avez créé le cluster dans la console Google Cloud, vous pouvez utiliser la console Cloud pour ajouter un pool de nœuds. Cependant, vous devez utiliser la ligne de commande pour configurer les paramètres de pool de nœuds suivants :

Avant d'ajouter un autre pool de nœuds, vérifiez qu'il y a suffisamment d'adresses IP disponibles sur le cluster.

Console

  1. Dans la console Google Cloud, accédez à la page Clusters d'Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  4. Cliquez sur Ajouter un pool de nœuds.

  5. Configurez le pool de nœuds :

    1. Saisissez le nom du pool de nœuds.
    2. Saisissez le nombre de processeurs virtuels pour chaque nœud du pool (au moins quatre par nœud de calcul de cluster d'utilisateur).
    3. Saisissez la taille de la mémoire en mébioctets (Mio) pour chaque nœud du pool (8192 Mio au minimum par nœud de nœud de calcul de cluster d'utilisateur, doit être un multiple de 4).
    4. Dans le champ Nœuds, saisissez le nombre de nœuds du pool (minimum 3).
    5. Sélectionnez le type d'image d'OS : Ubuntu Containerd, Ubuntu ou COS.

    6. Saisissez la taille du disque de démarrage en gibioctets (Gio) (la valeur par défaut est 40 Gio).

  6. Dans la section Métadonnées du pool de nœuds (facultatif), si vous souhaitez ajouter des libellés et des rejets Kubernetes, procédez comme suit :

    1. Cliquez sur + Ajouter des libellés Kubernetes. Saisissez la clé et la valeur du libellé. Répétez l'opération autant de fois que nécessaire.
    2. Cliquez sur + Ajouter un rejet. Saisissez la clé, la valeur et l'effet pour le rejet. Répétez l'opération autant de fois que nécessaire.
  7. Cliquez sur Créer.

  8. La console Google Cloud affiche État du cluster : modifications en cours. Cliquez sur Afficher les détails pour afficher la Condition d'état de la ressource et les Messages d'état.

Ligne de commande

  1. Dans votre fichier de configuration de cluster d'utilisateur, remplissez la section nodePools.

    Vous devez spécifier les champs suivants :

    • nodePools.[i].name
    • nodePools[i].cpus
    • nodePools.[i].memoryMB
    • nodePools.[i].replicas

    Les champs suivants sont facultatifs. Si vous n'incluez pas nodePools[i].bootDiskSizeGB ou nodePools[i].osImageType, les valeurs par défaut sont utilisées.

    • nodePools[i].labels
    • nodePools[i].taints
    • nodePools[i].bootDiskSizeGB
    • nodePools[i].osImageType
    • nodePools[i].vsphere.datastore
    • nodePools[i].vsphere.tags
  2. Exécutez la commande suivante :

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Remplacez les éléments suivants :

    • [ADMIN_CLUSTER_KUBECONFIG] par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.

    • [USER_CLUSTER_CONFIG] par le chemin d'accès au fichier de configuration du cluster d'utilisateur.

Exemple de configuration

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 : inclut vsphere.datastore et vsphere.tags.
  • pool-3 : inclut taints et labels.
  • pool-4 : inclut osImageType et bootDiskSizeGB.
nodePools:
- name: pool-1
  cpus: 4
  memoryMB: 8192
  replicas: 5
- name: pool-2
  cpus: 8
  memoryMB: 16384
  replicas: 3
  vsphere:
    datastore: my_datastore
    tags:
    - category: "purpose"
      name: "testing"
- name: pool-3
  cpus: 4
  memoryMB: 8192
  replicas: 5
  taints:
    - key: "example-key"
      effect: NoSchedule
  labels:
    environment: production
    app: nginx
- name: pool-4
  cpus: 4
  memoryMB: 8192
  replicas: 5
  osImageType: cos
  bootDiskSizeGB: 40

Mettre à jour un pool de nœuds

Vous pouvez utiliser la ligne de commande pour mettre à jour tous les champs de la section nodePools du fichier de configuration de votre cluster d'utilisateur. Actuellement, les seuls champs de pool de nœuds que vous pouvez mettre à jour à l'aide de la console Google Cloud sont les suivants :

  • Nombre d'instances dupliquées
  • Memory
  • Nombre de processeurs virtuels

Lorsque vous augmentez le nombre d'instances dupliquées, les clusters Anthos sur VMware augmentent le nombre de nœuds requis pour le cluster utilisateur. Lorsque vous réduisez le nombre d'instances dupliquées, les nœuds sont supprimés. La modification du nombre d'instances dupliquées d'un pool de nœuds n'interrompt pas les charges de travail. Assurez-vous que vos adresses IP sont disponibles si vous augmentez le nombre d'instances dupliquées.

Le fait de mettre à jour un autre champ de pool de nœuds a pour effet de déclencher une mise à jour progressive sur le cluster. Dans une mise à jour progressive, les clusters Anthos sur VMware créent un nœud pour ensuite en supprimer un ancien. Ce processus est répété jusqu'à ce que tous les anciens nœuds soient remplacés par de nouveaux nœuds. Ce processus n'entraîne pas de temps d'arrêt, mais le cluster doit disposer d'une adresse IP supplémentaire à utiliser pendant la mise à jour.

Supposons qu'un pool de nœuds ait N nœuds à la fin d'une mise à jour. Vous devez alors disposer d'au moins N + 1 adresse IP pour les nœuds de ce pool. Cela signifie que si vous redimensionnez un cluster en ajoutant des nœuds à un ou plusieurs pools, vous devez disposer d'au moins une adresse IP de plus que le nombre total de nœuds qui se trouveront dans tous les pools de nœuds du cluster à la fin du redimensionnement. Pour en savoir plus, consultez la section Vérifier que suffisamment d'adresses IP sont disponibles.

Pour mettre à jour un pool de nœuds sur un cluster d'utilisateur :

Console

  1. Dans la console Google Cloud, accédez à la page Clusters d'Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  4. Cliquez sur l'onglet Nœuds.

  5. Cliquez sur le nom du pool de nœuds que vous souhaitez modifier.

  6. Cliquez sur Modifier à côté du champ que vous souhaitez modifier, puis sur OK.

  7. Cliquez sur pour revenir à la page précédente.

  8. La console Google Cloud affiche État du cluster : modifications en cours. Cliquez sur Afficher les détails pour afficher la Condition d'état de la ressource et les Messages d'état.

Ligne de commande

  1. Modifiez les valeurs des champs que vous souhaitez modifier dans la section nodePools du fichier de configuration du cluster d'utilisateur.

  2. Mettez à jour le cluster :

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Remplacez les éléments suivants :

    • [ADMIN_CLUSTER_KUBECONFIG] par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.

    • [USER_CLUSTER_CONFIG] par le chemin d'accès au fichier de configuration du cluster d'utilisateur.

Mettre à jour le osImageType utilisé par un pool de nœuds

Pour mettre à jour un pool de nœuds afin d'utiliser un autre osImageType, vous devez utiliser la ligne de commande. Pour modifier le osImageType utilisé par un pool de nœuds, mettez à jour le fichier de configuration du pool de nœuds comme indiqué dans l'exemple suivant, puis exécutez gkectl update cluster.

nodePools:
- name: np-1
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: ubuntu_containerd

Vérifier vos modifications

Pour vérifier que vos pools de nœuds ont été créés ou mis à jour comme prévu, inspectez les nœuds de cluster :

Console

  1. Dans la console Google Cloud, accédez à la page Clusters d'Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  4. Cliquez sur l'onglet Nœuds.

  5. Cliquez sur le nom du pool de nœuds que vous souhaitez afficher.

Ligne de commande

Exécutez la commande suivante :

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide

Si vous devez annuler vos modifications, modifiez le fichier de configuration du cluster et exécutez la commande gkectl update cluster.

Supprimer un pool de nœuds

Bien que vous puissiez supprimer des pools de nœuds, votre cluster d'utilisateur doit disposer d'au moins un pool de nœuds. La suppression d'un pool de nœuds entraîne la suppression immédiate des nœuds de ce pool, que ceux-ci exécutent ou non des charges de travail.

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

Console

  1. Assurez-vous qu'aucune charge de travail n'est en cours d'exécution sur les nœuds concernés.

  2. Dans la console Google Cloud, accédez à la page Clusters d'Anthos.

    Accéder à la page "Clusters Anthos"

  3. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  4. Dans la liste des clusters, cliquez sur le nom du cluster puis sur Afficher les détails dans le panneau Détails.

  5. Cliquez sur l'onglet Nœuds.

  6. Cliquez sur le nom du pool de nœuds que vous souhaitez supprimer.

  7. Cliquez sur Supprimer.

  8. Cliquez sur pour revenir à la page précédente.

  9. La console Google Cloud affiche État du cluster : modifications en cours. Cliquez sur Afficher les détails pour afficher la Condition d'état de la ressource et les Messages d'état.

Ligne de commande

  1. Assurez-vous qu'aucune charge de travail n'est en cours d'exécution sur les nœuds concernés.

  2. Supprimez sa définition de la section nodePools du fichier de configuration du cluster d'utilisateur.

  3. Mettez à jour le cluster :

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

    Remplacez les éléments suivants :

    • [ADMIN_CLUSTER_KUBECONFIG] par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.

    • [USER_CLUSTER_CONFIG] par le chemin d'accès au 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.