Serangkaian tutorial ini ditujukan bagi administrator dan Operator IT yang ingin men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan di edisi Google Kubernetes Engine (GKE) Enterprise. Seiring Anda mempelajari serangkaian tutorial ini, Anda akan mempelajari cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan workload, dan menyimulasikan kegagalan, semuanya menggunakan aplikasi microservice sampel Cymbal Bank:
- Membuat cluster dan men-deploy aplikasi contoh
- Memantau dengan Google Cloud Managed Service for Prometheus
- Menskalakan beban kerja
- Menyimulasikan kegagalan (tutorial ini)
- Memusatkan manajemen perubahan
Ringkasan dan tujuan
Aplikasi harus dapat menoleransi gangguan dan kegagalan. Kemampuan ini memungkinkan pengguna terus mengakses aplikasi Anda meskipun ada masalah. Aplikasi contoh Cymbal Bank dirancang untuk menangani kegagalan dan terus berjalan, tanpa perlu Anda memecahkan masalah dan memperbaikinya. Untuk memberikan ketahanan ini, cluster regional GKE mendistribusikan node komputasi di seluruh zona, dan pengontrol Kubernetes secara otomatis merespons masalah layanan dalam cluster.
Dalam tutorial ini, Anda akan mempelajari cara menyimulasikan kegagalan di Google Cloud dan melihat cara Layanan aplikasi di cluster edisi Google Kubernetes Engine (GKE) Enterprise Anda merespons. Anda akan mempelajari cara menyelesaikan tugas berikut:
- Tinjau distribusi node dan Layanan.
- Simulasikan kegagalan node atau zona.
- Pastikan Layanan terus berjalan di seluruh node yang tersisa.
Biaya
Mengaktifkan GKE Enterprise dan men-deploy aplikasi contoh Cymbal Bank untuk rangkaian tutorial ini berarti Anda akan dikenai biaya per cluster untuk GKE Enterprise di Google Cloud seperti yang tercantum di halaman Harga kami hingga Anda menonaktifkan GKE Enterprise atau menghapus project.
Anda juga bertanggung jawab atas biaya lain yang timbul saat menjalankan aplikasi contoh Cymbal Bank, seperti biaya untuk VM Compute Engine. Google Cloud
Sebelum memulai
Untuk mempelajari cara menyimulasikan kegagalan, Anda harus menyelesaikan tutorial pertama untuk membuat cluster GKE yang menggunakan Autopilot dan men-deploy aplikasi berbasis microservice contoh Cymbal Bank.
Sebaiknya selesaikan serangkaian tutorial ini untuk Cymbal Bank secara berurutan. Saat Anda menyelesaikan serangkaian tutorial, Anda akan mempelajari keterampilan baru dan menggunakan produk dan layanan Google Cloud tambahan.
Meninjau distribusi node dan Layanan
Di Google Cloud, region adalah lokasi geografis spesifik tempat Anda dapat
menghosting resource. Region memiliki tiga zona atau lebih. Misalnya, region
us-central1
menunjukkan region di wilayah Midwest Amerika Serikat
yang memiliki beberapa zona, seperti us-central1-a
, us-central1-b
, dan
us-central1-c
. Zona memiliki koneksi jaringan dengan bandwidth tinggi dan latensi rendah ke zona lain di region yang sama.
Untuk men-deploy aplikasi fault-tolerant yang memiliki ketersediaan tinggi, Google merekomendasikan agar Anda men-deploy aplikasi di beberapa zona dan beberapa region. Pendekatan ini membantu melindungi dari kegagalan komponen yang tidak terduga, hingga dan termasuk zona atau region.
Saat Anda membuat cluster GKE Enterprise di tutorial pertama, beberapa nilai konfigurasi default digunakan. Secara default, cluster GKE Enterprise yang menggunakan Autopilot akan membuat dan menjalankan node yang mencakup zona di region yang Anda tentukan. Pendekatan ini berarti aplikasi contoh Cymbal Bank sudah di-deploy di beberapa zona, yang membantu melindungi dari kegagalan tak terduga.
Periksa distribusi node di seluruh cluster GKE Enterprise Anda:
kubectl get nodes -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 yang menunjukkan bahwa node tersebar di ketiga zona dalam region:
NAME ZONE INT_IP scalable-apps-pool-2-node5 us-central1-c 10.148.0.6 scalable-apps-pool-2-node6 us-central1-c 10.148.0.7 scalable-apps-pool-2-node2 us-central1-a 10.148.0.8 scalable-apps-pool-2-node1 us-central1-a 10.148.0.9 scalable-apps-pool-2-node3 us-central1-b 10.148.0.5 scalable-apps-pool-2-node4 us-central1-b 10.148.0.4
Periksa distribusi Layanan aplikasi contoh Cymbal Bank di seluruh node cluster GKE Enterprise Anda:
kubectl get pods -o wide
Contoh output berikut menunjukkan bahwa Layanan didistribusikan di seluruh node dalam cluster. Dari langkah sebelumnya untuk memeriksa cara node didistribusikan, output ini menunjukkan bahwa Layanan berjalan di seluruh zona di region:
NAME READY STATUS RESTARTS AGE IP NODE accounts-db-0 1/1 Running 0 6m30s 10.28.1.5 scalable-apps-pool-2-node3 balancereader-7dc7d9ff57-shwg5 1/1 Running 0 6m30s 10.28.5.6 scalable-apps-pool-2-node1 contacts-7ddc76d94-qv4x5 1/1 Running 0 6m29s 10.28.4.6 scalable-apps-pool-2-node2 frontend-747b84bff4-xvjxq 1/1 Running 0 6m29s 10.28.3.6 scalable-apps-pool-2-node6 ledger-db-0 1/1 Running 0 6m29s 10.28.5.7 scalable-apps-pool-2-node1 ledgerwriter-f6cc7889d-mttmb 1/1 Running 0 6m29s 10.28.1.6 scalable-apps-pool-2-node3 loadgenerator-57d4cb57cc-7fvrc 1/1 Running 0 6m29s 10.28.4.7 scalable-apps-pool-2-node2 transactionhistory-5dd7c7fd77-cmc2w 1/1 Running 0 6m29s 10.28.3.7 scalable-apps-pool-2-node6 userservice-cd5ddb4bb-zfr2g 1/1 Running 0 6m28s 10.28.5.8 scalable-apps-pool-2-node1
Menyimulasikan pemadaman layanan
Google mendesain zona untuk meminimalkan risiko kegagalan berkorelasi yang disebabkan oleh pemadaman infrastruktur fisik seperti listrik, pendingin, atau jaringan. Namun, masalah yang tidak terduga dapat terjadi. Jika node atau zona tidak tersedia, Anda ingin Layanan terus berjalan di node lain atau di zona di region yang sama.
Pengontrol Kubernetes memantau status node, Layanan, dan Deployment di cluster Anda. Jika terjadi pemadaman layanan yang tidak terduga, pengontrol akan memulai ulang resource yang terpengaruh, dan traffic akan dirutekan ke node yang berfungsi.
Untuk menyimulasikan gangguan dalam tutorial ini, Anda akan mengisolasi dan mengosongkan node di salah satu zona Anda. Pendekatan ini menyimulasikan apa yang terjadi saat node gagal, atau saat seluruh zona mengalami masalah. Pengontrol Kubernetes harus mengenali bahwa beberapa Service tidak lagi tersedia dan harus dimulai ulang di node di zona lain:
Menghalangi dan mengosongkan node di salah satu zona. Contoh berikut menargetkan dua node di
us-central1-a
:kubectl drain scalable-apps-pool-2-node1 \ --delete-emptydir-data --ignore-daemonsets kubectl drain scalable-apps-pool-2-node2 \ --delete-emptydir-data --ignore-daemonsets
Perintah ini menandai node sebagai tidak dapat dijadwalkan sehingga Pod tidak dapat lagi berjalan di node ini. Kubernetes menjadwalkan ulang Pod ke node lain di zona yang berfungsi.
Periksa respons kegagalan simulasi
Dalam tutorial sebelumnya dalam seri ini, Anda telah mempelajari cara mengonfigurasi instance Prometheus terkelola untuk cluster GKE Enterprise guna memantau beberapa Layanan dan membuat pemberitahuan jika ada masalah. Jika Pod berjalan di node di zona tempat Anda menyimulasikan gangguan, Anda akan mendapatkan pesan notifikasi Slack dari pemberitahuan yang dihasilkan oleh Prometheus. Perilaku ini menunjukkan cara membangun lingkungan aplikasi modern yang memantau kondisi Deployment Anda, memberi tahu Anda jika ada masalah, dan dapat menyesuaikan secara otomatis untuk perubahan atau kegagalan beban.
Cluster GKE Enterprise Anda akan otomatis merespons simulasi gangguan. Semua Layanan di node yang terpengaruh akan dimulai ulang di node yang tersisa.
Periksa distribusi node di seluruh cluster GKE Enterprise Anda lagi:
kubectl get nodes -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 yang menunjukkan bahwa node kini hanya tersebar di dua zona di region:
NAME ZONE INT_IP scalable-apps-pool-2-node5 us-central1-c 10.148.0.6 scalable-apps-pool-2-node6 us-central1-c 10.148.0.7 scalable-apps-pool-2-node3 us-central1-b 10.148.0.5 scalable-apps-pool-2-node4 us-central1-b 10.148.0.4
Pengontrol Kubernetes mengenali bahwa dua node tidak lagi tersedia, dan mendistribusikan ulang Layanan di seluruh node yang tersedia. Semua Layanan harus terus berjalan.
Periksa distribusi Layanan aplikasi contoh Cymbal Bank di seluruh node cluster GKE Enterprise Anda:
kubectl get pods -o wide
Contoh output berikut menunjukkan bahwa Layanan didistribusikan di seluruh node yang tersisa dalam cluster. Dari langkah sebelumnya untuk memeriksa cara distribusi node, output ini menunjukkan bahwa Layanan kini hanya berjalan di dua zona di region:
NAME READY STATUS RESTARTS AGE IP NODE accounts-db-0 1/1 Running 0 28m 10.28.1.5 scalable-apps-pool-2-node3 balancereader-7dc7d9ff57-shwg5 1/1 Running 0 9m21s 10.28.5.6 scalable-apps-pool-2-node5 contacts-7ddc76d94-qv4x5 1/1 Running 0 9m20s 10.28.4.6 scalable-apps-pool-2-node4 frontend-747b84bff4-xvjxq 1/1 Running 0 28m 10.28.3.6 scalable-apps-pool-2-node6 ledger-db-0 1/1 Running 0 9m24s 10.28.5.7 scalable-apps-pool-2-node3 ledgerwriter-f6cc7889d-mttmb 1/1 Running 0 28m 10.28.1.6 scalable-apps-pool-2-node3 loadgenerator-57d4cb57cc-7fvrc 1/1 Running 0 9m21s 10.28.4.7 scalable-apps-pool-2-node5 transactionhistory-5dd7c7fd77-cmc2w 1/1 Running 0 28m 10.28.3.7 scalable-apps-pool-2-node6 userservice-cd5ddb4bb-zfr2g 1/1 Running 0 9m20s 10.28.5.8 scalable-apps-pool-2-node1
Lihat
AGE
Layanan. Dalam output contoh sebelumnya, beberapa Layanan memiliki usia yang lebih muda daripada yang lain dalam contoh aplikasi Cymbal Bank. Layanan yang lebih baru ini sebelumnya berjalan di salah satu node tempat Anda menyimulasikan kegagalan. Pengontrol Kubernetes memulai ulang Layanan ini di node yang tersedia.
Dalam skenario nyata, Anda akan memecahkan masalah tersebut, atau menunggu masalah pemeliharaan yang mendasarinya diselesaikan. Jika Anda mengonfigurasi Prometheus untuk mengirim pesan Slack berdasarkan pemberitahuan, Anda akan melihat notifikasi ini muncul. Anda juga dapat mengulangi langkah-langkah dari tutorial sebelumnya untuk menskalakan resource guna melihat cara cluster GKE Enterprise Anda merespons peningkatan beban saat hanya dua zona yang tersedia di region. Cluster harus di-scale up dengan dua zona yang tersisa.
Pembersihan
Serangkaian tutorial untuk Cymbal Bank dirancang untuk diselesaikan satu per satu. Saat Anda menyelesaikan serangkaian tutorial, Anda akan mempelajari keterampilan baru dan menggunakan produk serta layanan tambahan. Google Cloud
Jika Anda ingin beristirahat sebelum melanjutkan ke tutorial berikutnya dan menghindari biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang Anda buat.
- 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 cara memusatkan pengelolaan perubahan dengan Config Sync dalam tutorial berikutnya.