Questo tutorial mostra come eseguire l'upgrade di un ambiente Google Kubernetes Engine (GKE) multi-cluster utilizzando Ingress multi-cluster. Questo tutorial è la continuazione del documento sugli upgrade GKE multi-cluster con Ingress multi-cluster, che spiega in modo più dettagliato il processo, l'architettura e i termini. Ti consigliamo di leggere il documento sui concetti prima di questo tutorial.
Per un confronto dettagliato tra Ingress multi-cluster (MCI), Multi-cluster Gateway (MCG) e bilanciatore del carico con gruppi di endpoint di rete autonomi (LB e NEG autonomi), consulta Scegliere l'API di bilanciamento del carico multicluster per GKE.
Questo documento è rivolto agli amministratori di Google Cloud responsabili della gestione delle flotte per i cluster GKE.
Ti consigliamo di eseguire l'upgrade automatico dei cluster GKE. L'upgrade automatico è un modo completamente gestito per aggiornare automaticamente i cluster (control plane e nodi) in base a un programma delle pubblicazioni determinato daGoogle Cloud. Ciò non richiede alcun intervento da parte dell'operatore. Tuttavia, se vuoi un maggiore controllo su come e quando vengono eseguiti gli upgrade dei cluster, questo tutorial illustra un metodo per eseguire l'upgrade di più cluster in cui le tue app vengono eseguite su tutti i cluster. Poi utilizza Ingress multi-cluster per svuotare un cluster alla volta prima dell'upgrade.
Architettura
Questo tutorial utilizza la seguente architettura. Esistono tre cluster in totale: due cluster (blue e green) fungono da cluster identici con la stessa app di cui è stato eseguito il deployment e un cluster (ingress-config) funge da cluster del control plane che configura Ingress multi-cluster. In questo tutorial, esegui il deployment di un'app di esempio in due cluster di app (cluster blue e green).

