Upgrade di un cluster

Questo documento spiega come eseguire l'upgrade della versione di Kubernetes di un cluster Kubernetes air-gap di Google Distributed Cloud (GDC). Devi pianificare upgrade di routine per i tuoi cluster per assicurarti che incorporino le funzionalità e le correzioni più recenti di Kubernetes.

Questo documento è destinato a un pubblico come amministratori IT, ingegneri della sicurezza e amministratori di rete all'interno del gruppo di amministratori della piattaforma, che sono responsabili della gestione delle risorse Kubernetes all'interno della propria organizzazione. Per maggiori informazioni, consulta Segmenti di pubblico per la documentazione air-gap di GDC.

Prima di iniziare

  • Scarica e installa gcloud CLI.

  • Installa l'interfaccia a riga di comando kubectl. Per saperne di più, vedi Installare i componenti.

  • Genera un file kubeconfig per il server API di gestione nella zona di destinazione. Per saperne di più, consulta Risorse del cluster Kubernetes di zona.

  • Per ottenere le autorizzazioni necessarie per elencare le versioni di upgrade disponibili, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore cluster utente (user-cluster-admin).

    Se gestisci un cluster standard e non riesci a ottenere il ruolo Amministratore cluster utente dal gruppo di amministratori della piattaforma, devi chiedere loro di fornirti l'elenco delle versioni di upgrade di Kubernetes disponibili.

  • Per ottenere le autorizzazioni necessarie per configurare l'upgrade di un cluster, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore cluster standard (standard-cluster-admin).

Esegui l'upgrade di un cluster Kubernetes

Utilizza l'API UserClusterUpgradeRequest per eseguire l'upgrade di un cluster Kubernetes esistente.

Per eseguire l'upgrade di un cluster Kubernetes utilizzando l'API, segui questi passaggi:

  1. Elenca le versioni di upgrade di Kubernetes disponibili stampando il valore kubernetesVersion degli oggetti UserClusterMetadata:

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

    Sostituisci MANAGEMENT_API_SERVER con il percorso del file kubeconfig del server API di gestione.

    Il comando restituisce un elenco delle versioni di Kubernetes disponibili:

    TARGET_VERSION
    1.30.1000-gke.85
    
  2. Prendi nota della versione di Kubernetes dall'output precedente a cui vuoi eseguire l'upgrade del cluster. Il targetVersion specificato nella richiesta di upgrade nel passaggio successivo deve essere una di queste versioni disponibili.

  3. Richiedi l'upgrade del cluster creando una risorsa 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
    

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER: il percorso del file kubeconfig del server API di gestione.
    • CLUSTER_NAME: il nome del cluster Kubernetes di cui eseguire l'upgrade, ad esempio user-vm-2.
    • CLUSTER_NAMESPACE: lo spazio dei nomi del cluster Kubernetes. Per i cluster condivisi, utilizza lo spazio dei nomi platform. Per i cluster standard, utilizza lo spazio dei nomi del progetto del cluster.
    • TARGET_VERSION: la versione di destinazione per l'upgrade identificata nel passaggio precedente, ad esempio 1.30.1000-gke.85.

    Il tempo medio di upgrade di un cluster Kubernetes è di circa 20 minuti.

  4. Verifica l'upgrade del cluster monitorando la risorsa UserClusterUpgradeRequest:

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

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER: il percorso del file kubeconfig del server API di gestione.
    • CLUSTER_NAME: il nome del cluster Kubernetes di cui eseguire l'upgrade, ad esempio user-vm-2.
    • CLUSTER_NAMESPACE: lo spazio dei nomi del cluster Kubernetes. Per i cluster condivisi, utilizza lo spazio dei nomi platform. Per i cluster standard, utilizza lo spazio dei nomi del progetto del cluster.

    Esamina la sezione Spec dell'output. Contiene Current Version e Target Version. L'upgrade è ancora in corso se Current Version e Target Version sono diversi.

    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
    

    L'upgrade è completo e riuscito quando la condizione Succeeded ha uno stato True e Current Version corrisponde a Target Version.

    Se la condizione Succeeded ha lo stato False, l'upgrade non è riuscito. Se riscontri errori relativi all'upgrade del cluster Kubernetes, contatta il gruppo di operatori dell'infrastruttura per ulteriore assistenza.

Verifica i sottocomponenti del cluster dopo l'upgrade

Dopo l'upgrade del cluster Kubernetes, ti consigliamo di verificare che tutti i sottocomponenti del cluster siano integri.

Controlla la presenza di errori nei sottocomponenti del cluster:

  1. Verifica che non siano presenti sottocomponenti che mostrano il messaggio 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)"'
    

    Se l'output restituisce componenti secondari, contatta il tuo gruppo di operatori dell'infrastruttura per ulteriore assistenza.

  2. Verifica che non siano presenti sottocomponenti che mostrano il messaggio 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)"'
    

    Per i cluster Kubernetes con tre nodi del control plane e tre nodi worker, l'upgrade richiede circa 20 minuti. Se dopo 20 minuti i sottocomponenti sono ancora nello stato Reconciling, contatta il gruppo di operatori dell'infrastruttura per ulteriore assistenza.

Passaggi successivi