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
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.
Per eseguire l'upgrade alla versione 1.28 e successive, devi attivare
kubernetesmetadata.googleapis.com
e concedere il ruolo IAMkubernetesmetadata.publisher
al service account logging-monitoring. Per maggiori dettagli, vedi Requisiti di Google API e IAM.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
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_VERSION
La versione attuale del cluster. TARGET_VERSION
Scegli 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_KUBECONFIG
con il percorso del filekubeconfig
del cluster di amministrazione.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 conmaxSurge
, più nodi vengono aggiornati 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 il
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 versioneTARGET_VERSION
, mapool-2
rimarrà alla versioneSOURCE_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_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
.
Nel file di configurazione del cluster utente, nella sezione
pool-2
, impostagkeOnPremVersion
sulla stringa vuota:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
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.
Aggiorna i componenti di Google Cloud CLI:
gcloud components update
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 utilizzandogkectl
, questo è l'ID progetto nel campogkeConnect.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 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_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:
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 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
Aggiorna i componenti di Google Cloud CLI:
gcloud components update
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.
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 utilizzandogkectl
, questo è l'ID progetto nel campogkeConnect.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 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-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.Nel file
main.tf
che hai utilizzato per creare il cluster utente, modificaon_prem_version
nella risorsa cluster con la nuova versione.Aggiungi quanto segue alla risorsa 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 init
Terraform installa tutte le librerie necessarie, ad esempio il provider Google Cloud.
Esamina la configurazione e apporta modifiche, se necessario:
terraform plan
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:
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" }
Inizializza e crea il piano Terraform:
terraform init
Esamina la configurazione e apporta modifiche, se necessario:
terraform plan
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.