Obiettivi
- Crea tre cluster GKE e registrali come parco risorse.
- Configura un cluster GKE (
ingress-config) come cluster di configurazione centrale. - Esegui il deployment di un'app di esempio negli altri cluster GKE.
- Configura Ingress multi-cluster per inviare il traffico client all'app in esecuzione su entrambi i cluster di app.
- Configura un generatore di carico per l'app e configura il monitoraggio.
- Rimuovi (svuota) un cluster di app da Ingress multi-cluster ed esegui l'upgrade del cluster svuotato.
- Riversa il traffico nel cluster di cui è stato eseguito l'upgrade utilizzando Ingress multi-cluster.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
- Questo tutorial richiede di
configurare Ingress multi-cluster
in modo che sia configurato quanto segue:
- Due o più cluster con le stesse app, come spazi dei nomi, deployment e servizi, in esecuzione su tutti i cluster.
- L'upgrade automatico è disattivato per tutti i cluster.
- I cluster sono cluster VPC nativi che utilizzano intervalli di indirizzi IP alias
- Avere il bilanciamento del carico HTTP abilitato (abilitato per impostazione predefinita).
gcloud --versiondeve essere pari o superiore a 369. I passaggi di registrazione del cluster GKE dipendono da questa versione o da una successiva.
-
Nella console Google Cloud , nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud .
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
-
Nella console Google Cloud , attiva Cloud Shell.
Imposta il progetto predefinito:
export PROJECT=$(gcloud info --format='value(config.project)') gcloud config set project ${PROJECT}Abilita le API GKE, Hub e
multiclusteringress:gcloud services enable container.googleapis.com \ gkehub.googleapis.com \ multiclusteringress.googleapis.com \ multiclusterservicediscovery.googleapis.com
Configura l'ambiente
In Cloud Shell, clona il repository per ottenere i file per questo tutorial:
cd ${HOME} git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samplesCrea una directory
WORKDIR:cd kubernetes-engine-samples/networking/gke-multicluster-upgrade-mci/ export WORKDIR=`pwd`
Crea e registra i cluster GKE nell'hub
In questa sezione crei tre cluster GKE e li registri in GKE Hub.
Crea cluster GKE
In Cloud Shell, crea tre cluster GKE:
gcloud container clusters create ingress-config --location us-west1-a \ --release-channel=None --no-enable-autoupgrade --num-nodes=4 \ --enable-ip-alias --workload-pool=${PROJECT}.svc.id.goog --quiet --async gcloud container clusters create blue --location us-west1-b --num-nodes=3 \ --release-channel=None --no-enable-autoupgrade --enable-ip-alias \ --workload-pool=${PROJECT}.svc.id.goog --quiet --async gcloud container clusters create green --location us-west1-c --num-nodes=3 \ --release-channel=None --no-enable-autoupgrade --enable-ip-alias \ --workload-pool=${PROJECT}.svc.id.goog --quietAi fini di questo tutorial, crea i cluster in una singola regione, in tre zone diverse:
us-west1-a,us-west1-beus-west1-c. Per saperne di più su regioni e zone, consulta Area geografica e regioni.Attendi qualche minuto fino alla creazione di tutti i cluster. Assicurati che i cluster siano in esecuzione:
gcloud container clusters listL'output è simile al seguente:
NAME: ingress-config LOCATION: us-west1-a MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.233.186.135 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 4 STATUS: RUNNING NAME: blue LOCATION: us-west1-b MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 34.82.35.222 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING NAME: green LOCATION: us-west1-c MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.185.204.26 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNINGCrea un file
kubeconfige connettiti a tutti i cluster per generare voci nel filekubeconfig:touch gke-upgrade-kubeconfig export KUBECONFIG=gke-upgrade-kubeconfig gcloud container clusters get-credentials ingress-config \ --location us-west1-a --project ${PROJECT} gcloud container clusters get-credentials blue --location us-west1-b \ --project ${PROJECT} gcloud container clusters get-credentials green --location us-west1-c \ --project ${PROJECT}Utilizzi il file
kubeconfigper creare l'autenticazione ai cluster creando un utente e un contesto per ogni cluster. Dopo aver creato il filekubeconfig, puoi cambiare rapidamente il contesto tra i cluster.Verifica di avere tre cluster nel file
kubeconfig:kubectl config view -ojson | jq -r '.clusters[].name'L'output è il seguente:
gke_gke-multicluster-upgrades_us-west1-a_ingress-config gke_gke-multicluster-upgrades_us-west1-b_blue gke_gke-multicluster-upgrades_us-west1-c_greenRecupera il contesto per i tre cluster per un utilizzo successivo:
export INGRESS_CONFIG_CLUSTER=$(kubectl config view -ojson | jq \ -r '.clusters[].name' | grep ingress-config) export BLUE_CLUSTER=$(kubectl config view -ojson | jq \ -r '.clusters[].name' | grep blue) export GREEN_CLUSTER=$(kubectl config view -ojson | jq \ -r '.clusters[].name' | grep green) echo -e "${INGRESS_CONFIG_CLUSTER}\n${BLUE_CLUSTER}\n${GREEN_CLUSTER}"L'output è il seguente:
gke_gke-multicluster-upgrades_us-west1-a_ingress-config gke_gke-multicluster-upgrades_us-west1-b_blue gke_gke-multicluster-upgrades_us-west1-c_green
Registra i cluster GKE in un parco risorse
La registrazione dei cluster in un parco risorse ti consente di gestire i cluster Kubernetes in ambienti ibridi. I cluster registrati nei parchi risorse possono utilizzare funzionalità GKE avanzate come Ingress multi-cluster. Per registrare un cluster GKE a un parco risorse, puoi utilizzare direttamente un account di servizio account Google Cloudoppure utilizzare l'approccio consigliato Workload Identity Federation for GKE, che consente a un account di servizio Kubernetes nel tuo cluster GKE di fungere da account di servizio Identity and Access Management.
Registra i tre cluster come parco risorse:
gcloud container fleet memberships register ingress-config \ --gke-cluster=us-west1-a/ingress-config \ --enable-workload-identity gcloud container fleet memberships register blue \ --gke-cluster=us-west1-b/blue \ --enable-workload-identity gcloud container fleet memberships register green \ --gke-cluster=us-west1-c/green \ --enable-workload-identityVerifica che i cluster siano registrati:
gcloud container fleet memberships listL'output è simile al seguente:
NAME: blue EXTERNAL_ID: 401b4f08-8246-4f97-a6d8-cf1b78c2a91d NAME: green EXTERNAL_ID: 8041c36a-9d42-40c8-a67f-54fcfd84956e NAME: ingress-config EXTERNAL_ID: 65ac48fe-5043-42db-8b1e-944754a0d725Configura il cluster
ingress-configcome cluster di configurazione per Ingress multi-cluster attivando la funzionalitàmulticlusteringresstramite l'hub:gcloud container fleet ingress enable --config-membership=ingress-configIl comando precedente aggiunge le CRD (Custom Resource Definitions)
MulticlusterIngresseMulticlusterServiceal clusteringress-config. Il completamento di questo comando richiede alcuni minuti. Attendi prima di procedere con il passaggio successivo.Verifica che il cluster
ingress-clustersia stato configurato correttamente per Ingress multi-cluster:watch gcloud container fleet ingress describeAttendi che l'output sia simile al seguente:
createTime: '2022-07-05T10:21:40.383536315Z' membershipStates: projects/662189189487/locations/global/memberships/blue: state: code: OK updateTime: '2022-07-08T10:59:44.230329189Z' projects/662189189487/locations/global/memberships/green: state: code: OK updateTime: '2022-07-08T10:59:44.230329950Z' projects/662189189487/locations/global/memberships/ingress-config: state: code: OK updateTime: '2022-07-08T10:59:44.230328520Z' name: projects/gke-multicluster-upgrades/locations/global/features/multiclusteringress resourceState: state: ACTIVE spec: multiclusteringress: configMembership: projects/gke-multicluster-upgrades/locations/global/memberships/ingress-config state: state: code: OK description: Ready to use updateTime: '2022-07-08T10:57:33.303543609Z' updateTime: '2022-07-08T10:59:45.247576318Z'Per uscire dal comando
watch, premi Ctrl+C.
Esegui il deployment di un'applicazione di esempio nei cluster blu e verde
In Cloud Shell, esegui il deployment dell'app
whereamidi esempio nei clusterblueegreen:kubectl --context ${BLUE_CLUSTER} apply -f ${WORKDIR}/application-manifests kubectl --context ${GREEN_CLUSTER} apply -f ${WORKDIR}/application-manifestsAttendi qualche minuto e assicurati che tutti i pod nei cluster
blueegreenabbiano lo statoRunning:kubectl --context ${BLUE_CLUSTER} get pods kubectl --context ${GREEN_CLUSTER} get podsL'output è simile al seguente:
NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-zsmr6 1/1 Running 0 74s NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-sndz7 1/1 Running 0 68s.
Configura Ingress multi-cluster
In questa sezione, creerai un Ingress multi-cluster che invia il traffico all'applicazione in esecuzione sui cluster blue e green. Utilizzi
Cloud Load Balancing
per creare un bilanciatore del carico che utilizza l'app whereami nei cluster blue e
green come backend. Per creare il bilanciatore del carico, sono necessarie due risorse: un MultiClusterIngress e uno o più MultiClusterServices.
Gli oggetti MultiClusterIngress e MultiClusterService sono analoghi multi-cluster
per le risorse Kubernetes Ingress e Service esistenti utilizzate nel contesto di un singolo cluster.
In Cloud Shell, esegui il deployment della risorsa
MulticlusterIngressnel clusteringress-config:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mci.yamlL'output è il seguente:
multiclusteringress.networking.gke.io/whereami-mci createdEsegui il deployment della risorsa
MulticlusterServicenel clusteringress-config:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yamlL'output è il seguente:
multiclusterservice.networking.gke.io/whereami-mcs createdPer confrontare le due risorse:
Esamina la risorsa
MulticlusterIngress:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusteringress -o yamlL'output contiene quanto segue:
spec: template: spec: backend: serviceName: whereami-mcs servicePort: 8080La risorsa
MulticlusterIngressè simile alla risorsa Kubernetes Ingress, tranne per il fatto che la specificaserviceNamepunta a una risorsaMulticlusterService.Esamina la risorsa
MulticlusterService:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice -o yamlL'output contiene quanto segue:
spec: clusters: - link: us-west1-b/blue - link: us-west1-c/green template: spec: ports: - name: web port: 8080 protocol: TCP targetPort: 8080 selector: app: whereamiLa risorsa
MulticlusterServiceè simile a una risorsa di servizio Kubernetes, tranne per il fatto che ha una specificaclusters. Il valoreclustersè l'elenco dei cluster registrati in cui viene creata la risorsaMulticlusterService.Verifica che la risorsa
MulticlusterIngressabbia creato un bilanciatore del carico con un servizio di backend che punta alla risorsaMulticlusterService:watch kubectl --context ${INGRESS_CONFIG_CLUSTER} \ get multiclusteringress -o jsonpath="{.items[].status.VIP}"L'operazione potrebbe richiedere fino a 10 minuti Attendi che l'output sia simile al seguente:
34.107.246.9Per uscire dal comando
watch, premiControl+C.
In Cloud Shell, recupera il VIP di Cloud Load Balancing:
export GCLB_VIP=$(kubectl --context ${INGRESS_CONFIG_CLUSTER} \ get multiclusteringress -o json | jq -r '.items[].status.VIP') \ && echo ${GCLB_VIP}L'output è simile al seguente:
34.107.246.9Utilizza
curlper accedere al bilanciatore del carico e all'applicazione di cui è stato eseguito il deployment:curl ${GCLB_VIP}L'output è simile al seguente:
{ "cluster_name": "green", "host_header": "34.107.246.9", "pod_name": "whereami-deployment-756c7dc74c-sndz7", "pod_name_emoji": "😇", "project_id": "gke-multicluster-upgrades", "timestamp": "2022-07-08T14:26:07", "zone": "us-west1-c" }Esegui ripetutamente il comando
curl. Tieni presente che le richieste vengono bilanciate tra l'applicazionewhereamidi cui è stato eseguito il deployment in due cluster,blueegreen.
Configura il generatore del carico
In questa sezione, configuri un servizio loadgenerator che genera traffico client
verso il VIP di Cloud Load Balancing. Innanzitutto, il traffico viene inviato ai cluster blue e green perché la risorsa MulticlusterService è configurata per inviare il traffico a entrambi i cluster. In un secondo momento, configurerai la risorsa MulticlusterService
per inviare il traffico a un singolo cluster.
Configura il manifest
loadgeneratorper inviare il traffico client a Cloud Load Balancing:TEMPLATE=loadgen-manifests/loadgenerator.yaml.templ && envsubst < ${TEMPLATE} > ${TEMPLATE%.*}Esegui il deployment di
loadgeneratornel clusteringress-config:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/loadgen-manifestsVerifica che tutti i pod
loadgeneratornel clusteringress-configabbiano lo statoRunning:kubectl --context ${INGRESS_CONFIG_CLUSTER} get podsL'output è simile al seguente:
NAME READY STATUS RESTARTS AGE loadgenerator-5498cbcb86-hqscp 1/1 Running 0 53s loadgenerator-5498cbcb86-m2z2z 1/1 Running 0 53s loadgenerator-5498cbcb86-p56qb 1/1 Running 0 53sSe uno dei pod non ha lo stato
Running, attendi qualche minuto e poi esegui di nuovo il comando.
Monitora il traffico
In questa sezione, monitorerai il traffico verso l'app whereami utilizzando la consoleGoogle Cloud .
Nella sezione precedente hai configurato un deployment loadgenerator che simula
il traffico client accedendo all'app whereami tramite
il VIP di Cloud Load Balancing. Puoi monitorare queste metriche tramite la
consoleGoogle Cloud . Configura prima il monitoraggio in modo da poter monitorare
i cluster durante lo svuotamento per gli upgrade (descritto nella sezione successiva).
Crea un dashboard per mostrare il traffico che raggiunge Ingress multi-cluster:
export DASH_ID=$(gcloud monitoring dashboards create \ --config-from-file=dashboards/cloud-ops-dashboard.json \ --format=json | jq -r ".name" | awk -F '/' '{print $4}')L'output è simile al seguente:
Created [721b6c83-8f9b-409b-a009-9fdf3afb82f8]Le metriche di Cloud Load Balancing sono disponibili nella consoleGoogle Cloud . Genera l'URL:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"L'output è simile al seguente:
https://console.cloud.google.com/monitoring/dashboards/builder/721b6c83-8f9b-409b-a009-9fdf3afb82f8/?project=gke-multicluster-upgrades&timeDomain=1h"In un browser, vai all'URL generato dal comando precedente.
Il traffico verso l'applicazione di esempio va dal generatore di carico a entrambi i cluster
blueegreen(indicati dalle due zone in cui si trovano i cluster). Il grafico delle metriche della cronologia mostra il traffico diretto a entrambi i backend.I valorik8s1-al passaggio del mouse indicano che i gruppi di endpoint di rete (NEG) per i due frontendMulticlusterServicesvengono eseguiti nei clusterblueegreen.
Esegui lo svuotamento e l'upgrade del cluster blue
In questa sezione, svuota il cluster blue. Il drenaggio di un cluster significa che lo
rimuovi dal pool di bilanciamento del carico. Dopo aver svuotato il cluster blue, tutto il traffico client destinato all'applicazione viene indirizzato al cluster green.
Puoi monitorare questa procedura come descritto nella sezione precedente. Dopo lo svuotamento del cluster, puoi eseguire l'upgrade. Dopo l'upgrade, puoi
inserirlo di nuovo nel pool di bilanciamento del carico. Ripeti questi passaggi per eseguire l'upgrade
dell'altro cluster (non mostrato in questo tutorial).
Per svuotare il cluster blue, aggiorna la risorsa MulticlusterService nel cluster ingress-cluster e rimuovi il cluster blue dalla specifica clusters.
Svuota il cluster blu
In Cloud Shell, aggiorna la risorsa
MulticlusterServicenel clusteringress-config:kubectl --context ${INGRESS_CONFIG_CLUSTER} \ apply -f ${WORKDIR}/multicluster-manifests/mcs-green.yamlVerifica di avere solo il cluster
greennella specificaclusters:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice \ -o json | jq '.items[].spec.clusters'L'output è il seguente:
[ { "link": "us-west1-c/green" } ]Solo il cluster
greenè elencato nella specificaclusters, quindi solo il clustergreensi trova nel pool di bilanciamento del carico.Puoi visualizzare le metriche di Cloud Load Balancing nella consoleGoogle Cloud . Genera l'URL:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"In un browser, vai all'URL generato dal comando precedente.
Il grafico mostra che solo il cluster
greenriceve traffico.
Esegui l'upgrade del cluster blue
Ora che il cluster blue non riceve più traffico client, puoi
eseguire l'upgrade del cluster (control plane e nodi).
In Cloud Shell, recupera la versione attuale dei cluster:
gcloud container clusters listL'output è simile al seguente:
NAME: ingress-config LOCATION: us-west1-a MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.233.186.135 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 4 STATUS: RUNNING NAME: blue LOCATION: us-west1-b MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 34.82.35.222 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING NAME: green LOCATION: us-west1-c MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.185.204.26 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNINGLe versioni del cluster potrebbero essere diverse a seconda di quando completi questo tutorial.
Visualizza l'elenco delle versioni di
MasterVersionsdisponibili nella zona:gcloud container get-server-config --location us-west1-b --format=json | jq \ '.validMasterVersions[0:20]'L'output è simile al seguente:
[ "1.24.1-gke.1400", "1.23.7-gke.1400", "1.23.6-gke.2200", "1.23.6-gke.1700", "1.23.6-gke.1501", "1.23.6-gke.1500", "1.23.5-gke.2400", "1.23.5-gke.1503", "1.23.5-gke.1501", "1.22.10-gke.600", "1.22.9-gke.2000", "1.22.9-gke.1500", "1.22.9-gke.1300", "1.22.8-gke.2200", "1.22.8-gke.202", "1.22.8-gke.201", "1.22.8-gke.200", "1.21.13-gke.900", "1.21.12-gke.2200", "1.21.12-gke.1700" ]Visualizza un elenco delle versioni di
NodeVersionsdisponibili nella zona:gcloud container get-server-config --location us-west1-b --format=json | jq \ '.validNodeVersions[0:20]'L'output è simile al seguente:
[ "1.24.1-gke.1400", "1.23.7-gke.1400", "1.23.6-gke.2200", "1.23.6-gke.1700", "1.23.6-gke.1501", "1.23.6-gke.1500", "1.23.5-gke.2400", "1.23.5-gke.1503", "1.23.5-gke.1501", "1.22.10-gke.600", "1.22.9-gke.2000", "1.22.9-gke.1500", "1.22.9-gke.1300", "1.22.8-gke.2200", "1.22.8-gke.202", "1.22.8-gke.201", "1.22.8-gke.200", "1.22.7-gke.1500", "1.22.7-gke.1300", "1.22.7-gke.900" ]Imposta una variabile di ambiente per una versione di
MasterVersioneNodeVersionpresente negli elenchiMasterVersionseNodeVersionse superiore alla versione attuale per il clusterblue, ad esempio:export UPGRADE_VERSION="1.22.10-gke.600"Questo tutorial utilizza la versione
1.22.10-gke.600. Le versioni del cluster potrebbero essere diverse a seconda delle versioni disponibili quando completi questo tutorial. Per ulteriori informazioni sull'upgrade, consulta la pagina relativa all'upgrade di cluster e node pool.Esegui l'upgrade del nodo
control planeper il clusterblue:gcloud container clusters upgrade blue \ --location us-west1-b --master --cluster-version ${UPGRADE_VERSION}Per confermare l'upgrade, premi
Y.Il completamento di questa procedura richiede alcuni minuti. Attendi il completamento dell'upgrade prima di procedere.
Al termine dell'aggiornamento, l'output è il seguente:
Updated [https://container.googleapis.com/v1/projects/gke-multicluster-upgrades/zones/us-west1-b/clusters/blue].Esegui l'upgrade dei nodi nel cluster
blue:gcloud container clusters upgrade blue \ --location=us-west1-b --node-pool=default-pool \ --cluster-version ${UPGRADE_VERSION}Per confermare l'aggiornamento, premi
Y.Il completamento di questa procedura richiede alcuni minuti. Attendi il completamento dell'upgrade del nodo prima di procedere.
Al termine dell'upgrade, l'output è il seguente:
Upgrading blue... Done with 3 out of 3 nodes (100.0%): 3 succeeded...done. Updated [https://container.googleapis.com/v1/projects/gke-multicluster-upgrades/zones/us-west1-b/clusters/blue].Verifica che il cluster
bluesia stato eseguito l'upgrade:gcloud container clusters listL'output è simile al seguente:
NAME: ingress-config LOCATION: us-west1-a MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.233.186.135 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 4 STATUS: RUNNING NAME: blue LOCATION: us-west1-b MASTER_VERSION: 1.22.10-gke.600 MASTER_IP: 34.82.35.222 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.10-gke.600 NUM_NODES: 3 STATUS: RUNNING NAME: green LOCATION: us-west1-c MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.185.204.26 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING
Aggiungi di nuovo il cluster blue al pool di bilanciamento del carico
In questa sezione, aggiungi di nuovo il cluster blue al pool di bilanciamento del carico.
In Cloud Shell, verifica che il deployment dell'applicazione sia in esecuzione sul cluster
blueprima di aggiungerlo di nuovo al pool di bilanciamento del carico:kubectl --context ${BLUE_CLUSTER} get podsL'output è simile al seguente:
NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-xdnb6 1/1 Running 0 17mAggiorna la risorsa
MutliclusterServiceper aggiungere di nuovo il clusterblueal pool di bilanciamento del carico:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply \ -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yamlVerifica di avere i cluster
blueegreennella specifica dei cluster:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice \ -o json | jq '.items[].spec.clusters'L'output è il seguente:
[ { "link": "us-west1-b/blue" }, { "link": "us-west1-c/green" } ]I cluster
blueegreensono ora inclusi nella specificaclusters.Le metriche di Cloud Load Balancing sono disponibili nella consoleGoogle Cloud . Genera l'URL:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"In un browser, vai all'URL generato dal comando precedente.
Il grafico mostra che entrambi i cluster blu e verdi ricevono traffico dal generatore di carico utilizzando il bilanciatore del carico.
Complimenti. Hai eseguito correttamente l'upgrade di un cluster GKE in un'architettura multi-cluster utilizzando Ingress multi-cluster.
Per eseguire l'upgrade del cluster
green, ripeti la procedura per svuotare ed eseguire l'upgrade del cluster blu, sostituendobluecongreen.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Il modo più semplice per eliminare la fatturazione è eliminare il progetto Google Cloud che hai creato per il tutorial. In alternativa, puoi eliminare le singole risorse.
Elimina i cluster
In Cloud Shell, annulla la registrazione ed elimina i cluster
blueegreen:gcloud container fleet memberships unregister blue --gke-cluster=us-west1-b/blue gcloud container clusters delete blue --location us-west1-b --quiet gcloud container fleet memberships unregister green --gke-cluster=us-west1-c/green gcloud container clusters delete green --location us-west1-c --quietElimina la risorsa
MuticlusterIngressdal clusteringress-config:kubectl --context ${INGRESS_CONFIG_CLUSTER} delete -f ${WORKDIR}/multicluster-manifests/mci.yamlQuesto comando elimina le risorse Cloud Load Balancing dal progetto.
Annulla la registrazione ed elimina il cluster
ingress-config:gcloud container fleet memberships unregister ingress-config --gke-cluster=us-west1-a/ingress-config gcloud container clusters delete ingress-config --location us-west1-a --quietVerifica che tutti i cluster siano stati eliminati:
gcloud container clusters listL'output è il seguente:
*<null>*Reimposta il file
kubeconfig:unset KUBECONFIGRimuovi la cartella
WORKDIR:cd ${HOME} rm -rf ${WORKDIR}
Elimina il progetto
- Nella console Google Cloud , vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Scopri di più su Ingress multi-cluster.
- Scopri come eseguire il deployment di Ingress multi-cluster nei cluster.
- Esplora architetture, diagrammi e best practice di riferimento su Google Cloud. Consulta il nostro Cloud Architecture Center.