Esegui l'upgrade dei node pool

Questa pagina mostra come eseguire l'upgrade del control plane e dei node pool separatamente in un cluster utente creato con Google Distributed Cloud (solo software) su VMware. Questa pagina è rivolta agli amministratori IT e agli operatori che gestiscono il ciclo di vita dell'infrastruttura tecnologica sottostante. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti, consulta la pagina Ruoli e attività comuni degli utenti GKE. Google Cloud Prima di leggere questo documento, assicurati di avere familiarità con la pianificazione e l'esecuzione degli upgrade di Google Distributed Cloud, come descritto di seguito:

Limitazioni

L'upgrade dei node pool separatamente dal control plane presenta le seguenti limitazioni:

  • Questa funzionalità è supportata per i node pool Ubuntu e COS, ma non per i node pool Windows.

  • Versione 1.31: questa funzionalità non è disponibile sui cluster avanzati.

  • Versione 1.32 e successive: questa funzionalità è disponibile sui cluster avanzati.

Perché eseguire l'upgrade del control plane e dei node pool separatamente?

  • Se i tuoi cluster hanno la versione 1.16 o successive, puoi saltare una versione secondaria quando esegui l'upgrade dei node pool. L'esecuzione di un upgrade con salto di versione dimezza il tempo necessario per eseguire l'upgrade sequenziale dei pool di nodi di due versioni. Inoltre, gli upgrade con salto di versione ti consentono di aumentare il tempo tra gli upgrade necessari per rimanere su una versione supportata. La riduzione del numero di upgrade riduce le interruzioni del workload e il tempo di verifica. Per saperne di più, consulta Salta una versione durante l'upgrade dei pool di nodi.

  • In determinate situazioni, potresti voler eseguire l'upgrade di alcuni pool di nodi, ma non di tutti, in un cluster utente, ad esempio:

    • Potresti prima eseguire l'upgrade del control plane e di un pool di nodi con traffico leggero o che esegue i workload meno critici. Dopo aver verificato che i tuoi workload funzionano correttamente nella nuova versione, puoi eseguire l'upgrade di altri pool di nodi, finché non viene eseguito l'upgrade di tutti i pool di nodi.

    • Invece di un unico periodo di manutenzione di grandi dimensioni per l'upgrade del cluster, puoi eseguire l'upgrade del cluster in più periodi di manutenzione. Consulta Stimare l'impegno di tempo e pianificare un periodo di manutenzione per informazioni sulla stima del tempo per un periodo di manutenzione.

Prima di iniziare

  1. Nella versione 1.29 e successive, i controlli preflight lato server sono abilitati per impostazione predefinita. Assicurati di rivedere le regole firewall per apportare le modifiche necessarie.

  2. Per eseguire l'upgrade alla versione 1.28 e successive, devi attivare kubernetesmetadata.googleapis.com e concedere il ruolo IAM kubernetesmetadata.publisher al service account logging-monitoring. Per maggiori dettagli, vedi Requisiti di Google API e IAM.

  3. Assicurati che la versione attuale del cluster sia la 1.14 o successive.

Esegui l'upgrade del control plane e dei node pool selezionati

L'upgrade del control plane di un cluster utente separatamente dai pool di nodi worker è supportato utilizzando gkectl, Google Cloud CLI e Terraform. Puoi utilizzare Terraform per l'upgrade solo se hai creato il cluster utente utilizzando Terraform.

