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 Google Cloud contenuti, consulta Ruoli e attività utente GKE comuni. Prima di leggere questo documento, assicurati di conoscere 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.
Questa funzionalità non è disponibile quando esegui l'upgrade di cluster non avanzati a cluster avanzati. I cluster non avanzati verranno aggiornati automaticamente a cluster avanzati nella versione 1.33.
Versione 1.31: questa funzionalità non è disponibile nei cluster avanzati.
Versione 1.32 e successive: questa funzionalità è disponibile nei cluster avanzati.
La versione pool di nodi del bilanciatore del carico deve essere uguale alla versione del cluster. L'upgrade di un pool di nodi del bilanciatore del carico (un pool di nodi con
enableLoadBalancer: true) separatamente dal control plane o con un disallineamento delle versioni non è supportato.
Perché eseguire l'upgrade del control plane e dei node pool separatamente?
Se i cluster sono alla 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 node pool 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 carico di lavoro e il tempo di verifica. Per ulteriori informazioni, consulta Saltare una versione durante l'upgrade dei node pool.
In alcune situazioni, potresti voler eseguire l'upgrade di alcuni, ma non di tutti i node pool worker 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 carichi di lavoro meno critici. Dopo aver verificato che i carichi di lavoro funzionano correttamente nella nuova versione, puoi eseguire l'upgrade di altri node pool, fino a quando non vengono eseguiti tutti gli upgrade.
Anziché un unico periodo di manutenzione di grandi dimensioni per l'upgrade del cluster, puoi eseguire l'upgrade del cluster 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
Nella versione 1.29 e successive, i controlli preflight lato server sono attivati per impostazione predefinita. Assicurati di esaminare le regole firewall per apportare le modifiche necessarie.
Per eseguire l'upgrade alla versione 1.28 e successive, devi attivare
kubernetesmetadata.googleapis.come concedere il ruolo IAMkubernetesmetadata.publisheral service account di logging e monitoraggio. Per maggiori dettagli, consulta Requisiti di Google API e IAM.Assicurati che la versione attuale del cluster sia la versione 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 node pool worker è supportato tramite gkectl, Google Cloud CLI e Terraform.
Puoi utilizzare Terraform per l'upgrade solo se hai creato il cluster utente utilizzando Terraform.
gkectl
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 esempio1.16.11-gke.25.Versione Descrizione SOURCE_VERSIONLa versione attuale del cluster. TARGET_VERSIONScegli la versione di destinazione. Seleziona la patch consigliata dalla versione secondaria di destinazione. Esegui l'upgrade della workstation di amministrazione alla versione di destinazione. Attendi un messaggio che indica che l'upgrade è andato a buon fine.
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_KUBECONFIGcon il percorso del filekubeconfigdel cluster di amministrazione.Apporta le seguenti modifiche al file di configurazione del cluster utente:
Imposta il campo
gkeOnPremVersionsulla versione di destinazione,TARGET_VERSION.Per ogni pool di nodi di cui vuoi eseguire l'upgrade, imposta il campo
nodePools.nodePool[i].gkeOnPremVersionsulla stringa vuota.- Nella versione 1.28 e successive, puoi accelerare l'upgrade del pool di nodi
impostando
nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurgecampo su un valore intero maggiore di 1. Quando esegui l'upgrade dei nodi conmaxSurge, viene eseguito l'upgrade di più nodi nello stesso tempo necessario per eseguire l'upgrade di un singolo nodo.
- Nella versione 1.28 e successive, puoi accelerare l'upgrade del pool di nodi
impostando
Per ogni pool di nodi di cui non vuoi eseguire l'upgrade, imposta
nodePools.nodePool[i].gkeOnPremVersionsulla versione di origine,SOURCE_VERSION. Tieni presente che non puoi conservare i node pool del bilanciatore del carico (node pool conenableLoadBalancer: true); la loro versione deve corrispondere alla versione del cluster.
L'esempio seguente mostra una parte del file di configurazione del cluster utente. Specifica che il control plane e
pool-1verranno aggiornati aTARGET_VERSION, mapool-2rimarrà aSOURCE_VERSION.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...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_CONFIGcon 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.
Nel file di configurazione del cluster utente, in
pool-2, impostagkeOnPremVersionsulla stringa vuota:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...Esegui
gkectl update clusterper applicare la modifica:gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
gcloud CLI
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 alla versione specificata per l'upgrade. Questi componenti consentono al cluster di amministrazione di gestire i cluster utente a quella versione.
Esegui l'upgrade del control plane
Esegui il seguente passaggio per eseguire l'upgrade del control plane del cluster utente.
Aggiorna i componenti di Google Cloud CLI:
gcloud components updateModifica la policy di upgrade del 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 di cui eseguire l'upgrade.PROJECT_ID: l'ID del progetto host del parco risorse di cui il cluster utente è membro. Questo è il progetto che hai specificato quando è stato creato il cluster. Se hai creato il cluster utilizzandogkectl, questo è l'ID progetto nel campogkeConnect.projectIDnel 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 utilizzandogkectl, questa è la regione che hai specificato quando hai registrato il cluster nell'API GKE On-Prem.
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_VERSIONcon 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è il OPERATION_ID dell'operazione a lunga esecuzione. Puoi scoprire lo stato dell'operazione eseguendo 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
Esegui i seguenti passaggi per eseguire l'upgrade dei node pool dopo l'upgrade del control plane del cluster utente:
Recupera un elenco di node pool nel cluster utente:
gcloud container vmware node-pools list --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION
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
Aggiorna i componenti di Google Cloud CLI:
gcloud components updateSe 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 dovrai ripetere questo passaggio.
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 di cui eseguire l'upgrade.PROJECT_ID: l'ID del progetto host del parco risorse di cui il cluster utente è membro. Questo è il progetto che hai specificato quando è stato creato il cluster. Se hai creato il cluster utilizzandogkectl, questo è l'ID progetto nel campogkeConnect.projectIDnel 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 utilizzandogkectl, 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-versionnel cluster di amministrazione, quindi esegue il deployment dei componenti. Questi componenti consentono al cluster di amministrazione di gestire i cluster utente a quella versione.Nel file
main.tfche hai utilizzato per creare il cluster utente, modificaon_prem_versionnella risorsa del cluster alla nuova versione.Aggiungi quanto segue alla risorsa del cluster in modo che venga eseguito l'upgrade solo del control plane:
upgrade_policy { control_plane_only = true }Inizializza e crea il piano Terraform:
terraform initTerraform installa tutte le librerie necessarie, ad esempio il Google Cloud provider.
Esamina la configurazione e apporta le modifiche necessarie:
terraform planApplica il piano Terraform per creare il cluster utente:
terraform apply
Esegui l'upgrade dei node pool
Esegui i seguenti passaggi per eseguire l'upgrade dei node pool dopo l'upgrade del control plane del cluster utente:
In
main.tfnella 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" }Inizializza e crea il piano Terraform:
terraform initEsamina la configurazione e apporta le modifiche necessarie:
terraform planApplica 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.