All Products
Search
Document Center

Container Compute Service:Ekspos aplikasi menggunakan Layanan LoadBalancer

Last Updated:Sep 30, 2026

Komponen cloud-controller-manager (CCM) secara otomatis membuat dan mengelola load balancer untuk layanan dengan tipe LoadBalancer. Load balancer tersebut dapat berupa Classic Load Balancer (CLB) atau Network Load Balancer (NLB). Topik ini menggunakan aplikasi Nginx sebagai contoh untuk menunjukkan cara mengekspos aplikasi menggunakan Layanan LoadBalancer.

Catatan

  • CCM hanya mengonfigurasi load balancer untuk layanan dengan Type=LoadBalancer. Tidak ada load balancer yang dikonfigurasi untuk tipe layanan lainnya.

  • Penting

    Jika Anda mengubah tipe layanan dari Type=LoadBalancer menjadi Type!=LoadBalancer, CCM akan menghapus konfigurasi yang ditambahkan ke load balancer, sehingga layanan tidak dapat diakses melalui load balancer tersebut.

  • CCM menggunakan API deklaratif dan secara otomatis menyelaraskan konfigurasi load balancer berdasarkan definisi layanan. Perubahan manual yang dilakukan di konsol Server Load Balancer (SLB) mungkin akan ditimpa.

    Penting

    Jangan mengubah konfigurasi load balancer yang dikelola Kubernetes secara manual di konsol Server Load Balancer (SLB). Perubahan Anda mungkin akan ditimpa, sehingga layanan menjadi tidak dapat diakses.

  • Anda tidak dapat mengganti load balancer untuk layanan yang sudah ada dengan tipe LoadBalancer. Untuk menggunakan load balancer yang berbeda, Anda harus membuat layanan baru.

Kuota

Langkah 1: Terapkan aplikasi contoh

Langkah-langkah berikut menjelaskan cara menerapkan aplikasi menggunakan kubectl.

  1. Buat file bernama my-nginx.yaml dengan konten berikut.

    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: 3       # Jumlah replika.
      selector:
        matchLabels:
          app: nginx     # Nilai ini harus sesuai dengan selector pada Service yang digunakan untuk mengekspos aplikasi ini.
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest     # Ganti dengan alamat image aktual dalam format: <nama_image:tag>.
            ports:
            - containerPort: 80                                # Port ini harus diekspos di Service.
  2. Terapkan aplikasi my-nginx.

    kubectl apply -f my-nginx.yaml
  3. Verifikasi bahwa aplikasi sedang berjalan.

    kubectl get deployment my-nginx

    Contoh output:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    my-nginx   3/3     3            3           50s

Langkah 2: Ekspos aplikasi menggunakan Layanan LoadBalancer

Anda dapat menggunakan konsol dan kubectl untuk membuat Layanan LoadBalancer dan mengekspos aplikasi.

Konsol

  1. Login ke konsol ACS. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Network > Services.

  3. Pada halaman Services, klik Create di pojok kiri atas.

  4. Pada kotak dialog Create Service, atur parameter untuk layanan tersebut.

  5. Parameter

    Deskripsi

    Contoh

    Name

    Masukkan nama untuk layanan.

    my-nginx-svc

    Service Type

    Pilih tipe layanan. Mode jaringan berikut didukung untuk berbagai jenis klien dan sumber akses:

    Cluster IP

    Tipe ini terutama digunakan untuk komunikasi dalam kluster. Penemuan layanan antar instans hanya didukung untuk layanan ClusterIP. Dengan menggunakan Headless Service, Anda dapat berinteraksi dengan mekanisme penemuan layanan lain tanpa bergantung pada penemuan layanan dan load balancing berbasis ClusterIP bawaan Kubernetes.

    LoadBalancer

    Tipe ini terintegrasi dengan Classic Load Balancer (CLB) dan Network Load Balancer (NLB) Alibaba Cloud untuk mengekspos aplikasi dalam kluster. Mode ini menyediakan ketersediaan dan performa yang lebih tinggi dibandingkan mode NodePort.

    1. Pilih Server Load Balancer sebagai tipe layanan.

    2. Pilih CLB sebagai tipe load balancer dan pilih Create Resource.

    3. Pada bagian drop-down Create CLB Instance, sesuaikan pengaturan sesuai kebutuhan. Atur Billing Method menjadi Pay-by-specification.

    External Traffic Policy

    Anda dapat mengatur External Traffic Policy hanya ketika Server Load Balancer diatur ke Server Load Balancer.

    • Local: Trafik hanya diarahkan ke Pod pada node yang menerima trafik tersebut.

    • Cluster: Trafik dapat diteruskan ke Pod pada node lain dalam kluster.

    Local

    Backend

    Pilih aplikasi backend yang akan di-bind ke layanan. Jika Anda tidak mengaitkan deployment, sistem tidak akan membuat objek Endpoints. Untuk informasi selengkapnya, lihat services-without-selectors.

    Name: app

    Value: nginx

    Port Mapping

    Tambahkan port layanan (berkorespondensi dengan bidang port dalam file YAML layanan) dan port kontainer (berkorespondensi dengan bidang targetPort dalam file YAML layanan). Port kontainer harus sesuai dengan port yang diekspos oleh pod backend.

    80

    Annotations

    Tambahkan Annotation ke layanan untuk mengonfigurasi parameter load balancer. Untuk informasi selengkapnya, lihat Gunakan Annotations untuk mengonfigurasi Classic Load Balancer (CLB).

    Penting

    Jangan menggunakan kembali instans load balancer milik API Server kluster. Jika dilakukan, kluster mungkin menjadi tidak dapat diakses.

    Dalam contoh ini, metode penagihan layanan diatur ke pay-by-bandwidth dan bandwidth dibatasi hingga 2 Mbit/s untuk mengontrol trafik. Anotasi tersebut adalah sebagai berikut:

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: paybybandwidth

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: 2

    Label

    Tambahkan label untuk mengidentifikasi layanan.

    Tidak ada

kubectl

  1. Buat file bernama my-nginx-svc.yaml dengan konten berikut.

    Pastikan nilai bidang selector (app: nginx dalam contoh ini) dalam manifes layanan sesuai dengan nilai bidang matchLabels dalam Deployment backend. Hal ini mengaitkan layanan dengan Deployment 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: LoadBalancer
  2. Terapkan layanan:

    kubectl apply -f my-nginx-svc.yaml
  3. Konfirmasi bahwa layanan memiliki IP eksternal:

    kubectl get svc my-nginx-svc

    Output 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   5m
  4. Akses aplikasi:

    curl <YOUR-EXTERNAL-IP>    # Ganti dengan IP eksternal dari langkah sebelumnya

    Output yang diharapkan:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    ...
    </html>