Checkpoint
Provision Lab Environment
/ 20
Container-native Load Balancing Through Ingress
/ 20
Load Testing an Application
/ 20
Readiness and Liveness Probes
/ 20
Create Pod Disruption Budgets
/ 20
Pengoptimalan Workload GKE
GSP769
Ringkasan
Salah satu dari sekian banyak manfaat penggunaan Google Cloud adalah model penagihannya, di mana Anda hanya akan ditagih untuk resource yang Anda gunakan. Oleh karena itu, penting bagi Anda untuk tidak hanya mengalokasikan resource dalam jumlah yang wajar untuk aplikasi dan infrastruktur Anda, tetapi juga untuk memanfaatkannya secara efisien. Dengan GKE, terdapat sejumlah alat dan strategi yang dapat Anda gunakan untuk mengurangi penggunaan resource dan layanan yang berbeda sekaligus meningkatkan ketersediaan aplikasi Anda.
Lab ini akan membahas beberapa konsep yang akan membantu meningkatkan efisiensi resource dan ketersediaan workload Anda. Dengan memahami dan menyesuaikan workload cluster, Anda bisa memastikan bahwa Anda hanya menggunakan resource yang diperlukan dan mengoptimalkan biaya cluster Anda.
Tujuan
Dalam lab ini, Anda akan mempelajari cara:
- Membuat load balancer berbasis container melalui ingress
- Menguji load aplikasi
- Mengonfigurasi pemeriksaan keaktifan dan kesiapan
- Membuat anggaran disrupsi pod
Penyiapan dan persyaratan
Sebelum mengklik tombol Mulai Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer, yang dimulai saat Anda mengklik Start Lab, akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab praktik ini dapat Anda gunakan untuk melakukan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan info berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account. -
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}} Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}} Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan. -
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
- Klik Activate Cloud Shell di bagian atas konsol Google Cloud.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Output berisi baris yang mendeklarasikan PROJECT_ID untuk sesi ini:
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
-
Klik Authorize.
-
Output Anda sekarang akan terlihat seperti ini:
Output:
- (Opsional) Anda dapat menampilkan daftar project ID dengan perintah ini:
Output:
Contoh output:
gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Menyediakan lingkungan lab
- Setel zona default Anda ke "
":
-
Klik Authorize.
-
Buat cluster tiga node:
Flag --enable-ip-alias
disertakan untuk mengaktifkan penggunaan IP alias untuk pod yang akan diperlukan untuk load balancing berbasis container melalui ingress.
Untuk lab ini, Anda akan menggunakan sebuah aplikasi web HTTP sederhana yang akan Anda deploy terlebih dahulu sebagai satu pod.
- Buat manifes untuk pod
gb-frontend
:
- Terapkan manifes yang baru dibuat ini ke cluster Anda:
1 hingga 2 menit
untuk mendapatkan skor untuk tugas ini.Klik Check my progress untuk memverifikasi tujuan.
Tugas 1. Load balancing berbasis container melalui ingress
Load balancing berbasis container memungkinkan load balancer langsung menarget Pod Kubernetes dan mendistribusikan traffic ke pod secara merata.
Tanpa Load balancing berbasis container, traffic load balancer akan berpindah ke grup instance node lalu diarahkan melalui aturan iptables
ke pod yang mungkin berada atau tidak berada di node yang sama:
Load balancing berbasis container memungkinkan pod menjadi objek induk untuk load balancing, sehingga dapat mengurangi jumlah lompatan jaringan:
Selain penentuan rute yang lebih efisien, load balancing berbasis container menghasilkan pemanfaatan jaringan yang jauh lebih baik, peningkatan performa, distribusi traffic yang merata di seluruh Pod, dan health check di tingkat aplikasi.
Untuk dapat menggunakan load balancing berbasis container, setelan bawaan VPC harus diaktifkan pada cluster. Ini ditunjukkan saat Anda membuat cluster dan menyertakan flag --enable-ip-alias
.
- Manifes berikut ini akan mengonfigurasi layanan
ClusterIP
yang akan digunakan untuk mengarahkan traffic ke pod aplikasi Anda agar GKE dapat membuat grup endpoint jaringan:
Manifes ini mencakup kolom anotasi
di mana anotasi untuk cloud.google.com/neg
akan mengaktifkan load balancing berbasis container untuk aplikasi Anda ketika ingress dibuat.
- Terapkan perubahan pada cluster Anda:
- Selanjutnya, buat ingress untuk aplikasi Anda:
- Terapkan perubahan pada cluster Anda:
Ketika ingress dibuat, load balancer HTTP (S) dibuat bersama dengan NEG (Grup Endpoint Jaringan) di setiap zona tempat cluster berjalan. Setelah beberapa menit, ingress akan diberi sebuah IP eksternal.
Load balancer yang dibuatnya memiliki layanan backend yang berjalan di project Anda, yang menentukan cara Cloud Load Balancing mendistribusikan traffic. Layanan backend ini memiliki status health yang terasosiasi dengannya.
- Untuk memeriksa status health layanan backend, pertama-tama dapatkan namanya:
- Dapatkan status health untuk layanan tersebut:
Perlu waktu beberapa menit hingga health check menampilkan status health.
Output akan tampak seperti berikut:
Setelah status health setiap instance dilaporkan sebagai HEALTHY, Anda dapat mengakses aplikasi melalui IP eksternalnya.
- Dapatkan dengan:
- Memasukkan IP eksternal di jendela browser akan memuat aplikasi.
Klik Check my progress untuk memverifikasi tujuan.
Tugas 2. Menguji load aplikasi
Memahami kapasitas aplikasi Anda merupakan langkah penting yang harus dilakukan saat memilih permintaan resource dan batasan untuk pod aplikasi serta untuk menentukan strategi penskalaan otomatis terbaik.
Di awal lab, Anda sudah men-deploy aplikasi Anda sebagai sebuah pod. Dengan menguji load aplikasi yang berjalan pada satu pod tanpa konfigurasi penskalaan otomatis, Anda akan mengetahui jumlah permintaan serentak yang dapat ditangani oleh aplikasi, jumlah CPU dan memori yang dibutuhkan, dan bagaimana responnya terhadap load yang berat.
Untuk menguji load pod, Anda akan menggunakan Locust, sebuah framework open source untuk pengujian load.
- Download file image Docker untuk Locust dalam Cloud Shell Anda:
File dalam direktori locust-image
yang tersedia meliputi file konfigurasi Locust.
- Bangun image Docker untuk Locust lalu simpan dalam container registry project Anda:
- Verifikasi bahwa image Docker berada dalam container registry project Anda:
Output yang diharapkan:
Locust terdiri dari satu mesin utama dan sejumlah worker untuk menghasilkan load.
- Dengan menyalin dan menerapkan manifes ini, Anda akan membuat sebuah deployment satu-pod untuk mesin utama dan sebuah deployment dengan 5 replika untuk worker-nya:
- Untuk mengakses Locust UI, ambil alamat IP eksternal dari layanan LoadBalancer yang sesuai:
Jika nilai External IP Anda adalah <pending>, tunggu sebentar dan jalankan kembali perintah sebelumnya sampai nilai yang valid ditampilkan.
- Di jendela browser baru, buka
[EXTERNAL_IP_ADDRESS]:8089
untuk membuka halaman web Locust:
Klik Check my progress untuk memverifikasi tujuan.
Dengan Locust, Anda dapat melakukan swarm kepada aplikasi Anda dengan banyak pengguna secara bersamaan. Anda dapat menyimulasikan traffic dengan memasukkan sejumlah pengguna baru yang muncul dengan laju tertentu.
-
Untuk contoh ini, sebagai gambaran load normal, masukkan 200 sebagai jumlah pengguna yang akan disimulasikan dan 20 sebagai laju kemunculan baru.
-
Klik Start swarming.
Setelah beberapa detik, status harus menampilkan Running dengan 200 pengguna dan sekitar 150 permintaan per detik (RPS).
-
Beralih ke Konsol Cloud dan klik Navigation menu () > Kubernetes Engine.
-
Pilih Workloads dari panel sebelah kiri.
-
Lalu klik pod gb-frontend yang telah di-deploy.
Tindakan ini akan membuka halaman detail pod, tempat Anda dapat melihat grafik penggunaan CPU dan memori pod Anda. Amati nilai used dan nilai requested.
Dengan pengujian load saat ini dengan sekitar 150 permintaan per detik, Anda dapat melihat pemanfaatan CPU yang berubah-ubah dari paling rendah .04 hingga paling tinggi .06. Angka ini mewakili 40-60% permintaan CPU untuk satu pod. Di sisi lain, pemanfaatan memori tetap berada pada angka sekitar 80Mi, jauh di bawah angka yang diminta yaitu 256Mi. Inilah angka kapasitas per-pod Anda. Informasi ini akan berguna saat mengonfigurasi Cluster Autoscaler, permintaan dan batasan resource, serta cara atau apakah Anda akan menerapkan horizontal atau vertical pod autoscaler.
Selain dasar pengukuran, Anda juga harus mempertimbangkan kemungkinan performa aplikasi Anda setelah terjadi burst atau lonjakan tiba-tiba.
-
Kembali ke jendela browser Locust lalu klik Edit pada status di bagian atas halaman.
-
Kali ini, masukkan 900 sebagai jumlah pengguna yang akan disimulasikan dan 300 sebagai laju kemunculan barunya.
-
Klik Start Swarming.
Pod Anda mendadak akan menerima 700 tambahan permintaan dalam waktu 2 - 3 detik. Setelah nilai RPS mencapai sekitar 150 dan statusnya menunjukkan 900 pengguna, buka lagi halaman Detail Pod dan amati perubahan yang terjadi pada grafik.
Sementara memori tetap sama, Anda akan melihat bahwa CPU mencapai puncaknya pada hampir .07 - itu sama dengan 70% permintaan CPU untuk pod Anda. Jika aplikasi ini adalah sebuah deployment, Anda mungkin dapat dengan aman mengurangi total permintaan memori ke jumlah yang lebih rendah dan mengonfigurasi horizontal autoscaler untuk memicu penggunaan CPU.
Tugas 3. Pemeriksaan kesiapan dan keaktifan
Menyiapkan pemeriksaan keaktifan
Jika dikonfigurasi dengan spesifikasi pod atau deployment Kubernetes, pemeriksaan keaktifan akan terus berjalan untuk mendeteksi apakah container perlu dimulai ulang dan memicu proses mulai ulang tersebut. Pemeriksaan ini membantu untuk otomatis memulai ulang aplikasi berkondisi deadlock yang mungkin masih dalam status berjalan. Sebagai contoh, load balancer yang dikelola kubernetes (seperti layanan) hanya akan mengirim traffic ke backend pod jika semua container lolos dari pemeriksaan kesiapan.
- Untuk mendemonstrasikan pemeriksaan keaktifan, perintah berikut ini akan menghasilkan manifes untuk pod dengan pemeriksaan keaktifan yang didasarkan pada eksekusi perintah cat terhadap file yang dibuat saat proses pembuatannya:
- Terapkan manifes ke cluster Anda untuk membuat pod:
Nilai initialDelaySeconds
menunjukkan berapa lama sebelum pemeriksaan pertama harus dilakukan setelah container dimulai. Nilai periodSeconds mengindikasikan seberapa sering pemeriksaan akan dilakukan.
startupProbe
yang mengindikasikan apakah aplikasi di dalam container dimulai. Apabila ada nilai startupProbe
, maka pemeriksaan lain tidak akan dilakukan hingga pemeriksaan startup menampilkan status Success
. Ini direkomendasikan untuk aplikasi yang mungkin memiliki waktu mulai yang bervariasi untuk menghindari interupsi dari pemeriksaan keaktifan.Dalam contoh ini, pemeriksaan keaktifan pada dasarnya memeriksa keberadaan file /tmp/alive pada sistem file container.
- Anda dapat memverifikasi status health container pod dengan memeriksa peristiwa pod:
Di bagian bawah output, Anda dapat melihat bagian Peristiwa yang menampilkan 5 peristiwa terakhir pod. Pada titik ini, peristiwa pod seharusnya hanya mencakup peristiwa yang terkait dengan pembuatan dan permulaannya:
Log peristiwa akan mencantumkan setiap kegagalan pemeriksaan keaktifan, serta peristiwa muat ulang yang terpicu karena kegagalan itu.
- Hapus file yang sedang digunakan oleh pemeriksaan keaktifan secara manual:
-
Setelah file dihapus, perintah
cat
yang digunakan oleh pemeriksaan keaktifan seharusnya menghasilkan kode keluar bukan nol. -
Sekali lagi, periksa peristiwa pod:
Saat pemeriksaan keaktifan gagal, Anda akan melihat peristiwa ditambahkan ke log dengan menunjukkan serangkaian langkah yang dijalankan. Diawali dengan pemeriksaan keaktifan yang gagal (Liveness probe failed: cat: /tmp/alive: No such file or directory
) dan diakhiri dengan dimulainya kembali container (Started container
):
livenessProbe
yang bergantung pada kode keluar dari perintah yang ditentukan. Selain pemeriksaan perintah, livenessProbe
harus dikonfigurasi sebagai pemeriksaan HTTP yang tergantung pada respons HTTP, atau pemeriksaan TCP yang akan bergantung pada apakah koneksi TCP dapat dibuat pada port tertentu. Menyiapkan pemeriksaan kesiapan
Meskipun pod berhasil dimulai dan dianggap berfungsi baik oleh pemeriksaan keaktifan, terdapat kemungkinan bahwa pod tersebut belum siap untuk segera menerima traffic. Hal ini biasa terjadi pada deployment yang berfungsi sebagai backend untuk layanan seperti load balancer. Pemeriksaan kesiapan digunakan untuk menentukan kapan pod dan container-nya siap untuk mulai menerima traffic.
- Untuk mendemonstrasikan hal ini, buat manifes untuk membuat satu pod yang akan berfungsi sebagai server web uji bersama dengan load balancer:
- Terapkan manifes ke cluster Anda dan gunakan untuk membuat load balancer:
- Ambil alamat IP eksternal yang ditetapkan ke load balancer Anda (penetapan alamat ini mungkin memerlukan waktu satu menit setelah perintah sebelumnya):
-
Masukkan alamat IP pada jendela browser dan Anda akan mendapatkan pesan error yang menandakan bahwa situs tersebut tidak dapat dijangkau.
-
Periksa peristiwa pod:
Output akan menunjukkan bahwa pemeriksaan kesiapan gagal:
Tidak seperti pemeriksaan keaktifan, pemeriksaan kesiapan yang gagal tidak memicu pod untuk dimulai ulang.
- Gunakan perintah berikut untuk menghasilkan file yang diperiksa oleh pemeriksaan kesiapan:
Bagian Conditions
dari deskripsi pod kini seharusnya menampilkan True
sebagai nilai untuk Ready
.
Output:
- Sekarang, refresh tab browser yang memiliki IP eksternal readiness-demo-svc Anda. Anda seharusnya melihat pesan "Welcome to nginx!" terpampang.
Menetapkan pemeriksaan kesiapan yang efektif untuk container aplikasi Anda akan memastikan bahwa pod hanya menerima traffic setelah siap. Contoh pemeriksaan kesiapan yang efektif adalah memeriksa apakah cache yang diandalkan aplikasi Anda sudah dimuat saat sistem dimulai.
Klik Check my progress untuk memverifikasi tujuan.
Tugas 4. Anggaran disrupsi pod
Salah satu bagian dari upaya untuk memastikan keandalan dan ketersediaan aplikasi GKE Anda adalah pemanfaatan anggaran disrupsi pod (pdp). PodDisruptionBudget
adalah resource Kubernetes yang membatasi jumlah pod dari sebuah aplikasi replika yang dapat berhenti bekerja secara bersamaan karena gangguan yang disengaja.
Gangguan yang disengaja mencakup tindakan administratif seperti menghapus deployment, memperbarui template pod deployment dan melakukan update berkelanjutan, mengosongkan node tempat pod aplikasi berada, atau memindahkan pod ke node lain.
Pertama, Anda perlu men-deploy aplikasi Anda sebagai sebuah deployment.
- Menghapus aplikasi satu pod Anda:
- Lalu, hasilkan manifes yang akan membuatnya sebagai deployment 5 replika:
- Terapkan deployment ini ke cluster Anda:
Klik Check my progress untuk memverifikasi tujuan.
Sebelum membuat anggaran disrupsi pod (pod disruption budget, PDB), Anda akan mengosongkan node-node cluster Anda dan mengamati perilaku aplikasi Anda tanpa PDB.
- Kosongkan node dengan melakukan loop melalui output dari node
default-pool
, lalu jalankan perintahkubectl drain
pada masing-masing node:
Perintah di atas akan mengeluarkan pod dari node yang ditentukan dan menutup node tersebut sehingga tidak ada pod baru yang dapat dibuat di dalamnya. Jika resource yang tersedia memungkinkan, pod akan dipindahkan ke node yang berbeda.
- Setelah node kosong, periksa jumlah replika
gb-frontend
Anda:
Outputnya mungkin akan tampak seperti ini:
Setelah mengosongkan node, deployment Anda mungkin hanya memiliki paling sedikit 0 replika yang tersedia, seperti yang ditunjukkan oleh output di atas. Tanpa adanya pod yang tersedia, aplikasi Anda akan praktis menjadi nonaktif. Mari kita coba mengosongkan node lagi, tetapi kali ini dengan anggaran disrupsi pod yang tersedia untuk aplikasi Anda.
- Pertama-tama, aktifkan lagi node yang telah dikosongkan dengan menandainya sebagai dapat dijadwalkan (uncordoning). Perintah di bawah ini memungkinkan pod dijadwalkan pada node lagi:
- Periksa status deployment Anda sekali lagi:
Outputnya sekarang akan menyerupai yang berikut ini, dengan kelima replika yang tersedia:
- Buat anggaran disrupsi pod yang akan mendeklarasikan jumlah minimum pod yang tersedia adalah 4:
- Sekali lagi, kosongkan salah satu node cluster Anda dan amati hasilnya:
Setelah berhasil mengeluarkan salah satu pod aplikasi Anda, aplikasi akan mengulangi proses berikut ini:
-
Tekan CTRL+C untuk keluar dari perintah.
-
Periksa status deployment Anda sekali lagi:
Sekarang, outputnya akan tampak seperti berikut:
Hingga Kubernetes dapat menggunakan pod ke-5 pada node yang berbeda untuk mengeluarkan pod berikutnya, pod yang tersisa akan tetap tersedia untuk mematuhi PDB. Dalam contoh ini, anggaran disrupsi pod dikonfigurasi untuk mengindikasikan min-available, tetapi PDB juga dapat dikonfigurasi untuk menentukan max-unavailable. Kedua nilai tersebut dapat dinyatakan sebagai bilangan bulat yang mewakili jumlah pod, atau persentase dari total pod.
Selamat!
Anda telah mempelajari cara membuat load balancer berbasis container melalui ingress untuk memanfaatkan load balancing dan pemilihan rute yang lebih efisien. Anda telah menjalankan uji load sederhana pada sebuah aplikasi GKE serta mengamati penggunaan CPU dan memori dasarnya, serta bagaimana aplikasi tersebut merespons lonjakan traffic. Selain itu, Anda juga mengonfigurasi pemeriksaan keaktifan dan kesiapan serta anggaran disrupsi pod untuk memastikan ketersediaan aplikasi Anda. Alat dan teknik ini bersama-sama berkontribusi pada efisiensi keseluruhan aplikasi Anda saat dijalankan di GKE dengan meminimalkan traffic jaringan yang tidak relevan, menentukan indikator yang efektif untuk menilai bahwa suatu aplikasi berperilaku baik, dan meningkatkan ketersediaan aplikasi.
Langkah berikutnya/Pelajari lebih lanjut
Lihat referensi berikut untuk mempelajari lebih lanjut topik yang dibahas dalam lab ini:
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 12 Maret 2024
Lab Terakhir Diuji pada 12 Maret 2024
Hak cipta 2024 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.