Load balancing berbasis container


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 akan berpindah ke grup instance node dan dirutekan menggunakan aturan iptables 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.

Perbandingan perilaku default (kiri) dengan perilaku load balancer berbasis container.
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 mengenai latensi dari Load Balancer Aplikasi ke Pod. Latensi dari Load Balancer Aplikasi ke setiap Pod terlihat, yang digabungkan dengan load balancing berbasis container berbasis IP node. Hal ini mempermudah pemecahan masalah Layanan di tingkat NEG.
Dukungan untuk fitur load balancing lanjutan
Load balancing berbasis container di GKE mendukung beberapa fitur Load Balancer Aplikasi eksternal, misalnya integrasi dengan layanan Google Cloud seperti Google Cloud Armor, Cloud CDN, dan Identity-Aware Proxy. Fitur ini juga memiliki algoritma load balancing untuk distribusi traffic yang akurat.
Dukungan untuk Traffic Director
Model data NEG diperlukan untuk menggunakan Traffic Director, yaitu bidang kontrol traffic yang terkelola sepenuhnya dari Google Cloud untuk mesh layanan.

Kesiapan pod

Untuk Pod yang relevan, pengontrol Ingress yang sesuai mengelola gate kesiapan jenis cloud.google.com/load-balancer-neg-ready. Pengontrol Ingress memeriksa status health check load balancer, yang mencakup kondisi 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 di setiap Node akan menghitung kesiapan efektif Pod, dengan mempertimbangkan nilai gate kesiapan ini dan, jika ditentukan, pemeriksaan kesiapan Pod.

Gate kesiapan pod diaktifkan secara otomatis saat menggunakan load balancing berbasis container melalui Ingress.

Gate kesiapan akan mengontrol tingkat update berkelanjutan. Saat Anda memulai update berkelanjutan, saat 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 setidaknya harus lulus batas kesiapannya sebelum GKE menghapus Pod lama. Hal ini memastikan bahwa endpoint yang sesuai untuk Pod telah lulus health check load balancer dan 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 gateway kesiapan berbasis container, GKE tidak dapat mendeteksi apakah endpoint load balancer responsif 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 native VPC.
  • Cluster harus mengaktifkan add-on HttpLoadBalancing. Cluster GKE memiliki add-on HttpLoadBalancing yang diaktifkan secara default; Anda tidak boleh menonaktifkannya.

Batasan untuk load balancer berbasis container

Load balancer berbasis container melalui Ingress di GKE memiliki batasan berikut:

  • Tidak mendukung Load Balancer Jaringan passthrough eksternal.
  • Anda tidak boleh mengubah atau mengupdate konfigurasi Load Balancer Aplikasi yang dibuat GKE secara manual. Setiap perubahan yang Anda buat akan ditimpa oleh GKE.

Harga untuk load balancer berbasis container

Anda dikenai biaya untuk Load Balancer Aplikasi yang disediakan oleh Ingress yang Anda buat dalam panduan ini. Untuk informasi harga load balancer, lihat Aturan load balancing dan penerusan di halaman harga VPC.

Langkah selanjutnya