Ketika tidak ada instance Server Load Balancer (SLB) yang tersedia, komponen cloud-controller-manager secara otomatis membuat dan mengelola instance Classic Load Balancer (CLB) atau Network Load Balancer (NLB) untuk Layanan LoadBalancer. Topik ini menjelaskan cara menggunakan instance SLB yang dibuat secara otomatis untuk memaparkan aplikasi NGINX.
Catatan
Pengelolaan penyeimbangan beban oleh CCM
CCM hanya membuat dan mengonfigurasi sumber daya SLB untuk Layanan dengan pengaturan
Type=LoadBalancer.CCM menggunakan API deklaratif dan secara otomatis memperbarui konfigurasi instance SLB sesuai dengan konfigurasi Layanan ketika kondisi tertentu terpenuhi. Jika Anda mengatur
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners:ketrue, konfigurasi SLB yang dimodifikasi di konsol SLB mungkin ditimpa oleh CCM.
Jika Anda mengubah pengaturan Layanan dari Type=LoadBalancer menjadi Type!=LoadBalancer, CCM akan menghapus konfigurasi instance SLB yang terkait. Akibatnya, Layanan tidak dapat diakses melalui instance SLB tersebut.
Untuk instance SLB yang dibuat dan dikelola oleh CCM, disarankan agar Anda tidak memodifikasi konfigurasinya di konsol SLB. Jika tidak, CCM mungkin menimpa konfigurasi tersebut, sehingga Layanan terkait mungkin menjadi tidak dapat diakses.
SLB
CCM membuat instance SLB untuk Layanan dengan pengaturan
Type=LoadBalancer. Secara default, Anda dapat memiliki maksimal 60 instance SLB dalam Akun Alibaba Cloud. Untuk membuat lebih banyak instance SLB, ajukan peningkatan kuota di log on to the Quota Center console and submit an application.CCM secara otomatis menambahkan instance Elastic Compute Service (ECS) ke grup server backend instance SLB berdasarkan konfigurasi Layanan.
Secara default, sebuah instance ECS dapat ditambahkan ke maksimal 50 grup server backend. Untuk menambahkan instance ECS ke lebih banyak grup server backend, ajukan peningkatan kuota di log on to the Quota Center console and submit an application.
Secara default, Anda dapat menambahkan maksimal 200 server backend ke instance SLB. Untuk menambahkan lebih banyak server backend, ajukan peningkatan kuota di log on to the Quota Center console and submit an application.
CCM secara otomatis membuat pendengar yang menggunakan port Layanan untuk instance SLB. Secara default, setiap instance SLB mendukung maksimal 50 pendengar. Untuk meningkatkan jumlah pendengar yang didukung, ajukan peningkatan kuota di log on to the Quota Center console and submit an application.
Untuk informasi lebih lanjut tentang batasan SLB, lihat Batasan pada CLB dan Batasan pada NLB.
Untuk memeriksa kuota sumber daya SLB, buka halaman Pusat Kuota di konsol SLB.
Langkah 1: Menyebarkan aplikasi
Topik ini menggunakan aplikasi stateless NGINX sebagai contoh untuk menunjukkan cara menggunakan Layanan LoadBalancer untuk memaparkan aplikasi.
Menggunakan konsol ACK
Masuk ke konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Deployments, klik Create from Image dan konfigurasikan informasi dasar, pengaturan kontainer, serta pengaturan lanjutan dari Penerapan.
Di halaman panduan Basic Information, tentukan Name, pertahankan pengaturan default untuk parameter lainnya, dan klik Next. Dalam contoh ini, nama diatur menjadi my-nginx.
Di halaman panduan Container, tentukan nama citra dan port kontainer, pertahankan pengaturan default untuk parameter lainnya, dan klik Next.
Parameter
Nilai Valid
Image Name
Klik Select images. Di kotak dialog Pilih citra dan tag citra, klik tab Artifact Center, cari
nginx, dan pilih repositori citra bernama openanolis/nginx. Kemudian, klik Select Image Tag, atur tag citra, dan klik OK.Port
Name: nginx.
Container Port: 80.
Di halaman panduan Advanced, pertahankan pengaturan default dan klik Create untuk membuat aplikasi NGINX.
Menggunakan kubectl
Buat file bernama my-nginx.yaml dan tambahkan konten YAML berikut ke dalam file:
apiVersion: apps/v1 # untuk versi sebelum 1.8.0 gunakan apps/v1beta1 kind: Deployment metadata: name: my-nginx # Nama aplikasi contoh. labels: app: nginx spec: replicas: 2 # Jumlah replika pod. selector: matchLabels: app: nginx # Anda harus menentukan nilai yang sama di pemilih Layanan yang digunakan untuk memaparkan aplikasi. template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 # Port yang ingin Anda paparkan di Layanan.Jalankan perintah berikut untuk menyebarkan aplikasi my-nginx:
kubectl apply -f my-nginx.yamlJalankan perintah berikut untuk memeriksa status aplikasi:
kubectl get deployment my-nginxOutput yang diharapkan:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 50s
Langkah 2: Gunakan instance SLB yang dibuat secara otomatis untuk memaparkan aplikasi
Anda dapat menggunakan konsol Container Service for Kubernetes (ACK) atau kubectl untuk membuat Layanan LoadBalancer. Setelah Layanan dibuat, gunakan Layanan tersebut untuk memaparkan aplikasi.
Menggunakan konsol ACK
Masuk ke konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Services, klik Create, dan atur parameter di kotak dialog Create Service.
Item Konfigurasi
Deskripsi
Contoh
Name
Nama Layanan.
my-nginx-svc
Service Type
Tentukan Tipe Layanan. Anda dapat membuat tipe Layanan berikut untuk menangani akses dari berbagai jenis sumber:
Pilih SLB.
Pilih CLB sebagai SLB Type. Di samping Select Resource, pilih Create Resource.
Ubah konfigurasi di menu dropdown Create CLB Instance sesuai kebutuhan. Atur Billing Method ke Pay-as-you-go (Pay-by-CU).
External Traffic Policy
Parameter External Traffic Policy hanya tersedia jika Anda mengatur parameter Tipe Layanan ke Node Port atau Server Load Balancer. Untuk informasi lebih lanjut tentang kebijakan lalu lintas eksternal, lihat bagian Perbedaan antara kebijakan lalu lintas eksternal dari topik "Memulai". Nilai valid:
Local: mengarahkan lalu lintas hanya ke pod node saat ini.
Cluster: mengarahkan lalu lintas ke pod di node lain dalam kluster.
Local
Backend
Aplikasi backend yang ingin Anda asosiasikan dengan Layanan. Jika Anda tidak memilih aplikasi backend, objek Endpoint tidak akan dibuat. Untuk informasi lebih lanjut, lihat Services-without-selectors.
Nama: app
Nilai: nginx
Port Mapping
Port Layanan dan port kontainer. Port Layanan sesuai dengan bidang
portdi file YAML dan port kontainer sesuai dengan bidangtargetPortdi file YAML. Port kontainer harus sama dengan port yang dipaparkan di pod backend.Port Layanan: 80
Port Kontainer: 80
Protokol: TCP
Annotations
Tambahkan anotasi ke Layanan untuk memodifikasi konfigurasi instance SLB. Untuk informasi lebih lanjut, lihat Gunakan anotasi untuk mengonfigurasi instance CLB dan Gunakan anotasi untuk mengonfigurasi instance NLB.
PentingJangan gunakan ulang instance SLB dari server API di kluster. Jika tidak, kegagalan akses kluster mungkin terjadi.
Dalam contoh ini, penagihan bandwidth publik Layanan diatur ke bayar-per-bandwidth dengan bandwidth maksimum 2 Mbit/s, untuk membatasi volume lalu lintas melalui Layanan. Contoh:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type:paybybandwidthservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth:2
Label
Label yang akan ditambahkan ke Layanan, yang mengidentifikasi Layanan.
Tidak Ada
Service Deletion Protection
Aktifkan perlindungan penghapusan untuk Layanan yang melibatkan bisnis kritis atau data sensitif untuk menghindari biaya pemeliharaan terkait penghapusan tidak sengaja. Setelah Anda mengaktifkan fitur ini, Anda harus menonaktifkannya secara manual sebelum menghapus sumber daya apa pun.
CatatanAnda harus terlebih dahulu menginstal policy-template-controller dan gatekeeper untuk manajemen kebijakan keamanan kontainer. Di halaman detail kluster Anda, pilih . Anda akan menemukan komponen-komponen ini. Klik Install untuk menerapkan komponen-komponen ini.
Nonaktif
Setelah mengonfigurasi parameter, klik OK.
Setelah pembuatan, klik Layanan target untuk masuk ke halaman detail. Di bagian Basic Information, klik alamat IP di sebelah kanan External IP, seperti 39.106.XX.XX:80, untuk mengakses aplikasi.

