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 di base. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud, consulta Ruoli e attività utente comuni di GKE Enterprise. Prima di leggere questo documento, assicurati di conoscere la pianificazione e l'esecuzione degli upgrade di Google Distributed Cloud come descritto di seguito:

L'upgrade dei node pool separatamente dal piano di controllo è supportato per i node pool Ubuntu e COS, ma non per i node pool Windows.

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

  • Se i tuoi cluster sono alla versione 1.16 o successiva, puoi saltare una versione minore durante 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 che ignorano le versioni ti consentono di aumentare il tempo tra gli upgrade necessari per continuare a utilizzare una versione supportata. La riduzione del numero di upgrade riduce le interruzioni del workload e i tempi di verifica. Per ulteriori informazioni, consulta Ignorare una versione durante l'upgrade dei pool di nodi.

  • In alcuni casi, potresti voler eseguire l'upgrade di alcuni, ma non di tutti i pool di nodi in un cluster di utenti, ad esempio:

    • Per prima cosa, puoi eseguire l'upgrade del piano di controllo e di un pool di nodi con traffico ridotto o che esegue i carichi di lavoro meno critici. Una volta accertatoti che i tuoi workload funzionano correttamente nella nuova versione, puoi eseguire l'upgrade di altri pool di nodi, fino a quando non saranno stati aggiornati tutti.

    • Anziché un unico periodo di manutenzione per l'upgrade del cluster, puoi eseguire l'upgrade in più periodi di manutenzione. Per informazioni su come stimare il tempo necessario per un periodo di manutenzione, consulta Stimare il tempo necessario e pianificare un periodo di manutenzione.

Prima di iniziare

  1. Nella versione 1.29 e successive, i controlli preflight lato server sono attivati per impostazione predefinita. Assicurati di esaminare le regole del 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 all'account di servizio logging-monitoring. Per maggiori dettagli, consulta Requisiti dell'API Google e di IAM.

  3. Assicurati che la versione corrente del cluster sia 1.14 o successiva.

Esegui l'upgrade del control plane e dei pool di nodi selezionati

L'upgrade del piano di controllo 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 con Terraform.

gkectl

  1. Definisci la versione di origine e quella 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 ti indichi che l'upgrade è stato eseguito correttamente.

  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 tuo 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.

    • Per ogni pool di nodi di cui non vuoi eseguire l'upgrade, 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 verrà eseguito l'upgrade del control plane e di pool-1 a TARGET_VERSION, ma pool-2 rimarrà su 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 pool di nodi 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 pool di nodi

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

  1. Nel file di configurazione del cluster utente, in 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 quanto segue:

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

  • Scarica ed esegue il deployment di un bundle 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 seguente 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 di utenti di cui eseguire l'upgrade.

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

    • REGION: la regione Google Cloud in cui viene eseguita l'API GKE On-Prem e in cui vengono archiviati i relativi metadati. Se hai creato il cluster utilizzando un client API GKE On-Prem, questa è la regione selezionata durante la creazione del cluster. Se hai creato il cluster utilizzando gkectl, si tratta della regione specificata quando hai registrato il cluster nell'API GKE On-Prem.

  3. Esegui l'upgrade del piano di controllo del cluster:

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

    Sostituisci TARGET_VERSION con la versione di 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 è il OPERATION_ID dell'operazione a lunga esecuzione. Per conoscere lo stato dell'operazione, esegui il seguente 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:

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

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. Per ogni pool di nodi di cui 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 esegui il deployment nel cluster amministrativo:

    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 di utenti di cui eseguire l'upgrade.

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

    • REGION: la regione Google Cloud in cui viene eseguita l'API GKE On-Prem e in cui vengono archiviati i relativi metadati. Se hai creato il cluster utilizzando un client API GKE On-Prem, questa è la regione selezionata durante la creazione del cluster. Se hai creato il cluster utilizzando gkectl, si tratta della regione specificata 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 e poi esegue il deployment dei componenti. Questi componenti consentono al cluster di amministrazione di gestire i cluster di utenti in quella versione.

  4. Nel file main.tf utilizzato per creare il cluster di utenti, modifica on_prem_version nella risorsa del cluster con la nuova versione.

  5. Aggiungi quanto segue alla risorsa del 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 le librerie necessarie, ad esempio il fornitore Google Cloud.

  7. Esamina la configurazione e apporta le modifiche necessarie:

    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, svolgi i seguenti passaggi:

  1. In main.tf nella risorsa per ogni pool di nodi di cui vuoi eseguire l'upgrade, 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 le modifiche necessarie:

    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 ulteriori informazioni, consulta Eseguire il rollback di un pool di nodi dopo un upgrade.