Mettre à niveau les clusters

Lorsque vous installez une nouvelle version de bmctl, vous pouvez mettre à niveau les clusters existants créés avec une version antérieure. La mise à niveau d'un cluster vers la dernière version de GKE sur bare metal apporte des fonctionnalités et des correctifs supplémentaires. Cela garantit également que votre cluster reste compatible. Vous pouvez mettre à niveau des clusters d'administrateur, hybrides, autonomes ou d'utilisateur à l'aide de la commande bmctl upgrade cluster. Vous pouvez également utiliser kubectl.

À partir de la version 1.15.0 de GKE sur Bare Metal, le comportement de mise à niveau par défaut des clusters autogérés (administrateurs, hybrides ou autonomes) est une mise à niveau sur place. Les mises à niveau sur place utilisent des contrôleurs de cycle de vie, et non un cluster d'amorçage, pour gérer l'ensemble du processus de mise à niveau. Cette modification simplifie le processus et réduit les besoins en ressources, ce qui rend les mises à niveau des clusters plus fiables et évolutives.

Pour en savoir plus sur le processus de mise à niveau, consultez la section Cycle de vie et étapes des mises à niveau des clusters.

Remarques relatives aux mises à niveau

Cette section contient des informations et des liens vers des informations à prendre en compte avant de mettre à niveau un cluster.

Bonnes pratiques

Pour en savoir plus sur la préparation d'une mise à niveau de cluster, consultez la page Bonnes pratiques pour la mise à niveau de clusters Anthos sur bare metal.

Mettre à niveau les vérifications préliminaires

Les vérifications préliminaires sont exécutées lors de la mise à niveau du cluster, pour valider l'état des nœuds. La mise à niveau du cluster s'interrompt si les vérifications préliminaires échouent. Pour en savoir plus sur les vérifications préliminaires, consultez la page Comprendre les vérifications préliminaires.

Vous pouvez vérifier si les clusters sont prêts pour une mise à niveau en effectuant une vérification préliminaire avant d'exécuter la mise à niveau. Pour en savoir plus, consultez la section Vérifications préliminaires pour les mises à niveau.

Problèmes connus

Pour en savoir plus sur les problèmes potentiels liés aux mises à niveau des clusters, consultez la page Problèmes connus liés aux clusters Anthos sur bare metal et sélectionnez la catégorie de problème Mises à niveau et mises à jour.

Mettre à niveau des clusters d'administrateur, autonomes, hybrides ou d'utilisateur

Cette section contient des instructions pour mettre à niveau des clusters.

bmctl

Lorsque vous téléchargez et installez une nouvelle version de bmctl, vous pouvez mettre à niveau vos clusters d'administrateur, hybrides, autonomes et d'utilisateur créés avec une version antérieure. Pour une version donnée de bmctl, un cluster ne peut être mis à jour que vers la même version.

  1. Téléchargez la dernière version de bmctl, comme décrit dans la section Téléchargements de GKE sur une solution Bare Metal.

  2. Mettez à jour anthosBareMetalVersion dans le fichier de configuration du cluster vers la version cible de mise à niveau.

    La version cible de la mise à niveau doit correspondre à la version du fichier bmctl téléchargé. L'extrait de fichier de configuration de cluster suivant montre le champ anthosBareMetalVersion mis à jour vers la dernière version:

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      type: admin
      # Anthos cluster version.
      anthosBareMetalVersion: 1.15.11
    
  3. Exécutez la commande bmctl upgrade cluster pour effectuer la mise à niveau :

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster à mettre à niveau.
    • ADMIN_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur.

    L'opération de mise à niveau du cluster exécute des vérifications préliminaires pour valider l'état du cluster et celui du nœud. La mise à niveau du cluster ne se poursuit pas si les vérifications préliminaires échouent. Pour obtenir des informations de dépannage, consultez la page Résoudre les problèmes d'installation ou de mise à niveau du cluster.

    Une fois tous les composants du cluster mis à niveau, l'opération de mise à niveau effectue des vérifications de l'état du cluster. Cette dernière étape permet de vérifier que le cluster est en bon état de fonctionnement. Si le cluster ne réussit pas toutes les vérifications d'état, celles-ci continuent de s'exécuter jusqu'à ce qu'elles réussissent. Une fois toutes les vérifications d'état effectuées, la mise à niveau se termine correctement.

    Pour en savoir plus sur la séquence d'événements pour les mises à niveau d'un cluster, consultez la section Cycle de vie et étapes des mises à niveau d'un cluster.

kubectl

Pour mettre à niveau un cluster avec kubectl, procédez comme suit:

  1. Modifiez le fichier de configuration du cluster pour définir anthosBareMetalVersion sur la version cible de la mise à niveau.

  2. Pour lancer la mise à niveau, exécutez la commande suivante :

    kubectl apply -f CLUSTER_CONFIG_PATH
    

    Remplacez CLUSTER_CONFIG_PATH par le chemin d'accès au fichier de configuration de cluster modifié.

