Penerapan lintas kluster meningkatkan pemulihan bencana, keandalan, dan isolasi keamanan. Namun, membuat Service bertipe LoadBalancer untuk setiap backend akan mengakibatkan pemborosan instans load balancer. Dengan komponen Cloud Controller Manager (CCM), Anda dapat menyambungkan titik akhir dalam kluster maupun eksternal ke satu instans load balancer yang sudah ada dan mengonfigurasi bobot forwarding untuk setiap titik akhir.
Prasyarat
-
Miliki instans Classic Load Balancer (CLB) atau Network Load Balancer (NLB) yang sudah ada di wilayah yang sama dengan kluster ACK Anda. Untuk informasi selengkapnya, lihat Create and manage a CLB instance dan Create and manage an NLB instance.
-
Pastikan komponen Cloud Controller Manager Anda memenuhi persyaratan versi. Untuk meningkatkan komponen tersebut, lihat Manage components. Versi yang diperlukan bergantung pada tipe instans:
-
Instans CLB: v2.0.1 atau lebih baru.
-
Instans NLB: v2.9.1 atau lebih baru.
-
Kasus penggunaan 1: Layanan dalam kluster dan titik akhir eksternal
Anda dapat menyambungkan Service dalam kluster dan titik akhir eksternal, seperti Instance ECS, ke instans load balancer yang sama.
-
Temukan ID instans load balancer yang sudah ada di Classic Load Balancer (CLB) console atau Network Load Balancer (NLB) console.
-
Gunakan kembali instans load balancer yang sudah ada saat membuat Service.
Gunakan Konsol
Saat membuat Layanan di Konsol Container Service for Kubernetes (ACK), atur Service Type ke LoadBalancer. Selanjutnya, pilih Use Existing Resource, pilih instans load balancer yang telah ada, lalu pilih Create port listener.
Gunakan kubectl
Saat membuat Service menggunakan kubectl, tambahkan Anotasi untuk menentukan ID instans load balancer.
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${LB_ID} # Ganti ${LB_ID} dengan ID instans load balancer yang sudah ada. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true" # Atur ke "true" untuk secara otomatis membuat listener dan virtual server group. labels: #... name: #... spec: #...PentingSetelah Service dibuat, CCM secara otomatis membuat virtual server group dan listener pada instans load balancer target. Listener tersebut menggunakan virtual server group ini sebagai backend-nya dan meneruskan traffic ke port Service.
-
Tambahkan titik akhir eksternal ke virtual server group yang dibuat secara otomatis. Untuk petunjuknya, lihat Create and manage a virtual server group dan NLB server groups.
Setelah dikonfigurasi, virtual server group akan menampilkan Pod dalam kluster dan titik akhir eksternal, masing-masing dengan bobot forwarding yang dapat dikonfigurasi. Saat aplikasi dalam kluster diskalakan, titik akhirnya secara otomatis ditambahkan atau dihapus dari server group tanpa memengaruhi titik akhir eksternal.
Kasus penggunaan 2: Layanan di beberapa kluster
Anda dapat menyambungkan Service dari kluster berbeda ke satu instans load balancer untuk menyediakan titik masuk terpadu.
Agar titik akhir backend diperbarui secara otomatis saat Pod berubah, semua Service yang berbagi load balancer juga harus berbagi listener dan virtual server group yang sama. Buat listener dan virtual server group secara manual pada instans load balancer, lalu gunakan kembali di semua Service tersebut. Port listener harus sesuai dengan port Service.
-
Service di kluster berbeda harus menggunakan port yang sama.
-
Kombinasi namespace dan nama Service harus unik di seluruh kluster.
-
Buat Pendengar dan kelompok server virtual untuk instans load balancer. Untuk petunjuk, lihat Pendengar CLB, Membuat dan mengelola kelompok server virtual, Pendengar NLB, dan kelompok server NLB.
-
Gunakan kembali virtual server group yang dibuat secara manual saat membuat Service.
Untuk menggunakan kembali virtual server group tersebut, tambahkan Anotasi ke manifes Service untuk menentukan ID instans load balancer dan virtual server group. Anda juga dapat mengatur bobot forwarding untuk Service tersebut.
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LB_ID}" # Ganti ${YOUR_LB_ID} dengan ID instans load balancer yang sudah ada. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:{PORT}" # Ganti ${YOUR_VGROUP_ID} dengan ID virtual server group dan {PORT} dengan port Service. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100" # Opsional. Bobot forwarding untuk Pod milik Service ini. Nilai valid berkisar antara 1 hingga 1000. Nilai default adalah 100. labels: #... name: #... spec: #...CatatanJika Anda memiliki beberapa kombinasi port dan virtual server group untuk
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port, pisahkan dengan koma (,). Contohnya: "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443".Setelah dikonfigurasi, Anda dapat melihat Pod dari Service di kluster berbeda dalam virtual server group di load balancer console. Saat aplikasi di salah satu kluster diskalakan, CCM secara otomatis menambahkan atau menghapus Pod-nya dari server group tanpa memengaruhi Pod dari kluster lain.
PentingJika Anda mengonfigurasi bobot forwarding menggunakan Anotasi dalam manifes Service, jangan sesuaikan bobot tersebut di Konsol karena dapat menyebabkan inkonsistensi status.
Dokumen terkait
-
Untuk detail konfigurasi Anotasi, lihat Configure a Classic Load Balancer (CLB) by using Annotations dan Configure a Network Load Balancer (NLB) by using Annotations.
-
Untuk log perubahan komponen CCM, lihat Cloud Controller Manager.