L'upgrade separato del control plane e dei pool di nodi worker in un cluster utente Google Distributed Cloud software only per VMware ti consente di convalidare la compatibilità dei workload su singoli pool di nodi e di distribuire gli upgrade in periodi di manutenzione più brevi.
Questo documento è rivolto agli amministratori IT e agli operatori che gestiscono il ciclo di vita dell'infrastruttura tecnologica sottostante. Per scoprire di più sui ruoli comuni e sugli esempi di attività a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni degli utenti GKE. Prima di iniziare, assicurati di conoscere la panoramica dell'upgrade, le regole per l'upgrade della versione, le best practice per l'upgrade e l'upgrade di un cluster.
Limitazioni
L'upgrade dei node pool separatamente dal control plane presenta le seguenti limitazioni:
Questa funzionalità è supportata per i node pool Ubuntu e Container-Optimized OS, ma non per i node pool Windows.
Questa funzionalità non è disponibile durante l'upgrade di cluster non avanzati a cluster avanzati. I cluster non avanzati verranno automaticamente sottoposti ad upgrade ai cluster avanzati nella versione 1.33.
Versione 1.31: questa funzionalità non è disponibile sui cluster avanzati.
Versione 1.32 e successive: questa funzionalità è disponibile sui cluster avanzati.
La versione del pool di nodi del bilanciatore del carico deve essere la stessa della 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?
In determinate situazioni, potresti voler eseguire l'upgrade di alcuni, ma non di tutti, i pool di nodi worker in un cluster utente:
Puoi prima eseguire l'upgrade del control plane e di un pool di nodi con traffico ridotto o che esegue i workload meno critici. Dopo aver verificato che i tuoi workload funzionano correttamente sulla nuova versione, puoi eseguire l'upgrade di altri pool di nodi fino a quando non viene eseguito l'upgrade di tutti i pool di nodi.
Anziché utilizzare 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 sulla stima del tempo necessario per un periodo di manutenzione, consulta Stima l'impegno in termini di tempo e pianifica un periodo di manutenzione.
Puoi saltare una versione secondaria durante l'upgrade dei node pool per ridurre il numero di upgrade necessari per rimanere su una versione supportata, risparmiando tempo e riducendo le interruzioni dei workload. Per ulteriori informazioni, consulta Salta una versione durante l'upgrade dei node pool.
Prima di iniziare
Nella versione 1.29 e successive, i controlli preflight lato server sono abilitati 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-monitoring. Per maggiori dettagli, consulta i requisiti delle API di Google e di Identity and Access Management (IAM).Assicurati che la versione attuale del cluster sia 1.14 o successiva.
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
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 è stato eseguito correttamente.
Importa le immagini 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[i].gkeOnPremVersionsulla stringa vuota.- Nella versione 1.28 e successive, puoi accelerare l'upgrade del pool di nodi impostando il campo
nodePools[i].updateStrategy.rollingUpdate.maxSurgesu un valore intero maggiore di 1. Quando esegui l'upgrade dei nodi conmaxSurge, l'upgrade di più nodi viene eseguito nello stesso tempo necessario per l'upgrade di un singolo nodo.
- Nella versione 1.28 e successive, puoi accelerare l'upgrade del pool di nodi impostando il campo
Per ogni pool di nodi di cui non vuoi eseguire l'upgrade, imposta
nodePools[i].gkeOnPremVersionsulla versione di origine,SOURCE_VERSION. Tieni presente che non puoi bloccare i pool di nodi del bilanciatore del carico (pool di nodi 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 verrà eseguito l'upgrade del control plane e di
pool-1aTARGET_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 che ora tu voglia 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 bundle 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 in quella versione.
Esegui l'upgrade del control plane
Esegui il passaggio seguente per eseguire l'upgrade del control plane del cluster utente.
Aggiorna i componenti di gcloud CLI:
gcloud components updateModifica la policy 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 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 al momento della creazione del cluster. Se hai creato il cluster utilizzandogkectl, questo è l'ID progetto nel campogkeConnect.projectIDnel file di configurazione del cluster.REGION: la regione Google Cloud in cui l'API GKE On-Prem viene eseguita e archivia i suoi 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 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. 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 node pool dopo l'upgrade del control plane del cluster utente, segui questi passaggi:
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 questo 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 gcloud 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 è necessario ripetere questo passaggio.
Scarica la nuova versione dei componenti ed eseguine il deployment nel cluster di amministrazione:
gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=TARGET_VERSION
Sostituisci quanto segue:
ADMIN_CLUSTER_NAME: il nome del cluster di amministrazione.PROJECT_ID: l'ID del progetto host del parco risorse di cui il cluster utente è membro. Questo è il progetto che hai specificato al momento della creazione del cluster. Se hai creato il cluster utilizzandogkectl, questo è l'ID progetto nel campogkeConnect.projectIDnel file di configurazione del cluster.REGION: la regione Google Cloud in cui l'API GKE On-Prem viene eseguita e archivia i suoi 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 di 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 in quella versione.Nel file
main.tfche hai utilizzato per creare il cluster utente, modificaon_prem_versionnella risorsa del cluster con la 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, come il provider Google Cloud.
Esamina la configurazione e apporta modifiche, se necessario:
terraform planApplica il piano Terraform per eseguire l'upgrade del control plane del cluster utente:
terraform apply
Esegui l'upgrade dei node pool
Per eseguire l'upgrade dei node pool dopo l'upgrade del control plane del cluster utente, segui questi passaggi:
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 = false } on_prem_version = "1.16.0-gke.0" }Inizializza e crea il piano Terraform:
terraform initEsamina la configurazione e apporta modifiche, se necessario:
terraform planApplica il piano Terraform per eseguire l'upgrade dei pool di nodi:
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 Esegui il rollback di un pool di nodi dopo un upgrade.