Comme pour le processus de mise à niveau avec bmctl, des vérifications préliminaires sont exécutées lors de la mise à niveau du cluster pour valider l'état du cluster et celui du nœud. Si les vérifications préliminaires échouent, la mise à niveau du cluster est interrompue. Pour résoudre les échecs, examinez le cluster et les journaux associés, car aucun cluster d'amorçage n'est créé. Pour en savoir plus, consultez la section Résoudre les problèmes d'installation ou de mise à niveau du cluster.

Bien que vous n'ayez pas besoin de la dernière version de bmctl pour mettre à niveau les regroupements avec kubectl, nous vous recommandons de télécharger la dernière version de bmctl. Vous avez besoin de bmctl pour effectuer d'autres tâches, telles que des vérifications de l'état et des sauvegardes, afin de garantir que votre cluster reste en bon état de fonctionnement.

Mises à niveau en parallèle

Lors d'une mise à niveau de cluster par défaut classique, chaque nœud de cluster est mis à niveau de manière séquentielle, l'un après l'autre. Cette section vous explique comment configurer votre cluster et vos pools de nœuds de calcul de sorte que plusieurs nœuds soient mis à niveau en parallèle lorsque vous mettez à niveau votre cluster. La mise à niveau des nœuds en parallèle accélère considérablement les mises à niveau des clusters, en particulier pour les clusters comportant des centaines de nœuds.

Il existe deux stratégies de mise à niveau parallèle que vous pouvez utiliser pour accélérer la mise à niveau de votre cluster:

  • Mise à niveau simultanée de nœuds:vous pouvez configurer vos pools de nœuds de calcul de sorte que plusieurs nœuds soient mis à niveau en parallèle. Les mises à niveau parallèles des nœuds sont configurées dans la spécification NodePool (spec.upgradeStrategy.parallelUpgrade). Seuls les nœuds d'un pool de nœuds de calcul peuvent être mis à niveau en parallèle. Les nœuds des pools de nœuds du plan de contrôle ou de l'équilibreur de charge ne peuvent être mis à niveau qu'un seul à la fois. Pour en savoir plus, consultez Stratégie de mise à niveau des nœuds.

  • Mise à niveau simultanée des pools de nœuds:vous pouvez configurer votre cluster de sorte que plusieurs pools de nœuds soient mis à niveau en parallèle. Seuls les pools de nœuds de calcul peuvent être mis à niveau en parallèle. Les pools de nœuds du plan de contrôle et de l'équilibreur de charge ne peuvent être mis à niveau qu'un par un. La possibilité de mettre à niveau plusieurs pools de nœuds simultanément est disponible dans la version Preview publique. Pour en savoir plus, consultez la section Stratégie de mise à niveau du pool de nœuds.

Stratégie de mise à niveau des nœuds

Vous pouvez configurer des pools de nœuds de calcul de sorte que plusieurs nœuds soient mis à niveau simultanément (concurrentNodes). Vous pouvez également définir un seuil minimal pour le nombre de nœuds pouvant exécuter des charges de travail tout au long du processus de mise à niveau (minimumAvailableNodes). Cette configuration est effectuée dans la spécification du pool de nœuds. Pour en savoir plus sur ces champs, consultez la documentation de référence sur le champ de configuration du cluster.

La stratégie de mise à niveau des nœuds ne s'applique qu'aux pools de nœuds de calcul. Vous ne pouvez pas spécifier de stratégie de mise à niveau des nœuds pour les pools de nœuds du plan de contrôle ou de l'équilibreur de charge. Lors de la mise à niveau d'un cluster, les nœuds du plan de contrôle et des pools de nœuds de l'équilibreur de charge sont mis à niveau de manière séquentielle, un par un. Les pools de nœuds du plan de contrôle et les pools de nœuds de l'équilibreur de charge sont spécifiés dans la spécification du cluster (controlPlane.nodePoolSpec.nodes et loadBalancer.nodePoolSpec.nodes).

Lorsque vous configurez des mises à niveau parallèles pour les nœuds, tenez compte des restrictions suivantes:

  • La valeur de concurrentNodes ne peut pas dépasser 20 % du nombre de nœuds dans le pool de nœuds ou 10, selon la valeur la plus faible. Par exemple, si votre pool de nœuds comporte 40 nœuds, vous ne pouvez pas spécifier de valeur supérieure à 8. Si votre pool de nœuds comporte 100 nœuds, la valeur maximale que vous pouvez spécifier est 10.

  • Lorsque vous utilisez concurrentNodes avec minimumAvailableNodes, les valeurs combinées ne peuvent pas dépasser le nombre total de nœuds dans le pool de nœuds. Par exemple, si votre pool de nœuds comporte 20 nœuds et que minimumAvailableNodes est défini sur 18, concurrentNodes ne peut pas dépasser 2. De même, si concurrentNodes est défini sur 10, minimumAvailableNodes ne peut pas dépasser 10.

L'exemple suivant présente un pool de nœuds de calcul np1 comportant 10 nœuds. Lors d'une mise à niveau, les nœuds doivent être mis à niveau deux à la fois et au moins cinq nœuds doivent rester disponibles pour que la mise à niveau puisse se poursuivre:

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: np1
  namespace: cluster-cluster1
