Halaman ini menjelaskan apa itu load balancing berbasis container di Google Kubernetes Engine (GKE). Load balancing berbasis container memungkinkan beberapa jenis load balancer untuk menargetkan Pod secara langsung dan mendistribusikan traffic ke Pod secara merata.
Arsitektur load balancing berbasis container
Load balancing berbasis container menggunakan grup endpoint jaringan (NEG) GCE_VM_IP_PORT
.
Endpoint NEG adalah alamat IP Pod.
Load balancing berbasis container selalu digunakan untuk Ingress GKE internal dan bersifat opsional untuk Ingress eksternal. Pengontrol Ingress akan membuat load balancer, termasuk alamat IP virtual, aturan penerusan, health check, dan aturan firewall.
Untuk mempelajari cara menggunakan load balancing berbasis container dengan Ingress, lihat Load balancing berbasis container melalui Ingress.
Untuk fleksibilitas yang lebih besar, Anda juga dapat membuat NEG mandiri. Dalam hal ini, Anda bertanggung jawab untuk membuat dan mengelola semua aspek load balancer.
Manfaat load balancing berbasis container
Load balancing berbasis container menawarkan manfaat berikut:
- Pod adalah objek inti untuk load balancing
- kube-proxy akan mengonfigurasi aturan
iptables
node untuk mendistribusikan traffic ke Pod. Tanpa load balancing berbasis container, traffic load balancer berpindah ke grup instance node dan dirutekan menggunakan aturaniptables
ke Pod yang mungkin berada atau tidak berada di node yang sama. Dengan load balancing berbasis container, traffic load balancer akan didistribusikan langsung ke Pod yang akan menerima traffic, sehingga menghilangkan hop jaringan ekstra. Load balancing berbasis container juga membantu meningkatkan health check karena menargetkan Pod secara langsung.
- Performa jaringan yang lebih baik
- Karena load balancer berbasis container berkomunikasi langsung dengan Pod, dan koneksi memiliki hop jaringan yang lebih sedikit, latensi dan throughput akan ditingkatkan.
- Visibilitas yang lebih baik
- Dengan load balancing berbasis container, Anda memiliki visibilitas ke latensi dari Application Load Balancer ke Pod. Latensi dari Application Load Balancer ke setiap Pod terlihat, yang digabungkan dengan load balancing berbasis container dasar IP node. Hal ini mempermudah pemecahan masalah Layanan Anda di tingkat NEG.
- Dukungan untuk fitur load balancing lanjutan
- Load balancing native container di GKE mendukung beberapa fitur Load Balancer Aplikasi eksternal, seperti integrasi dengan layanan Google Cloud seperti Google Cloud Armor, Cloud CDN, dan Identity-Aware Proxy. Load balancing ini juga menampilkan algoritma load balancing untuk distribusi traffic yang akurat.
- Dukungan untuk Cloud Service Mesh
- Model data NEG diperlukan untuk menggunakan Cloud Service Mesh, yaitu bidang kontrol traffic yang terkelola sepenuhnya dari Google Cloud untuk mesh layanan.
Kesiapan Pod
Untuk Pod yang relevan, pengontrol Ingress yang terkait mengelola
gate kesiapan
berjenis cloud.google.com/load-balancer-neg-ready
. Pengontrol Ingress memeriksa status health check load balancer, yang mencakup kesehatan semua endpoint di NEG. Jika status health check load balancer menunjukkan bahwa endpoint yang sesuai dengan Pod tertentu responsif, pengontrol Ingress akan menetapkan nilai gate kesiapan Pod ke True
.
Kubelet yang berjalan pada setiap Node akan menghitung kesiapan efektif Pod, dengan mempertimbangkan nilai gate kesiapan ini dan, jika ditentukan, pemeriksaan kesiapan Pod.
Gate kesiapan Pod otomatis diaktifkan saat menggunakan load balancing native container melalui Ingress.
Gate kesiapan akan mengontrol tingkat update berkelanjutan. Saat Anda memulai update berkelanjutan, seiring GKE membuat Pod baru, endpoint untuk setiap Pod baru akan ditambahkan ke NEG. Jika endpoint responsif dari perspektif load balancer, pengontrol Ingress akan menetapkan gate kesiapan ke True
. Pod
yang baru dibuat harus setidaknya lulus gate kesiapannya sebelum
GKE menghapus Pod lama. Hal ini memastikan bahwa endpoint yang sesuai untuk Pod telah lulus health check load balancer dan memastikan bahwa kapasitas backend dipertahankan.
Jika gate kesiapan Pod tidak pernah menunjukkan bahwa Pod sudah siap, karena image container yang buruk atau health check load balancer yang salah dikonfigurasi, load balancer tidak akan mengarahkan traffic ke Pod baru. Jika kegagalan tersebut terjadi saat meluncurkan Deployment yang diupdate, peluncuran akan terhenti setelah mencoba membuat satu Pod baru karena gate kesiapan Pod tersebut tidak pernah Benar. Lihat bagian pemecahan masalah untuk mendapatkan informasi tentang cara mendeteksi dan memperbaiki situasi ini.
Tanpa load balancing dan gate kesiapan berbasis container, GKE tidak dapat mendeteksi apakah endpoint load balancer responsif atau tidak sebelum menandai Pod sebagai siap. Pada versi Kubernetes sebelumnya, kontrol jumlah Pod yang dihapus dan diganti dengan menentukan periode penundaan (minReadySeconds
dalam spesifikasi Deployment).
GKE akan menetapkan nilai cloud.google.com/load-balancer-neg-ready
untuk Pod ke True
jika salah satu kondisi berikut terpenuhi:
- Tidak satu pun alamat IP Pod yang merupakan endpoint dalam
GCE_VM_IP_PORT
NEG yang dikelola oleh bidang kontrol GKE. - Satu atau beberapa alamat IP Pod adalah endpoint dalam NEG
GCE_VM_IP_PORT
yang dikelola oleh bidang kontrol GKE. NEG akan dipasang ke layanan backend. Layanan backend memiliki health check load balancer yang berhasil. - Satu atau beberapa alamat IP Pod adalah endpoint dalam NEG
GCE_VM_IP_PORT
yang dikelola oleh bidang kontrol GKE. NEG akan dipasang ke layanan backend. Waktu health check load balancer untuk layanan backend telah habis. - Satu atau beberapa alamat IP Pod adalah endpoint di satu atau beberapa NEG
GCE_VM_IP_PORT
. Tidak ada NEG yang disertakan ke layanan backend. Tidak ada data health check load balancer yang tersedia.
Afinitas sesi
Load balancing berbasis container mendukung afinitas sesi berbasis Pod.
Persyaratan untuk menggunakan load balancing berbasis container
Load balancer berbasis container melalui Ingress di GKE memiliki persyaratan berikut:
- Cluster harus berbasis VPC.
- Cluster harus mengaktifkan add-on
HttpLoadBalancing
. Add-onHttpLoadBalancing
diaktifkan secara default di Cluster GKE; Anda tidak boleh menonaktifkannya.
Batasan untuk load balancer berbasis container
Load balancer berbasis container melalui Ingress di GKE memiliki batasan berikut:
- Jangan mendukung Load Balancer Jaringan passthrough eksternal.
- Anda tidak boleh secara manual mengubah atau memperbarui konfigurasi Load Balancer Aplikasi yang dibuat GKE. Setiap perubahan yang Anda buat akan ditimpa oleh GKE.
Harga untuk load balancer berbasis container
Anda akan dikenai biaya atas Load Balancer Aplikasi yang disediakan oleh Ingress yang Anda buat dalam panduan ini. Untuk mengetahui informasi harga load balancer, lihat Aturan penerusan dan load balancing di halaman harga VPC.
Langkah selanjutnya
- Pelajari lebih lanjut NEG.
- Pelajari lebih lanjut cluster VPC native.
- Pelajari Load Balancer Aplikasi eksternal lebih lanjut.
- Tonton diskusi KubeCon tentang gate kesiapan Pod.