Questo tutorial mostra come eseguire l'upgrade di un cluster Google Kubernetes Engine (GKE) multi-cluster utilizzando l'ambiente di rete Ingress multi-cluster . Questo tutorial è una continuazione del corso GKE multi-cluster upgrade utilizzando Ingress multi-cluster documento che spiega il processo, l'architettura e i termini in modo più dettagliato. I nostri suggerimenti di leggere il documento concettuale prima di questo tutorial.
Per un confronto dettagliato tra Ingress multi-cluster (MCI), gateway multi-cluster (MCG) e bilanciatore del carico con gruppi di endpoint di rete autonomi (LB e autonomi) NEG), consulta Scegliere l'API di bilanciamento del carico multi-cluster per GKE.
Questo documento è rivolto agli amministratori di Google Cloud responsabili per la manutenzione dei parchi risorse per i cluster GKE.
Ti consigliamo di eseguire l'upgrade automatico dei cluster GKE. L'upgrade automatico è un modo completamente gestito per recuperare i cluster (piano di controllo nodi) vengono aggiornati automaticamente in base a una pianificazione di release determinata in Google Cloud. Ciò non richiede alcun intervento da parte dell'operatore. Tuttavia, se Vuoi un maggiore controllo su come e quando viene eseguito l'upgrade dei cluster, questo tutorial illustra un metodo per eseguire l'upgrade di più cluster in cui le app vengono eseguite cluster. Quindi utilizza Ingress multi-cluster per svuotare un cluster alla volta prima in fase di upgrade.
Architettura
Questo tutorial utilizza la seguente architettura. In totale ci sono tre
di cluster: due cluster (blue
e green
) agiscono come cluster identici
nella stessa app di cui è stato eseguito il deployment e un cluster (ingress-config
) funge da piano di controllo
che configura Ingress multi-cluster. In questo tutorial, eseguirai il deployment
app di esempio in due cluster di app (blue
e green
cluster).
Obiettivi
- Creare tre cluster GKE e registrarli come parco risorse.
- Configura un cluster GKE (
ingress-config
) come 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 che in esecuzione su entrambi i cluster dell'app.
- Imposta un generatore di carico nell'app e configura il monitoraggio.
- Rimuovi (scarica) un cluster di app da Ingress multi-cluster ed esegui l'upgrade per il cluster svuotato.
- Distribuisci 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 basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
- Questo tutorial richiede
Configura Ingress multi-cluster
in modo da configurare quanto segue:
- .
- Due o più cluster con le stesse app, ad esempio spazi dei nomi, deployment e servizi in esecuzione su tutti i cluster.
- L'upgrade automatico è disattivato per tutti i cluster.
- I cluster vengono Cluster nativi VPC che utilizzano intervalli di indirizzi IP alias
- Avere il bilanciamento del carico HTTP abilitato (abilitato per impostazione predefinita).
gcloud --version
deve essere 369 o superiore. I passaggi di registrazione del cluster GKE dipendono da questo o una versione successiva.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati 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-samples
Crea una directory
WORKDIR
:cd kubernetes-engine-samples/networking/gke-multicluster-upgrade-mci/ export WORKDIR=`pwd`
Crea e registra i cluster GKE in Hub
In questa sezione creerai tre cluster GKE e registrarli in GKE Enterprise Hub.
crea cluster GKE
In Cloud Shell, crea tre cluster GKE:
gcloud container clusters create ingress-config --zone 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 --zone 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 --zone us-west1-c --num-nodes=3 \ --release-channel=None --no-enable-autoupgrade --enable-ip-alias \ --workload-pool=${PROJECT}.svc.id.goog --quiet
Ai fini di questo tutorial, creerai i cluster in una singola in tre diverse zone:
us-west1-a
,us-west1-b
eus-west1-c
. Per ulteriori informazioni su regioni e zone, consulta Area geografica e regioni.Attendi qualche minuto fino alla creazione di tutti i cluster. Assicurati che in cui sono in esecuzione i cluster:
gcloud container clusters list
L'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: RUNNING
Crea un
kubeconfig
e connetterti a tutti i cluster per generare voci inkubeconfig
file:touch gke-upgrade-kubeconfig export KUBECONFIG=gke-upgrade-kubeconfig gcloud container clusters get-credentials ingress-config \ --zone us-west1-a --project ${PROJECT} gcloud container clusters get-credentials blue --zone us-west1-b \ --project ${PROJECT} gcloud container clusters get-credentials green --zone us-west1-c \ --project ${PROJECT}
Puoi utilizzare
kubeconfig
per creare l'autenticazione nei cluster creando un utente e un contesto per in ogni cluster. Dopo aver creato il filekubeconfig
, puoi passare 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_green
Ottieni il contesto dei tre cluster per utilizzarli in un secondo momento:
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 tuoi cluster in un parco risorse ti consente di utilizzare i tuoi cluster Kubernetes tra ambienti ibridi. I cluster registrati nei parchi risorse possono utilizzare la modalità Funzionalità GKE come Ingress multi-cluster. Per registrare un un cluster GKE a un parco risorse, puoi utilizzare direttamente l'account di servizio o utilizza Identità carico di lavoro che consente di creare un account di servizio Kubernetes il cluster GKE in modo che agisca come 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-identity
Verifica che i cluster siano registrati:
gcloud container fleet memberships list
L'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-944754a0d725
Configura il cluster
ingress-config
come cluster di configurazione per Ingress multi-cluster abilitando la funzionalitàmulticlusteringress
tramite il Hub:gcloud container fleet ingress enable --config-membership=ingress-config
Il comando precedente aggiunge
MulticlusterIngress
eMulticlusterService
Definizioni di risorse personalizzate (CRD) nel clusteringress-config
. Questo comando richiede alcuni minuti completato. Attendi prima di procedere con il passaggio successivo.Verifica che il cluster
ingress-cluster
sia stato configurato correttamente Ingress multi-cluster:watch gcloud container fleet ingress describe
Attendi 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
whereami
di esempio inblue
egreen
cluster:kubectl --context ${BLUE_CLUSTER} apply -f ${WORKDIR}/application-manifests kubectl --context ${GREEN_CLUSTER} apply -f ${WORKDIR}/application-manifests
Attendi qualche minuto e assicurati che tutti i pod in
blue
egreen
cluster hanno uno statoRunning
:kubectl --context ${BLUE_CLUSTER} get pods kubectl --context ${GREEN_CLUSTER} get pods
L'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 una risorsa Ingress multi-cluster che invia traffico all'oggetto
dell'applicazione in esecuzione su cluster blue
e green
. Utilizzi
Cloud Load Balancing
per creare un bilanciatore del carico che utilizzi l'app whereami
sia in blue
che in
green
cluster come backend. Per creare il bilanciatore del carico, sono necessarie due
risorse: un MultiClusterIngress
e uno o più MultiClusterServices
.
MultiClusterIngress
e MultiClusterService
oggetti sono 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
MulticlusterIngress
Clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mci.yaml
L'output è il seguente:
multiclusteringress.networking.gke.io/whereami-mci created
Esegui il deployment della risorsa
MulticlusterService
nel clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yaml
L'output è il seguente:
multiclusterservice.networking.gke.io/whereami-mcs created
Per confrontare le due risorse:
Controlla la risorsa
MulticlusterIngress
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusteringress -o yaml
L'output contiene quanto segue:
spec: template: spec: backend: serviceName: whereami-mcs servicePort: 8080
La risorsa
MulticlusterIngress
è simile a Kubernetes Ingress risorsa, tranne che la specificaserviceName
punta a unaMulticlusterService
risorsa.Controlla la risorsa
MulticlusterService
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice -o yaml
L'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: whereami
La risorsa
MulticlusterService
è simile a un servizio Kubernetes risorsa, ma che ha una specificaclusters
. Il valoreclusters
è l'elenco dei cluster registrati in cuiMulticlusterService
viene creata la risorsa.Verifica che la risorsa
MulticlusterIngress
abbia creato un bilanciatore del carico con un servizio di backend che punta allaMulticlusterService
risorsa: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 all'output seguenti:
34.107.246.9
Per uscire dal comando
watch
, premiControl+C
.
In Cloud Shell, ottieni 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.9
Usa
curl
per 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 il comando
curl
ripetutamente. Nota che le richieste vengono con bilanciamento del carico tra l'applicazionewhereami
di cui è stato eseguito il deployment cluster,blue
egreen
.
Configurare il generatore di carico
In questa sezione, configurerai un servizio loadgenerator
che genera un client
il traffico al VIP di Cloud Load Balancing. In primo luogo, il traffico viene inviato
blue
e green
cluster perché la risorsa MulticlusterService
è configurata
per inviare il traffico a entrambi i cluster. Successivamente, configurerai MulticlusterService
per inviare il traffico a un singolo cluster.
Configura il manifest
loadgenerator
per inviare il traffico client al Cloud Load Balancing:TEMPLATE=loadgen-manifests/loadgenerator.yaml.templ && envsubst < ${TEMPLATE} > ${TEMPLATE%.*}
Esegui il deployment di
loadgenerator
nel clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/loadgen-manifests
Verifica che i pod
loadgenerator
nel clusteringress-config
siano tutti hanno uno stato diRunning
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get pods
L'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 53s
Se uno dei pod non ha lo stato
Running
, attendi qualche minuto quindi esegui di nuovo il comando.
Monitora il traffico
In questa sezione, monitorerai il traffico verso l'app whereami
utilizzando
nella console Google Cloud.
Nella sezione precedente hai configurato un deployment loadgenerator
che simula
il traffico del client accedendo all'app whereami
tramite
VIP di Cloud Load Balancing. Puoi monitorare queste metriche tramite
nella console Google Cloud. Devi prima configurare il monitoraggio in modo da poterlo
per gli upgrade (come descritto nella sezione successiva).
Crea una 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 in nella console Google 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 passa dal generatore di carico sia
blue
chegreen
cluster (indicati dalle due zone in cui i cluster ). Il grafico delle metriche a cronologia mostra il traffico indirizzato a entrambi i backend. I valori del mouseover dik8s1-
indicano che il gruppo di endpoint di rete (NEG) per i due frontendMulticlusterServices
sono in esecuzione inblue
egreen
cluster.
Svuota ed esegui l'upgrade del cluster blue
In questa sezione, svuota il cluster blue
. Lo svuotamento di un cluster comporta
per rimuoverlo dal pool di bilanciamento del carico. Dopo aver svuotato il cluster blue
,
il traffico client destinato all'applicazione va al cluster green
.
Puoi monitorare questa procedura come descritto nella sezione precedente. Dopo il
un cluster è svuotato, puoi eseguirne l'upgrade. Dopo l'upgrade,
può inserirlo di nuovo nel pool di bilanciamento del carico. Ripeti questi passaggi per eseguire l'upgrade
sull'altro cluster (non mostrato in questo tutorial).
Per svuotare il cluster blue
, aggiorna la risorsa MulticlusterService
in
il cluster ingress-cluster
e rimuovi il cluster blue
da clusters
la specifica del container.
Svuota l'ammasso blu
In Cloud Shell, aggiorna la risorsa
MulticlusterService
in il clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} \ apply -f ${WORKDIR}/multicluster-manifests/mcs-green.yaml
Verifica di avere solo il cluster
green
inclusters
specifiche: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 clustergreen
si trova nel pool di bilanciamento del carico.Puoi visualizzare le metriche di Cloud Load Balancing in nella console Google 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
green
riceve traffico.
Esegui l'upgrade del cluster blue
Ora che il cluster blue
non riceve più traffico client, puoi
eseguire l'upgrade del cluster (piano di controllo e nodi).
In Cloud Shell, recupera la versione attuale dei cluster:
gcloud container clusters list
L'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: RUNNING
Le versioni del cluster potrebbero essere diverse a seconda di quando viene completato questo tutorial.
Recupera l'elenco delle versioni di
MasterVersions
disponibili nella zona:gcloud container get-server-config --zone 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
NodeVersions
disponibili nella zona:gcloud container get-server-config --zone 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 un Versione
MasterVersion
eNodeVersion
presente inMasterVersions
eNodeVersions
, ed è superiore a la versione corrente 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 tuo cluster potrebbe essere diversa a seconda delle versioni disponibili quando completa questo tutorial. Per ulteriori informazioni sull'upgrade, consulta l'upgrade di cluster e pool di nodi.Esegui l'upgrade del nodo
control plane
per il clusterblue
:gcloud container clusters upgrade blue \ --zone us-west1-b --master --cluster-version ${UPGRADE_VERSION}
Per confermare l'upgrade, premi
Y
.Il completamento di questa procedura richiede alcuni minuti. Attendi fino al completamento dell'upgrade completa 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 \ --zone=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 fino all'upgrade del nodo sia completata 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 sia stato eseguito l'upgrade del cluster
blue
:gcloud container clusters list
L'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, aggiungerai 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
blue
prima di aggiungerlo di nuovo al pool di bilanciamento del carico:kubectl --context ${BLUE_CLUSTER} get pods
L'output è simile al seguente:
NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-xdnb6 1/1 Running 0 17m
Aggiorna la risorsa
MutliclusterService
per aggiungere il clusterblue
torna al pool di bilanciamento del carico:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply \ -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yaml
Verifica di avere entrambi i cluster
blue
egreen
nei cluster specifiche: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
blue
egreen
ora si trovano nella specificaclusters
.Le metriche di Cloud Load Balancing sono disponibili in nella console Google 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 verde stanno ricevendo traffico dal generatore di carico usando il bilanciatore del carico.
Complimenti. Hai eseguito l'upgrade di un cluster GKE in un'architettura multi-cluster utilizzando Ingress multi-cluster.
Per eseguire l'upgrade del cluster
green
, ripeti il processo per scarica ed esegui l'upgrade del cluster blu, sostituendoblue
congreen
in tutto.
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 è quello di eliminare il progetto Google Cloud creato per il tutorial. In alternativa, puoi eliminare il singolo Google Cloud.
Elimina i cluster
In Cloud Shell, annulla la registrazione ed elimina
blue
egreen
cluster:gcloud container fleet memberships unregister blue --gke-cluster=us-west1-b/blue gcloud container clusters delete blue --zone us-west1-b --quiet gcloud container fleet memberships unregister green --gke-cluster=us-west1-c/green gcloud container clusters delete green --zone us-west1-c --quiet
Elimina la risorsa
MuticlusterIngress
dal clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} delete -f ${WORKDIR}/multicluster-manifests/mci.yaml
Questo comando elimina le risorse di 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 --zone us-west1-a --quiet
Verifica che tutti i cluster vengano eliminati:
gcloud container clusters list
L'output è il seguente:
*<null>*
Reimposta il file
kubeconfig
:unset KUBECONFIG
Rimuovi 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 il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Scopri di più su Ingress multi-cluster.
- Scopri come distribuire Ingress multi-cluster in vari cluster.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.