Mettre à niveau un cluster

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

Ce document s'adresse à des audiences telles que les administrateurs informatiques, les ingénieurs en 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 Audiences pour la documentation GDC sous air gap.

Avant de commencer

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

  • Installez l'interface de ligne de commande kubectl. Pour en savoir plus, consultez Installer des composants.

  • Générez un fichier kubeconfig pour le serveur d'API de gestion dans votre zone cible. Pour en savoir plus, consultez Ressources de cluster Kubernetes zonal.

  • Pour obtenir les autorisations nécessaires pour lister les versions de mise à niveau disponibles, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle Administrateur du cluster utilisateur (user-cluster-admin).

    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.

  • Pour obtenir les autorisations nécessaires pour configurer la mise à niveau d'un cluster, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle Administrateur de cluster standard (standard-cluster-admin).

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. Affichez la liste des versions de mise à niveau de Kubernetes disponibles en imprimant 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 Kubernetes disponibles :

    TARGET_VERSION
    1.30.1000-gke.85
    
  2. Notez la version de Kubernetes à partir de la sortie précédente vers laquelle vous souhaitez mettre à niveau votre cluster. Le targetVersion que vous spécifiez dans la demande 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 de l'API Management.
    • CLUSTER_NAME : nom du cluster Kubernetes à mettre à niveau, tel que 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 de l'API Management.
    • CLUSTER_NAME : nom du cluster Kubernetes à mettre à niveau, tel que 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 les valeurs Current Version et Target Version sont différentes.

    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 a l'état True et que Current Version correspond à Target Version.

    Si la condition Succeeded a l'état False, cela signifie que 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 les sous-composants du cluster après la mise à niveau

Une fois votre cluster Kubernetes mis à niveau, nous vous recommandons de vérifier que tous les sous-composants du cluster sont opérationnels.

Recherchez les échecs de sous-composants dans votre cluster :

  1. Vérifiez qu'aucun sous-composant n'affiche le message ReconciliationError :

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get subcomponent -n CLUSTER_NAME -o json | jq -r \
        '.items[] |  select(.status.conditions[]?.reason == "ReconciliationError") |
        select(.status.featureDisabled != true) |  "Sub-Component: \(.metadata.name)
        - \(.status.conditions[]?.message)"'
    

    Si la sortie renvoie des sous-composants, contactez votre groupe d'opérateurs d'infrastructure pour obtenir de l'aide.

  2. Vérifiez qu'aucun sous-composant n'affiche le message Reconciling :

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get subcomponent -n CLUSTER_NAME -o json | jq -r \
        '.items[] |  select(.status.conditions[]?.reason == "Reconciling") |
        select(.status.featureDisabled != true) | select( "\(.status)" |
        contains("PreinstallPending") | not) | "Sub-Component: \(.metadata.name)
        - \(.status.conditions[]?.message)"'
    

    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 des sous-composants sont toujours à l'état Reconciling après 20 minutes, contactez votre groupe d'opérateurs d'infrastructure pour obtenir de l'aide.

Étapes suivantes