Tutorial ini menunjukkan cara mengupgrade lingkungan Google Kubernetes Engine (GKE) multi-cluster menggunakan Multi Cluster Ingress . Tutorial ini merupakan kelanjutan dari upgrade GKE multi-cluster menggunakan dokumen Multi Cluster Ingress yang menjelaskan proses, arsitektur, dan persyaratan secara lebih mendetail. Sebaiknya baca dokumen konsep sebelum tutorial ini.
Untuk perbandingan mendetail antara Multi Cluster Ingress (MCI), Multi-cluster Gateway (MCG), dan load balancer dengan Grup Endpoint Jaringan Mandiri (LB dan NEG Mandiri), lihat Memilih API load balancing multi-cluster untuk GKE.
Dokumen ini ditujukan bagi administrator Google Cloud yang bertanggung jawab mengelola fleet untuk cluster GKE.
Sebaiknya upgrade cluster GKE Anda secara otomatis. Upgrade otomatis adalah cara yang terkelola sepenuhnya untuk mengupdate cluster Anda (bidang kontrol dan node) secara otomatis sesuai jadwal rilis yang ditentukan oleh Google Cloud. Hal ini tidak memerlukan intervensi dari operator. Namun, jika Anda menginginkan lebih banyak kontrol atas cara dan waktu cluster diupgrade, tutorial ini akan membahas metode mengupgrade beberapa cluster tempat aplikasi Anda berjalan di semua cluster. Kemudian, layanan ini menggunakan Multi Cluster Ingress untuk menghabiskan satu cluster dalam satu waktu sebelum mengupgrade.
Arsitektur
Tutorial ini menggunakan arsitektur berikut. Ada total tiga cluster:
dua cluster (blue
dan green
) bertindak sebagai cluster identik dengan
aplikasi yang sama yang di-deploy dan satu cluster (ingress-config
) bertindak sebagai bidang kontrol
cluster yang mengonfigurasi Multi Cluster Ingress. Dalam tutorial ini, Anda akan men-deploy
aplikasi contoh ke dua cluster aplikasi (cluster blue
dan green
).
Tujuan
- Buat tiga cluster GKE dan daftarkan ketiganya sebagai fleet.
- Konfigurasikan satu cluster GKE (
ingress-config
) sebagai cluster konfigurasi pusat. - Deploy aplikasi contoh ke cluster GKE lainnya.
- Konfigurasikan Multi Cluster Ingress untuk mengirim traffic klien ke aplikasi yang berjalan di kedua cluster aplikasi.
- Siapkan generator beban ke aplikasi dan konfigurasi pemantauan.
- Hapus (kosongkan) satu cluster aplikasi dari multi-cluster Ingress dan upgrade cluster yang dikosongkan.
- Arahkan traffic kembali ke cluster yang diupgrade menggunakan Multi Cluster Ingress.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Tutorial ini mengharuskan Anda untuk
Menyiapkan Multi Cluster Ingress
sehingga hal-hal berikut dapat disiapkan:
- Dua cluster atau lebih dengan aplikasi yang sama, seperti namespace, Deployment, dan Layanan, yang berjalan di semua cluster.
- Upgrade otomatis dinonaktifkan untuk semua cluster.
- Cluster adalah cluster VPC native yang menggunakan rentang alamat IP alias
- Mengaktifkan load balancing HTTP (diaktifkan secara default).
gcloud --version
harus setidaknya 369 atau lebih Langkah-langkah pendaftaran cluster GKE bergantung pada versi ini atau yang lebih tinggi.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, activate Cloud Shell.
Setel project default Anda:
export PROJECT=$(gcloud info --format='value(config.project)') gcloud config set project ${PROJECT}
Aktifkan GKE, Hub, dan API
multiclusteringress
:gcloud services enable container.googleapis.com \ gkehub.googleapis.com \ multiclusteringress.googleapis.com \ multiclusterservicediscovery.googleapis.com
Menyiapkan lingkungan
Di Cloud Shell, clone repositori guna mendapatkan file untuk tutorial ini:
cd ${HOME} git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
Buat direktori
WORKDIR
:cd kubernetes-engine-samples/networking/gke-multicluster-upgrade-mci/ export WORKDIR=`pwd`
Membuat dan mendaftarkan cluster GKE ke Hub
Di bagian ini, Anda akan membuat tiga cluster GKE dan mendaftarkannya ke GKE Enterprise Hub.
Membuat cluster GKE
Di Cloud Shell, buat tiga 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
Untuk tujuan tutorial ini, Anda akan membuat cluster dalam satu region, di tiga zona berbeda:
us-west1-a
,us-west1-b
, danus-west1-c
. Untuk mengetahui informasi selengkapnya tentang region dan zona, lihat Geografi dan region.Tunggu beberapa menit hingga semua cluster berhasil dibuat. Pastikan cluster telah berjalan:
gcloud container clusters list
Outputnya mirip dengan hal berikut ini:
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
Buat file
kubeconfig
dan hubungkan ke semua cluster untuk menghasilkan entri di filekubeconfig
: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}
Anda menggunakan file
kubeconfig
untuk membuat autentikasi ke cluster dengan membuat pengguna dan konteks untuk setiap cluster. Setelah membuat filekubeconfig
, Anda dapat dengan cepat mengalihkan konteks antar-cluster.Verifikasi bahwa Anda memiliki tiga cluster di file
kubeconfig
:kubectl config view -ojson | jq -r '.clusters[].name'
Outputnya adalah sebagai berikut:
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
Dapatkan konteks dari ketiga klaster tersebut untuk digunakan nanti:
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}"
Outputnya adalah sebagai berikut:
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
Mendaftarkan cluster GKE ke fleet
Dengan mendaftarkan cluster ke fleet, Anda dapat mengoperasikan cluster Kubernetes di seluruh lingkungan hybrid. Cluster yang terdaftar ke fleet dapat menggunakan fitur-fitur GKE tingkat tinggi seperti Multi Cluster Ingress. Untuk mendaftarkan cluster GKE ke fleet, Anda dapat menggunakan akun layanan Google Cloud secara langsung, atau gunakan pendekatan Workload Identity Federation for GKE yang direkomendasikan, yang memungkinkan akun layanan Kubernetes di cluster GKE Anda untuk bertindak sebagai akun layanan Identity and Access Management.
Daftarkan ketiga cluster sebagai fleet:
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
Verifikasi bahwa cluster-cluster sudah terdaftar:
gcloud container fleet memberships list
Outputnya mirip dengan hal berikut ini:
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
Konfigurasikan cluster
ingress-config
sebagai cluster konfigurasi untuk Multi Cluster Ingress dengan mengaktifkan fiturmulticlusteringress
melalui Hub:gcloud container fleet ingress enable --config-membership=ingress-config
Perintah sebelumnya menambahkan CRD (Custom Resource Definitions)
MulticlusterIngress
danMulticlusterService
ke clusteringress-config
. Proses perintah ini memerlukan waktu beberapa menit. Tunggu sebelum melanjutkan ke langkah berikutnya.Verifikasi bahwa cluster
ingress-cluster
telah berhasil dikonfigurasi untuk Multi Cluster Ingress:watch gcloud container fleet ingress describe
Tunggu hingga output mirip dengan berikut ini:
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'
Untuk keluar dari perintah
watch
, tekan Control+C.
Men-deploy aplikasi contoh ke cluster biru dan hijau
Di Cloud Shell, deploy aplikasi contoh
whereami
ke clusterblue
dangreen
:kubectl --context ${BLUE_CLUSTER} apply -f ${WORKDIR}/application-manifests kubectl --context ${GREEN_CLUSTER} apply -f ${WORKDIR}/application-manifests
Tunggu beberapa menit dan pastikan semua Pod di cluster
blue
dangreen
memiliki statusRunning
:kubectl --context ${BLUE_CLUSTER} get pods kubectl --context ${GREEN_CLUSTER} get pods
Outputnya mirip dengan hal berikut ini:
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.
Mengonfigurasi multi-cluster ingress
Di bagian ini, Anda akan membuat multi-cluster Ingress yang mengirimkan traffic ke
aplikasi yang berjalan di cluster blue
dan green
. Anda menggunakan
Cloud Load Balancing
untuk membuat load balancer yang menggunakan aplikasi whereami
di cluster blue
dan
green
sebagai backend. Untuk membuat load balancer, Anda memerlukan dua resource: MultiClusterIngress
dan satu atau beberapa MultiClusterServices
.
Objek MultiClusterIngress
dan MultiClusterService
adalah analog multi-cluster untuk resource Layanan dan Ingress Kubernetes yang ada yang digunakan dalam konteks cluster tunggal.
Di Cloud Shell, deploy resource
MulticlusterIngress
ke clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mci.yaml
Outputnya adalah sebagai berikut:
multiclusteringress.networking.gke.io/whereami-mci created
Deploy resource
MulticlusterService
ke clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yaml
Outputnya adalah sebagai berikut:
multiclusterservice.networking.gke.io/whereami-mcs created
Untuk membandingkan kedua resource tersebut, lakukan langkah berikut:
Periksa resource
MulticlusterIngress
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusteringress -o yaml
Outputnya berisi hal berikut:
spec: template: spec: backend: serviceName: whereami-mcs servicePort: 8080
Resource
MulticlusterIngress
mirip dengan resource Ingress Kubernetes kecuali spesifikasiserviceName
mengarah ke resourceMulticlusterService
.Periksa resource
MulticlusterService
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice -o yaml
Outputnya berisi hal berikut:
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
Resource
MulticlusterService
mirip dengan resource Layanan Kubernetes, tetapi memiliki spesifikasiclusters
. Nilaiclusters
adalah daftar cluster terdaftar tempat resourceMulticlusterService
dibuat.Verifikasi bahwa resource
MulticlusterIngress
telah membuat load balancer dengan layanan backend yang mengarah ke resourceMulticlusterService
:watch kubectl --context ${INGRESS_CONFIG_CLUSTER} \ get multiclusteringress -o jsonpath="{.items[].status.VIP}"
Diperlukan waktu hingga 10 menit. Tunggu hingga outputnya mirip dengan berikut ini:
34.107.246.9
Untuk keluar dari perintah
watch
, tekanControl+C
.
Di Cloud Shell, dapatkan Cloud Load Balancing VIP:
export GCLB_VIP=$(kubectl --context ${INGRESS_CONFIG_CLUSTER} \ get multiclusteringress -o json | jq -r '.items[].status.VIP') \ && echo ${GCLB_VIP}
Outputnya mirip dengan hal berikut ini:
34.107.246.9
Gunakan
curl
untuk mengakses load balancer dan aplikasi yang di-deploy:curl ${GCLB_VIP}
Outputnya mirip dengan hal berikut ini:
{ "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" }
Jalankan perintah
curl
berulang kali. Perhatikan bahwa permintaan sedang di-load balanced antara aplikasiwhereami
yang di-deploy ke dua cluster,blue
dangreen
.
Menyiapkan generator beban
Di bagian ini, Anda akan menyiapkan Layanan loadgenerator
yang menghasilkan traffic klien ke Cloud Load Balancing VIP. Pertama, traffic dikirim ke cluster blue
dan green
karena resource MulticlusterService
sudah disiapkan untuk mengirim traffic ke kedua cluster. Kemudian, Anda perlu mengonfigurasi resource MulticlusterService
untuk mengirim traffic ke satu cluster.
Konfigurasikan manifes
loadgenerator
untuk mengirim traffic klien ke Cloud Load Balancing:TEMPLATE=loadgen-manifests/loadgenerator.yaml.templ && envsubst < ${TEMPLATE} > ${TEMPLATE%.*}
Deploy
loadgenerator
di clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/loadgen-manifests
Verifikasi bahwa semua Pod
loadgenerator
dalam clusteringress-config
memiliki statusRunning
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get pods
Outputnya mirip dengan hal berikut ini:
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
Jika salah satu Pod tidak memiliki status
Running
, tunggu beberapa menit, lalu jalankan perintah tersebut sekali lagi.
Memantau kondisi lalu lintas
Di bagian ini, Anda akan memantau traffic ke aplikasi whereami
menggunakan Konsol Google Cloud.
Di bagian sebelumnya, Anda akan menyiapkan deployment loadgenerator
yang menyimulasikan traffic klien dengan mengakses aplikasi whereami
melalui Cloud Load Balancing VIP. Anda dapat memantau metrik ini melalui konsol Google Cloud. Anda harus menyiapkan pemantauan terlebih dahulu sehingga dapat memantau saat
mengosongkan cluster untuk upgrade (dijelaskan di bagian berikutnya).
Buat dasbor untuk menampilkan traffic yang menjangkau Multi Cluster Ingress:
export DASH_ID=$(gcloud monitoring dashboards create \ --config-from-file=dashboards/cloud-ops-dashboard.json \ --format=json | jq -r ".name" | awk -F '/' '{print $4}')
Outputnya mirip dengan hal berikut ini:
Created [721b6c83-8f9b-409b-a009-9fdf3afb82f8]
Metrik dari Cloud Load Balancing tersedia di Konsol Google Cloud. Buat URL:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"
Outputnya mirip dengan hal berikut ini:
https://console.cloud.google.com/monitoring/dashboards/builder/721b6c83-8f9b-409b-a009-9fdf3afb82f8/?project=gke-multicluster-upgrades&timeDomain=1h"
Di browser, buka URL yang dihasilkan oleh perintah sebelumnya.
Traffic ke aplikasi contoh mengarah dari generator beban ke cluster
blue
dangreen
(yang ditunjukkan oleh dua zona tempat cluster berada). Diagram metrik linimasa menunjukkan traffic yang menuju ke kedua backend. Nilai pengarahan mousek8s1-
menunjukkan bahwa grup endpoint jaringan (NEG) untuk duaMulticlusterServices
frontend yang berjalan di clusterblue
dangreen
.
Mengosongkan dan mengupgrade cluster blue
Di bagian ini, Anda akan mengosongkan cluster blue
. Mengosongkan cluster berarti Anda
menghapusnya dari kumpulan load balancing. Setelah Anda mengosongkan cluster blue
, semua traffic klien yang ditujukan untuk aplikasi akan masuk ke cluster green
.
Anda dapat memantau proses ini seperti yang dijelaskan di bagian sebelumnya. Setelah cluster
dikosongkan, Anda dapat mengupgrade cluster yang dikosongkan tersebut. Setelah melakukan upgrade, Anda
dapat memasukkannya kembali ke kumpulan load balancing. Anda akan mengulangi langkah-langkah ini untuk mengupgrade cluster lain (tidak ditampilkan dalam tutorial ini).
Untuk mengosongkan cluster blue
, perbarui resource MulticlusterService
di
cluster ingress-cluster
dan hapus cluster blue
dari spesifikasi
clusters
.
Hapus cluster blue
Di Cloud Shell, update resource
MulticlusterService
di clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} \ apply -f ${WORKDIR}/multicluster-manifests/mcs-green.yaml
Pastikan Anda hanya memiliki cluster
green
di spesifikasiclusters
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice \ -o json | jq '.items[].spec.clusters'
Outputnya adalah sebagai berikut:
[ { "link": "us-west1-c/green" } ]
Hanya cluster
green
yang tercantum dalam spesifikasiclusters
, sehingga hanya clustergreen
yang ada dalam kumpulan load balancing.Anda dapat melihat metrik dari metrik Cloud Load Balancing di konsol Google Cloud. Buat URL:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"
Di browser, buka URL yang dihasilkan dari perintah sebelumnya.
Diagram menunjukkan bahwa hanya cluster
green
yang menerima traffic.
Upgrade cluster blue
Setelah cluster blue
tidak lagi menerima traffic klien, Anda dapat mengupgrade cluster (bidang kontrol dan node).
Di Cloud Shell, dapatkan versi cluster saat ini:
gcloud container clusters list
Outputnya mirip dengan hal berikut ini:
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
Versi cluster Anda mungkin berbeda-beda, bergantung pada kapan Anda menyelesaikan tutorial ini.
Dapatkan daftar versi
MasterVersions
yang tersedia di zona:gcloud container get-server-config --zone us-west1-b --format=json | jq \ '.validMasterVersions[0:20]'
Outputnya mirip dengan hal berikut ini:
[ "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" ]
Dapatkan daftar versi
NodeVersions
yang tersedia di zona:gcloud container get-server-config --zone us-west1-b --format=json | jq \ '.validNodeVersions[0:20]'
Outputnya mirip dengan hal berikut ini:
[ "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" ]
Tetapkan variabel lingkungan untuk versi
MasterVersion
danNodeVersion
yang ada dalam daftarMasterVersions
danNodeVersions
, serta lebih tinggi dari versi saat ini untukblue
, misalnya:export UPGRADE_VERSION="1.22.10-gke.600"
Tutorial ini menggunakan versi
1.22.10-gke.600
. Versi cluster Anda mungkin berbeda, tergantung pada versi yang tersedia saat Anda menyelesaikan tutorial ini. Untuk mengetahui informasi selengkapnya tentang cara melakukan upgrade, lihat mengupgrade cluster dan kumpulan node.Upgrade node
control plane
untuk clusterblue
:gcloud container clusters upgrade blue \ --zone us-west1-b --master --cluster-version ${UPGRADE_VERSION}
Untuk mengonfirmasi upgrade, tekan
Y
.Proses ini membutuhkan waktu beberapa menit. Tunggu hingga upgrade selesai sebelum melanjutkan.
Setelah update selesai, output-nya adalah sebagai berikut:
Updated [https://container.googleapis.com/v1/projects/gke-multicluster-upgrades/zones/us-west1-b/clusters/blue].
Upgrade node di cluster
blue
:gcloud container clusters upgrade blue \ --zone=us-west1-b --node-pool=default-pool \ --cluster-version ${UPGRADE_VERSION}
Untuk mengonfirmasi update, tekan
Y
.Proses ini membutuhkan waktu beberapa menit. Tunggu hingga upgrade node selesai sebelum melanjutkan.
Setelah upgrade selesai, output-nya adalah sebagai berikut:
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].
Pastikan cluster
blue
telah diupgrade:gcloud container clusters list
Outputnya mirip dengan hal berikut ini:
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
Menambahkan kembali cluster blue
ke kumpulan load balancing
Di bagian ini, Anda akan menambahkan kembali cluster blue
ke kumpulan load balancing.
Di Cloud Shell, pastikan bahwa deployment aplikasi berjalan pada cluster
blue
sebelum Anda menambahkannya kembali ke kumpulan load balancing:kubectl --context ${BLUE_CLUSTER} get pods
Outputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-xdnb6 1/1 Running 0 17m
Update resource
MutliclusterService
untuk menambahkan clusterblue
kembali ke kumpulan load balancing:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply \ -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yaml
Verifikasi bahwa Anda memiliki cluster
blue
dangreen
di spesifikasi cluster:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice \ -o json | jq '.items[].spec.clusters'
Outputnya adalah sebagai berikut:
[ { "link": "us-west1-b/blue" }, { "link": "us-west1-c/green" } ]
Cluster
blue
dangreen
kini dalam spesifikasiclusters
.Metrik dari metrik Cloud Load Balancing tersedia di konsol Google Cloud. Buat URL:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"
Di browser, buka URL yang dihasilkan dari perintah sebelumnya.
Diagram menunjukkan bahwa cluster blue dan green menerima traffic dari generator beban menggunakan load balancer.
Selamat. Anda berhasil mengupgrade cluster GKE dalam arsitektur multi-cluster menggunakan Multi Cluster Ingress.
Untuk mengupgrade cluster
green
, ulangi proses untuk menguras dan mengupgrade cluster blue, dengan menggantiblue
dengangreen
seluruhnya.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project Google Cloud yang Anda buat untuk tutorial ini. Atau, Anda dapat menghapus resource satu per satu.
Menghapus cluster
Di Cloud Shell, batalkan pendaftaran dan hapus cluster
blue
dangreen
: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
Hapus resource
MuticlusterIngress
dari clusteringress-config
:kubectl --context ${INGRESS_CONFIG_CLUSTER} delete -f ${WORKDIR}/multicluster-manifests/mci.yaml
Perintah ini akan menghapus resource Cloud Load Balancing dari project.
Batalkan pendaftaran dan hapus 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
Pastikan semua cluster telah dihapus:
gcloud container clusters list
Outputnya adalah sebagai berikut:
*<null>*
Reset file
kubeconfig
:unset KUBECONFIG
Hapus folder
WORKDIR
:cd ${HOME} rm -rf ${WORKDIR}
Menghapus project
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah berikutnya
- Pelajari Multi Cluster Ingress lebih lanjut.
- Pelajari cara men-deploy Multi Cluster Ingress di berbagai cluster.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.