Saat Anda menetapkan Type=LoadBalancer untuk sebuah Service, Cloud Controller Manager (CCM) dari Container Service for Kubernetes (ACK) secara otomatis membuat dan mengelola resource Server Load Balancer (SLB) untuk Service tersebut—termasuk instans SLB, pendengar (listeners), dan kelompok server backend. Instans Classic Load Balancer (CLB) maupun Network Load Balancer (NLB) didukung.
Sebelum mengonfigurasi Service bertipe LoadBalancer, tinjau batasan, kuota, dan kebijakan pembaruan yang dijelaskan dalam dokumen ini untuk menghindari gangguan layanan atau habisnya kuota di lingkungan produksi.
Penggunaan ulang instans SLB
Anda dapat menggunakan kembali instans SLB yang sudah ada, alih-alih membiarkan CCM membuatnya secara otomatis. Batasan berikut berlaku:
Hanya gunakan kembali instans SLB yang dibuat melalui konsol SLB. Instans yang dibuat secara otomatis oleh CCM tidak dapat digunakan ulang.
Untuk akses internal-facing, instans SLB harus berada dalam virtual private cloud (VPC) yang sama dengan kluster ACK. Hanya instans NLB yang mendukung penggunaan ulang lintas-VPC.
Jenis jaringan instans SLB harus sesuai dengan jenis akses Service:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"— instans SLB harus bersifat Internet-facing.service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"— instans SLB harus bersifat internal-facing.
Setiap port pendengar pada instans SLB hanya dapat digunakan oleh satu Service dalam satu waktu.
Saat menggunakan kembali instans SLB lintas kluster, pastikan Service yang diekspos oleh instans tersebut memiliki nama berbeda, kecuali jika dideploy dalam namespace yang berbeda.
Anda tidak dapat mengubah instans SLB yang ditetapkan untuk Service LoadBalancer setelah pembuatan. Untuk beralih ke instans SLB yang berbeda, buat Service lain.
Perilaku pengelolaan CCM
CCM membuat dan mengelola resource SLB secara eksklusif untuk Service dengan Type=LoadBalancer.
Jika Anda mengubah Service dari Type=LoadBalancer ke tipe lain, CCM akan menghapus konfigurasi SLB untuk Service tersebut, sehingga Service tidak lagi dapat diakses melalui instans SLB.
CCM menggunakan API deklaratif untuk terus-menerus menyelaraskan konfigurasi SLB dengan spesifikasi Service. Karena CCM menganggap spesifikasi Service sebagai sumber kebenaran dan secara berkala menimpa ulang resource SLB agar sesuai dengannya, perubahan manual yang Anda lakukan di konsol SLB mungkin ditimpa oleh CCM—terutama jika service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners diatur ke true.
Jangan mengubah konfigurasi instans SLB yang dikelola CCM di konsol SLB. CCM akan menimpa perubahan tersebut pada siklus penyelarasan berikutnya.
Kuota
VPC
Setiap node dalam kluster dipetakan ke satu entri rute dalam tabel rute VPC. Batas default adalah 200 entri per tabel rute. Jika kluster Anda melebihi 200 node, login ke Konsol Quota Center dan kirim permohonan.
Untuk batasan dan kuota VPC, lihat Batasan dan kuota. Untuk melihat penggunaan kuota VPC Anda saat ini, buka halaman Manajemen Kuota di konsol VPC.
SLB
Berikut adalah kuota SLB default per akun Alibaba Cloud:
| Resource | Batas default | Cara meningkatkan |
|---|---|---|
| Instans SLB per akun | 60 | login ke Konsol Quota Center dan kirim permohonan |
| Kelompok server backend per instans Elastic Compute Service (ECS) | 50 | login ke Konsol Quota Center dan kirim permohonan |
| Server backend per instans SLB | 200 | login ke Konsol Quota Center dan kirim permohonan |
| Pendengar per instans SLB | 50 | login ke Konsol Quota Center dan kirim permohonan |
Konsumsi kuota dan mitigasi
Saat menggunakan plugin jaringan Flannel dengan spec.externalTrafficPolicy: Cluster, CCM mendaftarkan setiap node kluster sebagai server backend untuk setiap Service LoadBalancer. Hal ini menyebabkan kuota kelompok server backend dikonsumsi dengan cepat di seluruh Service LoadBalancer Anda. Saat kuota habis, penyelarasan Service gagal.
Untuk mengurangi konsumsi kuota, beralihlah ke spec.externalTrafficPolicy: Local. Dalam mode Local, CCM hanya mendaftarkan node yang menjalankan pod backend untuk setiap Service, sehingga penggunaan kuota berkurang secara signifikan. Mode Local juga mempertahankan alamat IP sumber dalam load balancing lapisan 4.
Untuk melihat penggunaan kuota SLB Anda saat ini, buka halaman Quota Center di konsol SLB. Untuk daftar lengkap batasan SLB, lihat Batasan CLB dan Batasan NLB.
Kebijakan pembaruan resource SLB
CCM menerapkan kebijakan berbeda tergantung pada apakah Anda menentukan instans SLB yang sudah ada atau membiarkan CCM membuatnya secara otomatis.
| Resource | Instans SLB yang sudah ada (ditentukan pengguna) | Instans SLB yang dibuat CCM |
|---|---|---|
| SLB instance | Tentukan dengan service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id. CCM menggunakan instans ini dan membuat kelompok vServer untuknya. Instans ini tidak dihapus saat Service dihapus. | CCM membuat, mengonfigurasi, dan mengelola instans secara otomatis. Instans ini akan dihapus saat Service dihapus. |
| Pendengar | Dikontrol oleh service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: atur ke false agar pendengar tidak dikelola, atau true agar CCM mengelola dan mengganti pendengar yang sudah ada. | CCM membuat dan mengelola pendengar berdasarkan konfigurasi Service. |
| Kelompok server backend | Lihat kebijakan kelompok server backend di bawah. | Lihat kebijakan kelompok server backend di bawah. |
Kebijakan kelompok server backend
Perilaku kelompok server backend bergantung pada plugin jaringan yang digunakan kluster Anda.
Plugin jaringan Terway
Secara default, CCM menambahkan alamat IP pod langsung sebagai server backend, melewati level node ECS.
Plugin jaringan Flannel
Perilaku bergantung pada spec.externalTrafficPolicy:
Mode Cluster (
externalTrafficPolicy: Cluster): Secara default, CCM menambahkan semua node kluster sebagai server backend. Jika label node ditentukan dalam konfigurasi Service, hanya node dengan label tersebut yang ditambahkan.PentingMode Cluster menghabiskan kuota kelompok server backend dengan cepat karena setiap node didaftarkan untuk setiap Service LoadBalancer. Saat kuota habis, penyelarasan Service gagal. Beralihlah ke mode Local untuk menghindari hal ini.
Mode Local (
externalTrafficPolicy: Local): CCM hanya menambahkan node yang menjalankan pod backend untuk Service tersebut. Hal ini mengurangi konsumsi kuota dan mempertahankan alamat IP sumber dalam load balancing lapisan 4.
Perilaku penghapusan node (hanya Flannel)
CCM tidak menambahkan node master ke instans SLB yang digunakan oleh kluster.
Menjalankan kubectl drain atau kubectl cordon pada suatu node tidak secara otomatis menghapusnya dari kelompok server backend SLB. Untuk menghapus node yang tidak dapat dijadwalkan dari backend, atur anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend ke on.