Gunakan kubectl
Gunakan konten YAML Layanan contoh berikut untuk membuat file bernama my-nginx-svc.yaml.
Ubah selector agar sesuai dengan nilai matchLabels di file aplikasi contoh my-nginx.yaml (dalam contoh ini,
app: nginx), untuk mengasosiasikan layanan dengan aplikasi backend.apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancerJalankan perintah berikut untuk membuat Layanan bernama my-nginx-svc dan gunakan Layanan tersebut untuk memaparkan aplikasi:
kubectl apply -f my-nginx-svc.yamlJalankan perintah berikut untuk mengonfirmasi bahwa Layanan LoadBalancer telah dibuat:
kubectl get svc my-nginx-svcOutput yang diharapkan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc LoadBalancer 172.21.5.82 39.106.XX.XX 80:30471/TCP 5mJalankan perintah berikut untuk mengakses aplikasi:
curl <YOUR-External-IP> # Ganti <YOUR-External-IP> dengan alamat IP EKSTERNAL yang diperoleh di atas.Output yang diharapkan:
<!DOCTYPE html> <html> <head> <title>Selamat datang di nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Selamat datang di nginx!</h1> <p>Jika Anda melihat halaman ini, server web nginx berhasil diinstal dan bekerja. Konfigurasi lebih lanjut diperlukan.</p> <p>Untuk dokumentasi online dan dukungan, silakan merujuk ke <a href="http://nginx.org/">nginx.org</a>.<br/> Dukungan komersial tersedia di <a href="http://nginx.com/">nginx.com</a>.</p> <p>Terima kasih telah menggunakan nginx.
CLB
Create CLB Instance
Jika Anda memilih Create CLB Instance, Anda dapat mengatur metode akses instans CLB menjadi akses publik atau akses internal dan metode penagihan instans CLB menjadi bayar berdasarkan spesifikasi atau bayar sesuai penggunaan. Untuk informasi lebih lanjut, lihat Membuat dan mengelola instans CLB.
Parameter | Deskripsi |
Name | Nama dari instans CLB. Parameter ini hanya diperlukan jika Anda membuat instans CLB. |
Access Method | Nilai yang valid: Public Access dan Internal Access. |
IP Version | Versi alamat IP. Nilai yang valid: IPv4 dan IPv6. |
Scheduling Algorithm | Nilai yang valid: Round Robin (RR) dan Weighted Round Robin (WRR). Nilai default: Round Robin (RR). Round Robin (RR): Permintaan didistribusikan ke server backend secara berurutan. Weighted Round Robin (WRR): Server backend dengan bobot lebih tinggi menerima lebih banyak permintaan daripada yang memiliki bobot lebih rendah. |
Access Control | Tentukan apakah akan mengaktifkan fitur kontrol akses untuk pendengar. Untuk informasi lebih lanjut, lihat Kontrol Akses. |
Health Check | Tentukan apakah akan mengaktifkan fitur pemeriksaan kesehatan. Anda dapat mengatur parameter Protokol Pemeriksaan Kesehatan menjadi TCP atau HTTP. Setelah fitur pemeriksaan kesehatan diaktifkan, Anda dapat menentukan ketersediaan layanan server backend menggunakan fitur pemeriksaan kesehatan. Untuk informasi lebih lanjut tentang cara kerja pemeriksaan kesehatan, lihat Pemeriksaan Kesehatan CLB. |
Others | Anda juga dapat menggunakan anotasi untuk mengonfigurasi instans CLB. Untuk informasi lebih lanjut, lihat Gunakan anotasi untuk mengonfigurasi instans CLB. |
Use Existing CLB Instance
Anda dapat memilih instans CLB yang ada dari daftar drop-down di bawah Gunakan Instans CLB yang Ada. Anda juga dapat memilih apakah akan mengaktifkan Overwrite Existing Listeners. Untuk informasi lebih lanjut, lihat Gunakan instans CLB yang ada dan timpa secara paksa pendengar dari instans CLB.
Anda harus memperhatikan beberapa batasan dan catatan penggunaan saat menggunakan instans CLB yang ada. Untuk informasi lebih lanjut, lihat bagian Catatan Penggunaan dari topik "Pertimbangan untuk mengonfigurasi Layanan LoadBalancer".
Advanced Settings
Parameter | Deskripsi |
Scheduling Algorithm | Nilai yang valid: Round Robin (RR) dan Weighted Round Robin (WRR). Nilai default: Round Robin (RR). Round Robin (RR): Permintaan didistribusikan ke server backend secara berurutan. Weighted Round Robin (WRR): Server backend dengan bobot lebih tinggi menerima lebih banyak permintaan daripada yang memiliki bobot lebih rendah. |
Access Control | Tentukan apakah akan mengaktifkan fitur kontrol akses untuk pendengar. Untuk informasi lebih lanjut, lihat Kontrol Akses. |
Health Check | Tentukan apakah akan mengaktifkan fitur pemeriksaan kesehatan. Anda dapat mengatur parameter Protokol Pemeriksaan Kesehatan menjadi TCP atau HTTP. Setelah fitur pemeriksaan kesehatan diaktifkan, Anda dapat menentukan ketersediaan layanan server backend menggunakan fitur pemeriksaan kesehatan. Untuk informasi lebih lanjut tentang cara kerja pemeriksaan kesehatan, lihat Pemeriksaan Kesehatan CLB. |
Others | Anda juga dapat menggunakan anotasi untuk mengonfigurasi instans CLB. Untuk informasi lebih lanjut, lihat Gunakan anotasi untuk mengonfigurasi instans CLB. |
NLB
Create NLB Instance
Jika Anda memilih Buat Instans NLB, Anda dapat mengatur mode akses instans NLB ke akses publik atau akses internal. Untuk informasi lebih lanjut, lihat Buat dan kelola instans NLB.
Parameter | Deskripsi |
Name | Nama dari instans NLB. Parameter ini hanya diperlukan jika Anda membuat instans NLB. |
Access Method | Nilai yang valid: Public Access dan Internal Access. |
IP Version | Versi alamat IP. Nilai yang valid: IPv4 dan Dual-stack. |
Scheduling Algorithm | Nilai yang valid:
|
Health Check | Tentukan apakah fitur pemeriksaan kesehatan diaktifkan.
|
Others | Anda juga dapat menggunakan anotasi untuk mengonfigurasi instans NLB. Untuk informasi lebih lanjut, lihat Gunakan anotasi untuk mengonfigurasi instans NLB. |
VPC | Wilayah VPC kluster default dan ID VPC. |
Vswitch | Anda dapat memilih vSwitch di zona yang didukung oleh instans di VPC, atau membuat yang baru. |
Use Existing NLB Instance
Jika Anda memilih Gunakan Instans NLB yang Ada, Anda dapat memilih instans NLB yang ada dari daftar drop-down di bawah Gunakan Instans NLB yang Ada. Anda juga dapat memilih apakah akan mengaktifkan Timpa Pendengar yang Ada. Untuk informasi lebih lanjut, lihat Gunakan instans NLB yang ada.
Anda harus memperhatikan beberapa batasan dan catatan penggunaan saat menggunakan instans NLB yang ada. Untuk informasi lebih lanjut, lihat bagian Catatan Penggunaan dari topik "Pertimbangan untuk mengonfigurasi Layanan LoadBalancer".
Advanced Settings
Parameter | Deskripsi |
Scheduling Algorithm | Nilai yang valid:
|
Health Check | Tentukan apakah fitur pemeriksaan kesehatan diaktifkan.
|
Others | Anda juga dapat menggunakan anotasi untuk mengonfigurasi instans NLB. Untuk informasi lebih lanjut, lihat Gunakan anotasi untuk mengonfigurasi instans NLB. |
VPC | Wilayah VPC kluster default dan ID VPC. |
Vswitch | Anda dapat memilih vSwitch di zona yang didukung oleh instans di VPC, atau membuat yang baru. |
Apa yang harus dilakukan selanjutnya
Anda dapat mengelola operasi layanan seperti melihat, memperbarui, menghapus, atau mengaktifkan perlindungan penghapusan. Sebagai contoh, Anda dapat memodifikasi Instance SLB publik yang terhubung ke suatu layanan.
Ketika Anda menghapus sebuah layanan atau mengubah jenisnya dari LoadBalancer, Instance SLB yang dibuat secara otomatis akan dirilis secara otomatis. Untuk mempertahankannya, tambahkan anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete. Untuk instruksi lebih rinci, lihat Pertahankan instance SLB yang dibuat secara otomatis saat Anda menghapus sebuah layanan. Solusi ini berlaku untuk kedua instans CLB dan NLB.
Gunakan Konsol ACK
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sisi kiri, pilih .
Di halaman Services, temukan layanan yang ingin Anda kelola dan klik Update di kolom Actions untuk memperbarui layanan tersebut. Anda juga dapat memilih
> Delete untuk menghapus layanan atau memilih > Enable Deletion Protection untuk mengaktifkan perlindungan penghapusan untuk layanan tersebut.
Gunakan kubectl
Perbarui Layanan
Metode 1: Jalankan perintah berikut untuk memperbarui layanan:
kubectl edit service my-nginx-svcMetode 2: Hapus layanan secara manual, modifikasi File YAML, lalu buat ulang layanan tersebut.
kubectl apply -f my-nginx-svc.yaml
Lihat Layanan
Jalankan perintah berikut untuk melihat layanan:
kubectl get service my-nginx-svcOutput yang diharapkan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx-svc LoadBalancer 172.21.XX.XX 192.168.XX.XX 80:31599/TCP 5mHapus Layanan
Jalankan perintah berikut untuk menghapus layanan:
kubectl delete service my-nginx-svc