gkectl

  1. Definisci la versione di origine e la versione di destinazione nelle seguenti variabili segnaposto. Tutte le versioni devono essere il numero di versione completo nel formato x.y.z-gke.N, ad esempio 1.16.11-gke.25.

    Versione Descrizione
    SOURCE_VERSION La versione attuale del cluster.
    TARGET_VERSION Scegli la versione di destinazione. Seleziona la patch consigliata dalla versione secondaria di destinazione.
  2. Esegui l'upgrade della workstation di amministrazione alla versione di destinazione. Attendi un messaggio che indica che l'upgrade è andato a buon fine.

  3. Importa le immagini del sistema operativo corrispondenti in vSphere:

    gkectl prepare \
      --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Sostituisci ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster di amministrazione.

  4. Apporta le seguenti modifiche al file di configurazione del cluster utente:

    • Imposta il campo gkeOnPremVersion sulla versione di destinazione, TARGET_VERSION.

    • Per ogni pool di nodi di cui vuoi eseguire l'upgrade, imposta il campo nodePools.nodePool[i].gkeOnPremVersion sulla stringa vuota.

      • Nella versione 1.28 e successive, puoi accelerare l'upgrade del pool di nodi impostando il nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurge campo su un valore intero maggiore di 1. Quando esegui l'upgrade dei nodi con maxSurge, più nodi vengono aggiornati nello stesso tempo necessario per eseguire l'upgrade di un singolo nodo.
    • Per ogni pool di nodi che non vuoi aggiornare, imposta nodePools.nodePool[i].gkeOnPremVersion sulla versione di origine, SOURCE_VERSION.

    L'esempio seguente mostra una parte del file di configurazione del cluster utente. Specifica che il control plane e pool-1 verranno aggiornati alla versione TARGET_VERSION, ma pool-2 rimarrà alla versione SOURCE_VERSION.

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: SOURCE_VERSION
      ...
    
  5. Esegui l'upgrade del control plane e dei node pool selezionati:

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG_FILE
    

    Sostituisci USER_CLUSTER_CONFIG con il percorso del file di configurazione del cluster utente.

Esegui l'upgrade di altri node pool

Utilizzando l'esempio precedente, supponiamo che tutto funzioni correttamente con pool-1 e ora vuoi eseguire l'upgrade di pool-2.

  1. Nel file di configurazione del cluster utente, nella sezione pool-2, imposta gkeOnPremVersion sulla stringa vuota:

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: ""
      ...
    
  2. Esegui gkectl update cluster per applicare la modifica:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

Interfaccia a riga di comando gcloud

L'upgrade di un cluster utente richiede alcune modifiche al cluster di amministrazione. Il comando gcloud container vmware clusters upgrade esegue automaticamente le seguenti operazioni:

  • Registra il cluster di amministrazione nell'API GKE On-Prem se non è già registrato.

  • Scarica ed esegue il deployment di un pacchetto di componenti nel cluster di amministrazione. La versione dei componenti corrisponde a quella specificata per l'upgrade. Questi componenti consentono al cluster di amministrazione di gestire i cluster utente in quella versione.

Esegui l'upgrade del control plane

Esegui il passaggio successivo per eseguire l'upgrade del piano di controllo del cluster utente.

  1. Aggiorna i componenti di Google Cloud CLI:

    gcloud components update
    
  2. Modifica il criterio di upgrade sul cluster:

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --upgrade-policy control-plane-only=True
    

    Sostituisci quanto segue:

    • USER_CLUSTER_NAME: il nome del cluster utente da aggiornare.

    • PROJECT_ID: l'ID del progetto host del parco risorse di cui fa parte il cluster utente. Questo è il progetto che hai specificato al momento della creazione del cluster. Se hai creato il cluster utilizzando gkectl, questo è l'ID progetto nel campo gkeConnect.projectID del file di configurazione del cluster.

    • REGION: la Google Cloud regione in cui l'API GKE On-Prem viene eseguita e archivia i relativi metadati. Se hai creato il cluster utilizzando un client API GKE On-Prem, questa è la regione che hai selezionato durante la creazione del cluster. Se hai creato il cluster utilizzando gkectl, questa è la regione che hai specificato quando hai registrato il cluster nell'API GKE On-Prem.

  3. Esegui l'upgrade del control plane del cluster:

    gcloud container vmware clusters upgrade USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

    Sostituisci TARGET_VERSION con la versione a cui eseguire l'upgrade. Seleziona la patch consigliata dalla versione secondaria di destinazione.

    L'output del comando è simile al seguente:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    Nell'output di esempio, la stringa operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 è l'OPERATION_ID dell'operazione a lunga esecuzione. Puoi scoprire lo stato dell'operazione eseguendo questo comando in un'altra finestra del terminale:

    gcloud container vmware operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=REGION
    

