Cloud Controller Manager (CCM) memungkinkan Anda menyambungkan instans Server Load Balancer (SLB) yang sudah ada ke layanan di satu atau beberapa kluster ACK serta ke titik akhir di luar kluster tersebut. Dengan satu instans SLB yang berfungsi sebagai ingress terpadu, Anda tidak perlu menyediakan load balancer terpisah untuk setiap kluster—berguna ketika membutuhkan disaster recovery, ketersediaan tinggi, atau isolasi keamanan antar kluster.
Dua skenario dibahas:
-
Skenario 1: Mendistribusikan traffic antara layanan di dalam kluster dan titik akhir eksternal (misalnya, instans Elastic Compute Service (ECS)).
-
Skenario 2: Mendistribusikan traffic di antara layanan di kluster ACK yang berbeda.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Membuat instans Classic Load Balancer (CLB) atau instans Network Load Balancer (NLB) di wilayah yang sama dengan kluster ACK Anda
-
Cloud Controller Manager yang diinstal di klaster dalam versi yang diperlukan (untuk pembaruan, lihat Mengelola komponen):
-
Instans CLB: v2.0.1 atau lebih baru
-
Instans NLB: v2.9.1 atau lebih baru
-
-
Klien kubectl yang terhubung ke kluster ACK (lihat Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster)
Skenario 1: Mendistribusikan traffic ke layanan kluster dan titik akhir eksternal
Sambungkan layanan di dalam kluster dan titik akhir eksternal ke instans SLB yang sama. Instans SLB tersebut mengarahkan traffic ke keduanya. Saat Pod diskalakan, Pod tersebut secara otomatis ditambahkan atau dihapus dari kelompok vServer tanpa memengaruhi titik akhir eksternal.
Langkah 1: Dapatkan ID instans SLB
Masuk ke CLB console atau NLB console dan catat ID instans SLB yang sudah ada.
Langkah 2: Buat layanan menggunakan instans SLB yang ada
Gunakan Konsol ACK
Di ACK console, buat layanan dengan pengaturan berikut:
-
Atur Service Type ke SLB.
-
Pilih Use Existing Resource, lalu pilih instans SLB dari daftar drop-down.
-
Pilih Overwrite Existing Listeners.
Gunakan kubectl
Tambahkan anotasi berikut ke manifes layanan Anda:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "<YOUR_LB_ID>" # ID dari instance SLB bersama.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "<YOUR_VGROUP_ID>:<PORT>" # ID kelompok vServer dan port Service, dipisahkan oleh titik dua.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100" # (Opsional) Bobot lalu lintas untuk pod backend dari Service ini. Nilai yang valid: 1–1000. Default: 100.
labels:
#...
name: #...
spec:
#...
Setelah layanan dibuat, CCM membuat kelompok vServer dan listener yang mendengarkan pada port layanan untuk instans SLB tersebut.
Langkah 3: Tambahkan titik akhir eksternal ke kelompok vServer
Masuk ke CLB console atau NLB console dan tambahkan titik akhir eksternal Anda (misalnya, instans ECS) ke kelompok vServer yang dibuat oleh CCM. Untuk petunjuknya, lihat Create and manage a CLB vServer group dan Create and manage a vServer group.
Setelah Anda menambahkan titik akhir eksternal, baik Pod kluster maupun titik akhir eksternal akan muncul di kelompok vServer, dan Anda dapat mengatur bobot relatifnya.
Skenario 2: Mendistribusikan traffic di antara layanan di kluster ACK yang berbeda
Sambungkan layanan dari kluster ACK yang berbeda ke instans SLB yang sama. CCM di setiap kluster menjaga sinkronisasi kelompok vServer saat Pod diskalakan, tanpa memengaruhi server backend yang didaftarkan oleh kluster lain.
Batasan
Tinjau batasan berikut sebelum memulai:
-
Semua layanan yang berbagi instans SLB harus menggunakan port yang sama.
-
Layanan yang dideploy di namespace yang sama di berbagai kluster harus memiliki nama yang berbeda.
-
Jika Anda mengatur bobot traffic menggunakan anotasi
alibaba-cloud-loadbalancer-weight, kelola bobot hanya melalui anotasi tersebut—jangan ubah bobot di SLB console, karena perubahan di konsol tidak disinkronkan kembali ke layanan.
Langkah 1: Buat listener dan kelompok vServer secara manual
Masuk ke CLB console atau NLB console dan buat listener serta kelompok vServer secara manual untuk instans SLB tersebut. Untuk petunjuknya, lihat CLB listeners, Create and manage a CLB vServer group, NLB listeners, dan Create and manage a server group.
Pembuatan listener dan kelompok vServer secara manual diperlukan agar semua kluster dapat berbagi kelompok yang sama—CCM di setiap kluster mendaftarkan Pod-nya sendiri ke kelompok bersama ini.
Langkah 2: Buat layanan dengan anotasi kelompok vServer bersama
Di setiap kluster, buat layanan dengan anotasi di bawah ini. Semua layanan harus mereferensikan instans SLB dan kelompok vServer yang sama.
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "<YOUR_LB_ID>" # ID instans SLB bersama.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "<YOUR_VGROUP_ID>:<PORT>" # ID kelompok vServer dan port layanan, dipisahkan dengan tanda titik dua.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100" # (Opsional) Bobot traffic untuk Pod backend layanan ini. Nilai valid: 1–1000. Default: 100.
labels:
#...
name: #...
spec:
#...
Referensi anotasi
| Anotasi | Tipe | Default | Deskripsi |
|---|---|---|---|
alibaba-cloud-loadbalancer-id |
string | — | ID instans SLB yang sudah ada. CCM menyambungkan layanan ke instans ini alih-alih membuat yang baru. |
alibaba-cloud-loadbalancer-vgroup-port |
string | — | Memetakan port layanan ke kelompok vServer: <vgroup-id>:<port>. Untuk beberapa pemetaan port-ke-kelompok vServer, pisahkan dengan koma — misalnya, "<VGROUP_ID_1>:80, <VGROUP_ID_2>:443". |
alibaba-cloud-loadbalancer-weight |
integer | 100 | Bobot traffic untuk semua Pod backend layanan ini. Nilai valid: 1–1000. Saat diatur, CCM menggunakan nilai ini untuk mendaftarkan bobot Pod di kelompok vServer — kelola bobot hanya melalui anotasi ini, bukan di SLB console. |
Setelah Anda menerapkan manifes layanan, Pod dari setiap kluster akan muncul di kelompok vServer bersama di SLB console. Saat aplikasi diskalakan, Pod-nya secara otomatis ditambahkan atau dihapus dari kelompok tersebut, tanpa memengaruhi Pod milik layanan lain.
Langkah selanjutnya
-
Untuk daftar lengkap anotasi untuk instans CLB dan NLB, lihat Use annotations to configure CLB instances dan Use annotations to configure NLB instances.
-
Untuk catatan rilis Cloud Controller Manager, lihat Cloud Controller Manager.