Persyaratan peraturan yang umum adalah bahwa perusahaan dapat menunjukkan dampak bencana mendapatkan kemampuan pemulihan (DR). Untuk aplikasi yang berjalan di {i>cloud<i}, persyaratan itu mencakup keandalan dan ketersediaan layanan saat server yang dihosting di satu zona menjadi tidak tersedia selama jangka waktu tertentu. Dokumen ini ditujukan untuk Admin dan arsitek, Operator, serta Administrator pencadangan dan pemulihan dari bencana (DR) yang ingin mempelajari cara menyimulasikan failover zona saat Cluster regional Standar Google Kubernetes Engine (GKE).
Cluster regional GKE dibuat di region yang dipilih pengguna, dan menjalankan bidang kontrol pada VM yang terletak di beberapa zona dalam region yang dipilih. GKE Cluster Autopilot selalu bersifat regional, dan GKE Cluster standar dapat bersifat regional atau zona. Tutorial ini menggunakan Cluster regional GKE Standard. Node cluster berkomunikasi dengan bidang kontrol melalui load balancer, yang berarti bahwa node dan lokasi VM bidang kontrol tidak selalu cocok. Di kolom Konsol Google Cloud, Anda tidak dapat menonaktifkan zona tertentu saat menggunakan cluster regional. Untuk informasi selengkapnya, lihat Arsitektur cluster GKE.
Tutorial ini menyediakan tiga metode berbeda untuk menyimulasikan kegagalan zona. Anda bisa melakukan simulasi kegagalan zona dan memverifikasi respons aplikasi yang benar menggunakan metode apa pun yang disyaratkan untuk tujuan kepatuhan Anda sendiri.
Metode dalam dokumen ini juga berlaku untuk cluster zona, termasuk zona tunggal dan multi-zona. Metode ini hanya mempengaruhi {i>node<i} di tertarget, dan bidang kontrol GKE tidak terpengaruh.
Tujuan
- Buat cluster GKE Standard regional menggunakan konfigurasi default-nya.
- Men-deploy contoh aplikasi microservice ke cluster regional.
- Simulasikan pemadaman zona menggunakan salah satu dari tiga metode berikut:
- Kurangi zona kumpulan node dalam cluster regional.
- Gunakan kumpulan node zona tunggal.
- Perbesar dan kuras node zona kegagalan target.
- Verifikasi ketersediaan microservice.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine
- Cluster mode GKE Standard
Gunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Kubernetes Engine API, Compute Engine:
gcloud services enable container.googleapis.com
compute.googleapis.com - Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Kubernetes Engine API, Compute Engine:
gcloud services enable container.googleapis.com
compute.googleapis.com
Membuat cluster Standar regional
Sebelum menyimulasikan kegagalan zona, buat cluster regional dengan multi-zona kumpulan node. Bidang kontrol dan node cluster direplikasi ke berbagai dalam region tertentu.
Gunakan Google Cloud CLI untuk membuat cluster:
Membuat cluster GKE Standard baru menggunakan default konfigurasi:
gcloud container clusters create CLUSTER_NAME \ --region REGION \ --num-nodes 2
Ganti parameter berikut:
CLUSTER_NAME
: nama untuk cluster Anda.REGION
: region untuk cluster Anda, sepertius-central1
.
GKE membutuhkan waktu beberapa menit untuk membuat cluster dan memverifikasi semuanya bekerja dengan baik. Dua node dibuat di setiap zona region yang Anda tentukan.
Periksa zona dari setiap node yang dibuat pada langkah sebelumnya:
kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
Output-nya akan terlihat seperti contoh berikut:
NAME ZONE INT_IP regional-cluster-1-default-pool-node1 asia-southeast1-c 10.128.0.37 regional-cluster-1-default-pool-node2 asia-southeast1-c 10.128.0.36 regional-cluster-1-default-pool-node3 asia-southeast1-b 10.128.0.38 regional-cluster-1-default-pool-node4 asia-southeast1-b 10.128.0.33 regional-cluster-1-default-pool-node5 asia-southeast1-a 10.128.0.35 regional-cluster-1-default-pool-node6 asia-southeast1-a 10.128.0.34
Hubungkan ke cluster:
gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION
Men-deploy contoh aplikasi microservice
Untuk melihat efek simulasi failover dalam dokumen ini, deploy contoh aplikasi berbasis microservice ke cluster Anda. Dalam dokumen ini, Anda menggunakan contoh aplikasi Cymbal Bank:
Di shell Anda, clone repositori GitHub berikut dan ubah ke dalam direktori:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git cd bank-of-anthos/
Men-deploy aplikasi contoh Cymbal Bank ke cluster GKE yang telah Anda buat di bagian sebelumnya:
kubectl apply -f ./extras/jwt/jwt-secret.yaml kubectl apply -f ./kubernetes-manifests
Tunggu hingga Pod siap:
kubectl get pods
Setelah beberapa menit, Anda akan melihat Pod dalam status
Running
:NAME READY STATUS RESTARTS AGE accounts-db-0 1/1 Running 0 16s balancereader-7dc7d9ff57-sstm5 0/1 Running 0 15s contacts-7ddc76d94-rr28x 0/1 Running 0 14s frontend-747b84bff4-2mtlv 0/1 Running 0 13s ledger-db-0 1/1 Running 0 13s ledgerwriter-f6cc7889d-9qjfg 0/1 Running 0 13s loadgenerator-57d4cb57cc-zqvqb 1/1 Running 0 13s transactionhistory-5dd7c7fd77-lwkv8 0/1 Running 0 12s userservice-cd5ddb4bb-wwhml 0/1 Running 0 12s
Jika semua Pod dalam status
Running
, dapatkan Service frontend alamat IP eksternal:kubectl get service frontend | awk '{print $4}'
Di jendela browser web, buka alamat IP yang ditampilkan di output Perintah
kubectl get service
untuk mengakses instance Cymbal Bank Anda.Kredensial default diisi secara otomatis, sehingga Anda dapat login ke aplikasi dan menjelajahi beberapa contoh transaksi dan saldo. Ada tidak ada tindakan khusus yang perlu Anda ambil, selain untuk mengonfirmasi bahwa Cymbal Bank berhasil dijalankan. Mungkin perlu waktu satu atau dua menit untuk melihat semua Layanan untuk memulai dengan benar dan memungkinkan Anda masuk. Menunggu hingga semua Pod berada dalam
Running
dan Anda berhasil login ke situs Cymbal Bank sebelum Anda melanjutkan ke bagian berikutnya dan melakukan simulasi kegagalan zona.
Menyimulasikan kegagalan zona
Di bagian ini, Anda akan menyimulasikan kegagalan dengan salah satu zona. Ada tiga berbagai cara berbeda untuk menyimulasikan failover ini. Anda hanya perlu memilih satu . Simulasikan kegagalan zona dan verifikasi respons aplikasi yang benar menggunakan metode mana pun yang disyaratkan untuk tujuan kepatuhan Anda sendiri.
Mengurangi zona kumpulan node
Secara default, kumpulan node dari cluster regional memiliki node yang tersebar di semua beberapa zona di regionnya. Dalam diagram berikut, Cloud Load Balancing mendistribusikan traffic ke kumpulan node yang mencakup tiga zona. Setiap zona memiliki dua {i>node<i}, dan Pod dapat berjalan dalam node di salah satu zona ini.
Di bagian ini, Anda akan menyimulasikan kegagalan zona dengan mengupdate kumpulan node ke berjalan di dua dari tiga zona. Pendekatan ini memverifikasi bahwa aplikasi Anda dapat merespons hilangnya zona dengan mendistribusikan ulang Pod dan traffic secara tepat melintasi zona lainnya.
Untuk mengupdate kumpulan node agar hanya berjalan di zona tertentu dan menyimulasikan kegagalan, selesaikan langkah-langkah berikut:
Periksa ketersediaan cluster regional dan Layanan:
kubectl get po -o wide \ kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
Hasilnya mirip dengan contoh output berikut:
NAME READY STATUS RESTARTS AGE IP NODE accounts-db-0 1/1 Running 0 6m30s 10.28.1.5 regional-cluster-1-default-pool-node3 balancereader-7dc7d9ff57-shwg5 1/1 Running 0 6m30s 10.28.5.6 regional-cluster-1-default-pool-node1 contacts-7ddc76d94-qv4x5 1/1 Running 0 6m29s 10.28.4.6 regional-cluster-1-default-pool-node2 frontend-747b84bff4-xvjxq 1/1 Running 0 6m29s 10.28.3.6 regional-cluster-1-default-pool-node6 ledger-db-0 1/1 Running 0 6m29s 10.28.5.7 regional-cluster-1-default-pool-node1 ledgerwriter-f6cc7889d-mttmb 1/1 Running 0 6m29s 10.28.1.6 regional-cluster-1-default-pool-node3 loadgenerator-57d4cb57cc-7fvrc 1/1 Running 0 6m29s 10.28.4.7 regional-cluster-1-default-pool-node2 transactionhistory-5dd7c7fd77-cmc2w 1/1 Running 0 6m29s 10.28.3.7 regional-cluster-1-default-pool-node6 userservice-cd5ddb4bb-zfr2g 1/1 Running 0 6m28s 10.28.5.8 regional-cluster-1-default-pool-node1 NAME ZONE INT_IP regional-cluster-1-default-pool-node5 asia-southeast1-c 10.148.0.6 regional-cluster-1-default-pool-node6 asia-southeast1-c 10.148.0.7 regional-cluster-1-default-pool-node2 asia-southeast1-a 10.148.0.8 regional-cluster-1-default-pool-node1 asia-southeast1-a 10.148.0.9 regional-cluster-1-default-pool-node3 asia-southeast1-b 10.148.0.5 regional-cluster-1-default-pool-node4 asia-southeast1-b 10.148.0.4
Dalam contoh ini, semua workload Cymbal Bank di-deploy di semua zona. Kepada melakukan simulasi kegagalan, Anda menonaktifkan salah satu zona,
asia-southeast1-c
, tempat layanan frontend di-deploy.Menyimulasikan pemadaman layanan zona. Update kumpulan node yang ada (
default-pool
) menjadi hanya menentukan dua zona dari tiga zona:gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --node-locations=ZONE_A, ZONE_B \ --region=REGION
Ganti
ZONE_A, ZONE_B
dengan dua zona tempat Anda agar kumpulan node tetap berjalan.Memverifikasi ketersediaan microservice setelah Anda mengupdate node pool:
kubectl get po -o wide kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
Output-nya akan terlihat seperti contoh berikut:
NAME ZONE INT_IP regional-cluster-1-default-pool-node2 asia-southeast1-a 10.148.0.8 regional-cluster-1-default-pool-node1 asia-southeast1-a 10.148.0.9 regional-cluster-1-default-pool-node3 asia-southeast1-b 10.148.0.5 regional-cluster-1-default-pool-node4 asia-southeast1-b 10.148.0.4 NAME READY STATUS RESTARTS AGE IP NODE accounts-db-0 1/1 Running 0 28m 10.28.1.5 regional-cluster-1-default-pool-node3 balancereader-7dc7d9ff57-shwg5 1/1 Running 0 28m 10.28.5.6 regional-cluster-1-default-pool-node1 contacts-7ddc76d94-qv4x5 1/1 Running 0 28m 10.28.4.6 regional-cluster-1-default-pool-node2 frontend-747b84bff4-mdnkd 1/1 Running 0 9m21s 10.28.1.7 regional-cluster-1-default-pool-node3 ledger-db-0 1/1 Running 0 28m 10.28.5.7 regional-cluster-1-default-pool-node1 ledgerwriter-f6cc7889d-mttmb 1/1 Running 0 28m 10.28.1.6 regional-cluster-1-default-pool-node3 loadgenerator-57d4cb57cc-7fvrc 1/1 Running 0 28m 10.28.4.7 regional-cluster-1-default-pool-node2 transactionhistory-5dd7c7fd77-w2vqs 1/1 Running 0 9m20s 10.28.4.8 regional-cluster-1-default-pool-node2 userservice-cd5ddb4bb-zfr2g 1/1 Running 0 28m 10.28.5.8 regional-cluster-1-default-pool-node1
Dalam contoh output ini,
asia-southeast1-c
tidak lagi digunakan. Tujuan layanan frontend yang Anda akses dari browser dengan URLhttp://EXTERNAL_IP
masih dapat diakses. Pengguna masih dapat melakukan setoran dan pembayaran tambahan, meskipun salah satu zona tersebut tidak lagi tersedia.
Menggunakan kumpulan node zona tunggal
Di bagian ini, Anda akan menyimulasikan kegagalan zona dengan menghapus dua kumpulan node. Pendekatan ini memverifikasi bahwa aplikasi Anda dapat merespons hilangnya node dengan mendistribusikan ulang Pod dan traffic secara benar ke suatu node pool di zona waktu. Untuk menyimulasikan pemadaman layanan zona di cluster regional, Anda harus memperluas cluster yang telah dibuat sebelumnya, menjalankan aplikasi Cymbal Bank di berbagai kumpulan node. Metode simulasi gangguan zona ini lebih dekat mencerminkan kegagalan zona sebenarnya daripada contoh pertama pembaruan zona aktif dalam kumpulan node, karena biasanya beberapa kumpulan node :
Cluster yang Anda bangun di bagian ini untuk menyimulasikan kumpulan node zona tunggal kegagalan mencakup komponen berikut:
Kumpulan node default — biasanya dibuat saat Anda membuat node Cluster GKE Standard, yang merupakan cluster kumpulan node (
default-pool
).Cluster ini dengan satu
default-pool
yang telah Anda buat sebelumnya dokumen ini.Kumpulan node tambahan (
zonal-node-pool-1
danzonal-node-pool-2
) yang juga menjalankan layanan untuk contoh aplikasi Cymbal Bank.
Garis putus-putus dalam diagram menunjukkan bagaimana lalu lintas hanya melayani zonal-node-pool-2
setelah Anda menyimulasikan kegagalan di default-pool
dan zonal-node-pool-1
.
Untuk membuat kumpulan node tambahan dan menyimulasikan kegagalan, selesaikan langkah-langkah berikut langkah:
Periksa ketersediaan cluster regional:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --region REGION kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
Hasilnya mirip dengan contoh output berikut:
NAME: default-pool MACHINE_TYPE: e2-medium DISK_SIZE_GB: 100 NODE_VERSION: 1.27.8-gke.1067004 NAME ZONE. INT_IP regional-cluster-1-default-pool-node5-pzmc asia-southeast1-c 10.148.0.6 regional-cluster-1-default-pool-node6-qf1l asia-southeast1-c 10.148.0.7 regional-cluster-1-default-pool-node2-dlk2 asia-southeast1-a 10.148.0.8 regional-cluster-1-default-pool-node1-pkfd asia-southeast1-a 10.148.0.9 regional-cluster-1-default-pool-node3-6b6n asia-southeast1-b 10.148.0.5 regional-cluster-1-default-pool-node4-h0lc asia-southeast1-b 10.148.0.4
Dalam contoh output ini, semua Pod Cymbal Bank di-deploy di semua zona pada cluster yang sama dan berjalan di
default-pool
yang sudah ada.Buat dua kumpulan node zona tunggal baru:
gcloud beta container node-pools create zonal-node-pool-1 \ --cluster CLUSTER_NAME \ --region REGION \ --num-nodes 4 \ --node-locations ZONE_A gcloud beta container node-pools create zonal-node-pool-2 \ --cluster CLUSTER_NAME \ --region REGION \ --num-nodes 4 \ --node-locations ZONE_B
Ganti
ZONE_A
danZONE_B
dengan dua zona tempat Anda ingin menjalankan kumpulan node satu zona baru.Untuk menyimulasikan kegagalan zona, hapus kumpulan node regional
default-pool
dan salah satu kumpulan node zona tunggal baru:gcloud container node-pools delete default-pool \ --cluster=CLUSTER_NAME \ --region=REGION gcloud container node-pools delete zonal-node-pool-1 \ --cluster=CLUSTER_NAME \ --region=REGION
Selama proses penghapusan
node-pool
, workload dimatikan dan dijadwalkan ulang ke kumpulan node lain yang tersedia. Ketika proses ini terjadi, Layanan dan Deployment tidak tersedia. Perilaku ini berarti bahwa periode nonaktif periode harus ditentukan untuk pelaporan atau dokumentasi DR.Verifikasi ketersediaan berkelanjutan microservice:
kubectl get po -o wide \ kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
Output-nya akan terlihat seperti contoh berikut:
NAME ZONE INT_IP regional-cluster-1-node-pool3-node1 asia-southeast1-b 10.148.0.8 regional-cluster-1-node-pool3-node2 asia-southeast1-b 10.148.0.9 regional-cluster-1-node-pool3-node3 asia-southeast1-b 10.148.0.5 regional-cluster-1-node-pool3-node4 asia-southeast1-b 10.148.0.4 NAME READY STATUS RESTARTS AGE IP NODE accounts-db-0 1/1 Running 0 28m 10.28.1.5 regional-cluster-1-zonal-node-pool-2-node3 balancereader-7dc7d9ff57-shwg5 1/1 Running 0 28m 10.28.5.6 regional-cluster-1-zonal-node-pool-2-node1 contacts-7ddc76d94-qv4x5 1/1 Running 0 28m 10.28.4.6 regional-cluster-1-zonal-node-pool-2-node2 frontend-747b84bff4-mdnkd 1/1 Running 0 9m21s 10.28.1.7 regional-cluster-1-zonal-node-pool-2-node3 ledger-db-0 1/1 Running 0 28m 10.28.5.7 regional-cluster-1-zonal-node-pool-2-node4 ledgerwriter-f6cc7889d-mttmb 1/1 Running 0 28m 10.28.1.6 regional-cluster-1-zonal-node-pool-2-node3 loadgenerator-57d4cb57cc-7fvrc 1/1 Running 0 28m 10.28.4.7 regional-cluster-1-zonal-node-pool-2-node2 transactionhistory-5dd7c7fd77-w2vqs 1/1 Running 0 9m20s 10.28.4.8 regional-cluster-1-zonal-node-pool-2-node2 userservice-cd5ddb4bb-zfr2g 1/1 Running 0 28m 10.28.5.8 regional-cluster-1-zonal-node-pool-2-node1
Dalam contoh output ini, sebagai
default-pool
danzonal-node-pool-1
no tidak ada lagi, semua Layanan berjalan dizonal-node-pool-2
.
Membatasi dan menguras node di suatu zona
Di bagian ini, Anda akan menghubungkan dan menguras node tertentu di cluster. Anda memblokir dan menguras semua node dalam satu zona, yang menyimulasikan hilangnya Pod yang berjalan pada node tersebut di seluruh zona:
Dalam diagram ini, Anda menghubungkan dan menguras node di zona pertama. {i>Node<i} di dua zona lainnya terus berjalan. Pendekatan ini memverifikasi bahwa aplikasi merespons hilangnya semua {i>node<i} dalam suatu zona dengan cara mendistribusikan ulang Pod dan traffic di seluruh node yang berjalan di zona lain.
Untuk menghubungkan dan menguras node di salah satu zona, menyimulasikan kegagalan, selesaikan langkah-langkah berikut:
Periksa ketersediaan cluster regional dan Layanan. Lihat node nama zona kegagalan target. Anda ingin menetapkan zona tempat Pod frontend akan dijalankan:
kubectl get pods -o wide
Output-nya akan terlihat seperti contoh berikut:
NAME READY STATUS RESTARTS AGE IP NODE accounts-db-0 1/1 Running 0 4m7s 10.96.4.4 regional-cluster-1-default-pool-node2 balancereader-7dc7d9ff57-lv4z7 1/1 Running 0 4m7s 10.96.1.5 regional-cluster-1-default-pool-node1 contacts-7ddc76d94-wxvg5 1/1 Running 0 4m7s 10.96.6.11 regional-cluster-1-default-pool-node3 frontend-747b84bff4-gvktl 1/1 Running 0 4m7s 10.96.1.4 regional-cluster-1-default-pool-node1 ledger-db-0 1/1 Running 0 4m7s 10.96.4.5 regional-cluster-1-default-pool-node2 ledger-db-1 1/1 Running 0 3m50s 10.96.0.13 regional-cluster-1-default-pool-node5 ledgerwriter-f6cc7889d-4hqbm 1/1 Running 0 4m6s 10.96.0.12 regional-cluster-1-default-pool-node5 loadgenerator-57d4cb57cc-fmq52 1/1 Running 0 4m6s 10.96.4.6 regional-cluster-1-default-pool-node2 transactionhistory-5dd7c7fd77-72zpx 1/1 Running 0 4m6s 10.96.6.12 regional-cluster-1-default-pool-node3 userservice-cd5ddb4bb-b7862 1/1 Running 0 4m6s 10.96.1.6 regional-cluster-1-default-pool-node1
Kaitkan Pod yang tercantum dalam output sebelumnya dengan zona node:
kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
Output-nya akan terlihat seperti contoh berikut:
NAME ZONE INT_IP regional-cluster-1-default-pool-node1 asia-southeast1-b 10.148.0.41 regional-cluster-1-default-pool-node2 asia-southeast1-b 10.148.0.42 regional-cluster-1-default-pool-node3 asia-southeast1-a 10.148.0.37 regional-cluster-1-default-pool-node4 asia-southeast1-a 10.148.0.38 regional-cluster-1-default-pool-node5 asia-southeast1-c 10.148.0.40 regional-cluster-1-default-pool-node6 asia-southeast1-c 10.148.0.39
Pada contoh output sebelumnya, Pod frontend berada di
regional-cluster-1-default-pool-node1
di zonaasia-southeast1-b
.Pada langkah berikutnya, Anda akan melacak semua node di zona
asia-southeast1-b
, yang dalam contoh ini, output-nya adalahregional-cluster-1-default-pool-node1
danregional-cluster-1-default-pool-node2
Perbesar dan kuraskan node target di salah satu zona. Dalam contoh ini, data itu adalah dua node di
asia-southeast1-b
:kubectl drain regional-cluster-1-default-pool-node1 \ --delete-emptydir-data --ignore-daemonsets kubectl drain regional-cluster-1-default-pool-node2 \ --delete-emptydir-data --ignore-daemonsets
Perintah ini menandai node sebagai tidak dapat dijadwalkan, dan menyimulasikan kegagalan node. Kubernetes menjadwal ulang Pod ke node lain di zona yang berfungsi.
Perhatikan letak Pod frontend baru dan contoh Pod Cymbal Bank lainnya sebelumnya berjalan pada node di zona kegagalan, dijadwalkan ulang:
kubectl get po -o wide kubectl get node -o=custom-columns='NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,INT_IP:.status.addresses[0].address'
Output-nya akan terlihat seperti contoh berikut:
NAME READY STATUS RESTARTS AGE IP NODE accounts-db-0 1/1 Running 0 4m7s 10.96.4.4 regional-cluster-1-default-pool-node4 balancereader-7dc7d9ff57-lv4z7 1/1 Running 0 4m7s 10.96.1.5 regional-cluster-1-default-pool-node6 contacts-7ddc76d94-wxvg5 1/1 Running 0 4m7s 10.96.6.11 regional-cluster-1-default-pool-node3 frontend-747b84bff4-gvktl 1/1 Running 0 4m7s 10.96.1.4 regional-cluster-1-default-pool-node3 ledger-db-0 1/1 Running 0 4m7s 10.96.4.5 regional-cluster-1-default-pool-node6 ledger-db-1 1/1 Running 0 3m50s 10.96.0.13 regional-cluster-1-default-pool-node5 ledgerwriter-f6cc7889d-4hqbm 1/1 Running 0 4m6s 10.96.0.12 regional-cluster-1-default-pool-node5 loadgenerator-57d4cb57cc-fmq52 1/1 Running 0 4m6s 10.96.4.6 regional-cluster-1-default-pool-node4 transactionhistory-5dd7c7fd77-72zpx 1/1 Running 0 4m6s 10.96.6.12 regional-cluster-1-default-pool-node3 userservice-cd5ddb4bb-b7862 1/1 Running 0 4m6s 10.96.1.6 regional-cluster-1-default-pool-node3 NAME ZONE INT_IP regional-cluster-1-default-pool-node3 asia-southeast1-a 10.148.0.37 regional-cluster-1-default-pool-node4 asia-southeast1-a 10.148.0.38 regional-cluster-1-default-pool-node5 asia-southeast1-c 10.148.0.40 regional-cluster-1-default-pool-node6 asia-southeast1-c 10.148.0.39
Dalam contoh output ini, tidak ada contoh Pod Cymbal Bank yang berjalan di node yang terhubung, dan semua Pod kini hanya berjalan di dua zona lainnya.
Anggaran Gangguan Pod (PDB) pada node dapat memblokir pengosongan node. Nilai Kebijakan PDB sebelum tindakan pencabutan dan pengosongan. Untuk memahami lebih lanjut tentang PDB dan hubungannya dengan pengelolaan gangguan, lihat cara memastikan keandalan serta waktu beroperasi untuk cluster GKE Anda.
Pembersihan
Agar tidak menimbulkan biaya ke akun Google Cloud Anda untuk referensi yang digunakan dalam tutorial ini:
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Pelajari cara menyimulasikan pemadaman zona untuk grup instance terkelola (MIG) regional.
- Pelajari tentang pemulihan dari bencana di Google Cloud.
- Siapkan SQL dengan ketersediaan tinggi di beberapa zona.
- Anggaran Gangguan Pod pertimbangan.
- Pelajari tentang persistent disk zona versus regional.
- Pelajari cara menjalankan database ketersediaan tinggi di GKE.
- Cari tahu selengkapnya tentang Praktik terbaik Pemulihan dari Bencana (Disaster Recovery) di Google Cloud.
- Pelajari Pencadangan untuk GKE.