Esegui l'upgrade dei node pool

Per eseguire l'upgrade dei pool di nodi dopo l'upgrade del piano di controllo del cluster utente, procedi nel seguente modo:

  1. Recupera un elenco di node pool nel cluster utente:

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. Per ogni pool di nodi che vuoi eseguire l'upgrade, esegui il seguente comando:

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

Terraform

  1. Aggiorna i componenti di Google Cloud CLI:

    gcloud components update
    
  2. Se non l'hai ancora fatto, registra il cluster di amministrazione nell'API GKE On-Prem. Una volta registrato il cluster nell'API GKE On-Prem, non è necessario ripetere questo passaggio.

  3. Scarica la nuova versione dei componenti ed eseguine il deployment nel cluster di amministrazione:

    gcloud vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=TARGET_VERSION
    

    Sostituisci quanto segue:

    • USER_CLUSTER_NAME: il nome del cluster utente da aggiornare.

    • PROJECT_ID: l'ID del progetto host del parco risorse di cui fa parte il cluster utente. Questo è il progetto che hai specificato al momento della creazione del cluster. Se hai creato il cluster utilizzando gkectl, questo è l'ID progetto nel campo gkeConnect.projectID del file di configurazione del cluster.

    • REGION: la Google Cloud regione in cui l'API GKE On-Prem viene eseguita e archivia i relativi metadati. Se hai creato il cluster utilizzando un client API GKE On-Prem, questa è la regione che hai selezionato durante la creazione del cluster. Se hai creato il cluster utilizzando gkectl, questa è la regione che hai specificato quando hai registrato il cluster nell'API GKE On-Prem.

    • TARGET_VERSION: la versione a cui eseguire l'upgrade. Seleziona la patch consigliata dalla versione secondaria di destinazione.

    Questo comando scarica la versione dei componenti specificata in --required-platform-version nel cluster di amministrazione, quindi esegue il deployment dei componenti. Questi componenti consentono al cluster di amministrazione di gestire i cluster utente in quella versione.

  4. Nel file main.tf che hai utilizzato per creare il cluster utente, modifica on_prem_version nella risorsa cluster con la nuova versione.

  5. Aggiungi quanto segue alla risorsa cluster in modo che venga eseguito l'upgrade solo del control plane:

    upgrade_policy {
      control_plane_only = true
    }
    
  6. Inizializza e crea il piano Terraform:

    terraform init
    

    Terraform installa tutte le librerie necessarie, ad esempio il provider Google Cloud.

  7. Esamina la configurazione e apporta modifiche, se necessario:

    terraform plan
    
  8. Applica il piano Terraform per creare il cluster utente:

    terraform apply
    

Esegui l'upgrade dei node pool

Per eseguire l'upgrade dei pool di nodi dopo l'upgrade del piano di controllo del cluster utente, procedi nel seguente modo:

  1. In main.tf nella risorsa per ogni pool di nodi che vuoi aggiornare, aggiungi quanto segue:

    on_prem_version = "TARGET_VERSION"
    

    Ad esempio:

    resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" {
    name = "my-nodepool"
    location = "us-west1"
    vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name
    config {
      replicas = 3
      image_type = "ubuntu_containerd"
      enable_load_balancer = true
    }
    on_prem_version = "1.16.0-gke.0"
    }
    
  2. Inizializza e crea il piano Terraform:

    terraform init
    
  3. Esamina la configurazione e apporta modifiche, se necessario:

    terraform plan
    
  4. Applica il piano Terraform per creare il cluster utente:

    terraform apply
    

Risoluzione dei problemi

Se riscontri un problema dopo l'upgrade di un pool di nodi, puoi eseguire il rollback alla versione precedente. Per saperne di più, consulta Rollback di un pool di nodi dopo un upgrade.