Mettre à niveau un cluster

Ce document explique comment mettre à niveau la version Kubernetes d'un cluster Kubernetes Google Distributed Cloud (GDC) air gap. Vous devez planifier des mises à niveau de routine pour vos clusters afin de vous assurer qu'ils intègrent les dernières fonctionnalités et corrections de Kubernetes.

Ce document est destiné à des audiences telles que les administrateurs informatiques, les ingénieurs de sécurité et les administrateurs réseau du groupe d'administrateurs de plate-forme, qui sont chargés de gérer les ressources Kubernetes au sein de leur organisation. Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.

Avant de commencer

Pour effectuer les tâches décrites dans ce document, vous devez demander les autorisations nécessaires et préparer votre environnement.

Demander des rôles IAM

Vous devez disposer de rôles spécifiques pour obtenir les autorisations nécessaires à la mise à niveau de votre cluster Kubernetes. Vous devez demander des rôles limités à votre projet et à votre organisation.

Rôles au sein de l'organisation

Pour lister les versions de mise à niveau disponibles pour un cluster Kubernetes, demandez à l'administrateur de l'organisation IAM de vous accorder le rôle Administrateur de cluster d'utilisateur (user-cluster-admin). Ce rôle n'est pas lié à un espace de noms.

Si vous gérez un cluster standard et que vous ne parvenez pas à obtenir le rôle d'administrateur de cluster d'utilisateur auprès de votre groupe d'administrateurs de plate-forme, vous devez leur demander de vous fournir la liste des versions de mise à niveau Kubernetes disponibles.

Rôles au niveau du projet

Pour créer, supprimer, modifier ou afficher des mises à niveau de cluster, demandez à l'administrateur de projet IAM de vous accorder le rôle Administrateur de cluster standard (standard-cluster-admin). Ce rôle est lié à l'espace de noms de votre projet.

Préparer votre environnement

Pour exécuter des commandes sur un cluster Kubernetes à l'aide de l'API, assurez-vous de disposer des ressources suivantes :

  • Téléchargez et installez la CLI gdcloud.

  • Installez la CLI kubectl.

  • Recherchez le nom du cluster Kubernetes ou demandez-le à un membre du groupe d'administrateurs de la plate-forme.

  • Utilisez le nom du cluster Kubernetes pour remplacer CLUSTER_NAME dans ces instructions.

  • Connectez-vous et générez le fichier kubeconfig pour le serveur d'API de gestion.

  • Utilisez le chemin d'accès kubeconfig du serveur d'API Management pour remplacer MANAGEMENT_API_SERVER dans ces instructions.

Mettre à niveau un cluster Kubernetes

Utilisez l'API UserClusterUpgradeRequest pour mettre à niveau un cluster Kubernetes existant.

Pour mettre à niveau un cluster Kubernetes à l'aide de l'API, procédez comme suit :

  1. Répertoriez les versions de mise à niveau Kubernetes disponibles en affichant la valeur kubernetesVersion des objets UserClusterMetadata :

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'
    

    Remplacez MANAGEMENT_API_SERVER par le chemin d'accès au fichier kubeconfig du serveur d'API de gestion.

    La commande renvoie la liste des versions de Kubernetes disponibles :

    TARGET_VERSION
    1.30.1000-gke.85
    
  2. Notez la version de Kubernetes vers laquelle vous souhaitez mettre à niveau votre cluster à partir du résultat précédent. La valeur targetVersion que vous spécifiez dans la requête de mise à niveau à l'étape suivante doit correspondre à l'une de ces versions disponibles.

  3. Demandez la mise à niveau du cluster en créant une ressource UserClusterUpgradeRequest :

      kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
      apiVersion: cluster.gdc.goog/v1
      kind: UserClusterUpgradeRequest
      metadata:
        name: CLUSTER_NAME
        namespace: CLUSTER_NAMESPACE
      spec:
        clusterRef:
          name: CLUSTER_NAME
        targetVersion: TARGET_VERSION
      EOF
    

    Remplacez les éléments suivants :

    • MANAGEMENT_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API de gestion.
    • CLUSTER_NAME : nom du cluster Kubernetes à mettre à niveau, par exemple user-vm-2.
    • CLUSTER_NAMESPACE : espace de noms du cluster Kubernetes. Pour les clusters partagés, utilisez l'espace de noms platform. Pour les clusters standards, utilisez l'espace de noms du projet du cluster.
    • TARGET_VERSION : version cible de la mise à niveau identifiée à l'étape précédente, par exemple 1.30.1000-gke.85.

    La durée moyenne de mise à niveau d'un cluster Kubernetes est d'environ 20 minutes.

  4. Vérifiez la mise à niveau du cluster en surveillant la ressource UserClusterUpgradeRequest :

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        describe userclusterupgraderequest CLUSTER_NAME \
        -n CLUSTER_NAMESPACE
    

    Remplacez les éléments suivants :

    • MANAGEMENT_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API de gestion.
    • CLUSTER_NAME : nom du cluster Kubernetes à mettre à niveau, par exemple user-vm-2.
    • CLUSTER_NAMESPACE : espace de noms du cluster Kubernetes. Pour les clusters partagés, utilisez l'espace de noms platform. Pour les clusters standards, utilisez l'espace de noms du projet du cluster.

    Inspectez la section Spec du résultat. Il contient Current Version et Target Version. La mise à niveau est toujours en cours si Current Version et Target Version sont différents.

    Spec:
      ...
      Current Version: 1.29.500-gke.60
      Target Version: 1.30.1000-gke.85
    Status:
      Conditions:
      - Message: Upgrade is in progress
        Reason: UpgradeInProgress
        Status: "False"
        Type: Succeeded
    

    La mise à niveau est terminée et réussie lorsque la condition Succeeded est définie sur l'état True et que Current Version correspond à Target Version.

    Si la condition Succeeded est définie sur False, la mise à niveau a échoué. Si vous rencontrez des erreurs liées à la mise à niveau de votre cluster Kubernetes, contactez le groupe d'opérateurs d'infrastructure pour obtenir de l'aide.

Vérifier l'état du cluster après la mise à niveau

Une fois votre cluster Kubernetes mis à niveau, vérifiez que le cluster et ses composants sont opérationnels en inspectant l'état de la ressource Cluster :

  1. Affichez les champs status.conditions et status.componentsConditions de la ressource Cluster :

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get cluster CLUSTER_NAME \
        -n CLUSTER_NAMESPACE -o yaml
    

    Remplacez les éléments suivants :

    • MANAGEMENT_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API de gestion.
    • CLUSTER_NAME : nom du cluster Kubernetes, par exemple user-vm-2.
    • CLUSTER_NAMESPACE : espace de noms du cluster Kubernetes. Pour les clusters partagés, utilisez l'espace de noms platform. Pour les clusters standards, utilisez l'espace de noms du projet du cluster.
  2. Dans le résultat, vérifiez les points suivants dans la section status :

    • Dans status.conditions, vérifiez que la condition Ready a un status de True et que la condition Reconciling a un status de False.
    • Dans status.componentsConditions, vérifiez que la condition Ready a un status de True, que la condition Reconciling a un status de False et qu'aucune condition n'affiche un reason de ReconciliationError ou Reconciling.

    Pour les clusters Kubernetes comportant trois nœuds de plan de contrôle et trois nœuds de calcul, la mise à niveau prend environ 20 minutes. Si le cluster ou ses composants restent à l'état Reconciling après 20 minutes, ou si une condition affiche ReconciliationError, contactez votre groupe d'opérateurs d'infrastructure pour obtenir de l'aide.

Étapes suivantes