Untuk meningkatkan kemampuan pemulihan bencana, keandalan, dan isolasi keamanan, Anda dapat menerapkan Layanan di lintas cluster. Dalam skenario ini, jika semua Layanan backend bertipe LoadBalancer, beberapa instance Server Load Balancer (SLB) digunakan, yang menyebabkan pemborosan sumber daya. Anda dapat menggunakan komponen cloud-controller-manager untuk memasang instance SLB yang ada ke titik akhir di dalam dan luar cluster. Ini memungkinkan Anda untuk mengekspos Layanan di cluster yang berbeda dengan satu instance SLB dan mengatur bobot Layanan tersebut.
Prasyarat
Sebuah instance Classic Load Balancer (CLB) atau instance Network Load Balancer (NLB) telah dibuat di wilayah Container Service for Kubernetes (ACK) cluster Anda.
Komponen Cloud Controller Manager telah diinstal di cluster dan memenuhi persyaratan versi berikut. Untuk pembaruan, lihat Kelola komponen.
Instance CLB: v2.0.1 atau lebih baru
Instance NLB: v2.9.1 atau lebih baru
Klien kubectl terhubung ke cluster ACK. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig dari cluster dan gunakan kubectl untuk terhubung ke cluster.
Skenario 1: Mendistribusikan lalu lintas ke Layanan di dalam cluster dan titik akhir di luar cluster
Anda dapat memasang Layanan di dalam cluster dan titik akhir di luar cluster, seperti instance Elastic Compute Service (ECS), ke instance SLB yang sama.
Masuk ke konsol CLB atau konsol NLB dan lihat ID instance SLB yang ada.
Pilih instance SLB saat Anda membuat Layanan.
Gunakan konsol
Saat Anda membuat Layanan di konsol ACK, atur Service Type menjadi SLB dan pilih Use Existing Resource. Kemudian, pilih instance SLB dari daftar drop-down dan pilih Overwrite Existing Listeners.
Gunakan kubectl
Saat Anda menggunakan kubectl untuk membuat Layanan, tambahkan anotasi untuk menentukan ID instance SLB.
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${LB_ID} # Ganti ${LB_ID} dengan ID instance SLB. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true" # Atur nilai menjadi true untuk secara otomatis membuat pendengar dan grup vServer. labels: #... name: #... spec: #...PentingSetelah Layanan dibuat, cloud-controller-manager membuat grup vServer dan pendengar yang terkait dengan grup vServer serta mendengarkan port Layanan untuk instance SLB.
Masuk ke konsol CLB atau konsol NLB. Tambahkan titik akhir di luar cluster ke grup vServer. Untuk informasi lebih lanjut, lihat Buat dan kelola grup vServer CLB dan Buat dan kelola grup vServer.
Setelah konfigurasi selesai, Anda dapat menemukan pod dan titik akhir eksternal di grup vServer serta mengatur bobotnya. Saat aktivitas penskalaan dipicu, pod secara otomatis ditambahkan ke atau dihapus dari grup vServer. Aktivitas penskalaan tidak memengaruhi titik akhir eksternal.
Skenario 2: Mendistribusikan lalu lintas ke Layanan di cluster ACK yang berbeda
Anda dapat memasang Layanan di cluster ACK yang berbeda ke instance SLB yang sama. Instance SLB berfungsi sebagai ingress terpadu.
Untuk memperbarui titik akhir instance SLB secara otomatis saat pod backend Layanan diubah, Anda harus mengonfigurasi Layanan untuk menggunakan pendengar dan grup vServer yang sama dari instance SLB. Untuk melakukannya, buat pendengar dan grup vServer untuk instance SLB secara manual, lalu konfigurasikan Layanan untuk menggunakan kembali grup vServer dan pendengar untuk mendengarkan port Layanan.
Layanan di cluster ACK yang berbeda harus menggunakan port yang sama.
Layanan harus memiliki nama yang berbeda jika diterapkan di namespace yang sama.
Masuk ke konsol CLB atau konsol NLB dan buat pendengar dan grup vServer untuk instance SLB. Untuk informasi lebih lanjut, lihat Pendengar CLB, Buat dan kelola grup vServer CLB, Pendengar NLB, dan Buat dan kelola grup server.
Saat Anda membuat Layanan, gunakan kembali grup vServer yang Anda buat secara manual.
Untuk melakukannya, tambahkan anotasi ke Layanan untuk menentukan ID instance SLB dan grup vServer. Anda juga dapat mengatur bobot Layanan.
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LB_ID}" # Ganti ${YOUR_LB_ID} dengan ID instance SLB. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port: "${YOUR_VGROUP_ID}:{PORT}" # Ganti ${YOUR_VGROUP_ID} dengan ID grup vServer dan {PORT} dengan port Layanan. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight: "100" # Anotasi ini opsional. Anotasi ini menentukan bobot pod backend Layanan. Nilai valid: 1 hingga 1000. Nilai default: 100. labels: #... name: #... spec: #...CatatanJika Anda ingin mengatur
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-portke beberapa pemetaan port ke grup vServer, pisahkan pemetaan dengan koma (,). Contoh: "${YOUR_VGROUP_ID_1}:80, ${YOUR_VGROUP_ID_2}:443".Setelah konfigurasi selesai, Anda dapat menemukan pod Layanan di grup vServer di konsol SLB. Jika aplikasi diskalakan, pod secara otomatis ditambahkan ke atau dihapus dari grup vServer untuk aplikasi tersebut. Pod yang termasuk dalam aplikasi lain tidak terpengaruh.
PentingJika Anda telah mengatur bobot Layanan dengan menambahkan anotasi terkait, jangan modifikasi bobot di konsol karena perubahan tersebut tidak dapat disinkronkan ke Layanan.
Referensi
Untuk informasi lebih lanjut tentang anotasi, lihat Gunakan anotasi untuk mengonfigurasi instance CLB dan Gunakan anotasi untuk mengonfigurasi instance NLB.
Untuk informasi lebih lanjut tentang catatan rilis untuk komponen cloud-controller-manager, lihat Cloud Controller Manager.