spec:
  clusterName: cluster1
  nodes:
  - address:  10.200.0.1
  - address:  10.200.0.2
  - address:  10.200.0.3
  - address:  10.200.0.4
  - address:  10.200.0.5
  - address:  10.200.0.6
  - address:  10.200.0.7
  - address:  10.200.0.8
  - address:  10.200.0.9
  - address:  10.200.0.10 
  upgradeStrategy:
    parallelUpgrade:
      concurrentNodes: 2
      minimumAvailableNodes: 5 

Stratégie de mise à niveau du pool de nœuds

Vous pouvez configurer un cluster de sorte que plusieurs pools de nœuds de calcul soient mis à niveau en parallèle. Le champ booléen nodePoolUpgradeStrategy.concurrentNodePools de la spécification de cluster indique si tous les pools de nœuds de calcul d'un cluster doivent être mis à niveau simultanément. Par défaut (1), les pools de nœuds sont mis à niveau de manière séquentielle, l'un après l'autre. Lorsque vous définissez concurrentNodePools sur 0, chaque pool de nœuds de calcul du cluster est mis à niveau en parallèle.

Les pools de nœuds du plan de contrôle et de l'équilibrage de charge ne sont pas affectés par ce paramètre. Ces pools de nœuds sont toujours mis à niveau de manière séquentielle, un par un. Les pools de nœuds du plan de contrôle et les pools de nœuds de l'équilibreur de charge sont spécifiés dans la spécification du cluster (controlPlane.nodePoolSpec.nodes et loadBalancer.nodePoolSpec.nodes).

La possibilité de mettre à niveau simultanément tous les pools de nœuds de calcul n'est disponible qu'en version preview. N'utilisez pas cette fonctionnalité sur vos clusters de production.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  ...
  nodePoolUpgradeStrategy:
    concurrentNodePools: 0
  ...

Effectuer une mise à niveau en parallèle

Cette section explique comment configurer un cluster et un pool de nœuds de calcul pour des mises à niveau parallèles.

Pour effectuer une mise à niveau parallèle des pools de nœuds de calcul et des nœuds d'un pool de nœuds de calcul, procédez comme suit:

  1. Ajoutez une section upgradeStrategy à la spécification de NodePool.

    Vous pouvez appliquer ce fichier manifeste séparément ou dans le fichier de configuration du cluster lorsque vous effectuez une mise à jour du cluster.

    Exemple :

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: np1
      namespace: cluster-ci-bf8b9aa43c16c47
    spec:
      clusterName: ci-bf8b9aa43c16c47
      nodes:
      - address:  10.200.0.1
      - address:  10.200.0.2
      - address:  10.200.0.3
      ...
      - address:  10.200.0.30
      upgradeStrategy:
        parallelUpgrade:
          concurrentNodes: 5
          minimumAvailableNodes: 10
    

    Dans cet exemple, la valeur du champ concurrentNodes est 5, ce qui signifie que cinq nœuds sont mis à niveau en parallèle. Le champ minimumAvailableNodes est défini sur 10, ce qui signifie qu'au moins 10 nœuds doivent rester disponibles pour les charges de travail tout au long de la mise à niveau.

  2. Ajoutez une section nodePoolUpgradeStrategy à la spécification Cluster dans le fichier de configuration du cluster.

    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-user001
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user001
      namespace: cluster-user001
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: 1.15.0
      ...
      nodePoolUpgradeStrategy:
        concurrentNodePools: 0
      ...
    

    Dans cet exemple, le champ concurrentNodePools est défini sur 0, ce qui signifie que tous les pools de nœuds de calcul sont mis à niveau simultanément lors de la mise à niveau du cluster. La stratégie de mise à niveau des nœuds dans les pools de nœuds est définie dans les spécifications du pool de nœuds.

  3. Mettez à niveau le cluster comme décrit dans la section précédente Mettre à niveau des clusters d'administrateur, autonomes, hybrides ou d'utilisateur.

Désactiver les mises à niveau parallèles des nœuds

Les mises à niveau parallèles sont désactivées par défaut et les champs associés sont modifiables. À tout moment, vous pouvez supprimer les champs ou les définir sur leurs valeurs par défaut afin de désactiver la fonctionnalité avant une mise à niveau ultérieure.

Le tableau suivant liste les champs de mise à niveau parallèle et leurs valeurs par défaut:

Champ Valeur par défaut Signification
nodePoolUpgradeStrategy.concurrentNodePools (spécification du cluster) 1 Mettez à niveau les pools de nœuds de calcul de manière séquentielle, l'un après l'autre.
upgradeStrategy.parallelUpgrade.concurrentNodes (spécification NodePool) 1 Mettez à niveau les nœuds de manière séquentielle, l'un après l'autre.
upgradeStrategy.parallelUpgrade.minimumAvailableNodes (spécification NodePool) 0 Il n'est pas nécessaire de s'assurer que tous les nœuds sont disponibles lors d'une mise à niveau.