All Products
Search
Document Center

Container Compute Service:Menampilkan Aplikasi Menggunakan Layanan yang Secara Otomatis Membuat Load Balancer

Last Updated:Apr 21, 2026

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

Catatan

  • CCM hanya mengonfigurasi load balancer untuk layanan tipe Type=LoadBalancer. CCM tidak mengonfigurasi load balancer untuk jenis layanan lainnya.

  • Penting

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

  • CCM menggunakan API deklaratif dan secara otomatis memperbarui konfigurasi load balancer berdasarkan konfigurasi layanan. Akibatnya, konfigurasi apa pun yang Anda ubah di Konsol Server Load Balancer berisiko tertimpa.

    Penting

    Jangan secara manual mengubah konfigurasi load balancer yang dikelola oleh Kubernetes di Konsol Server Load Balancer. Perubahan Anda mungkin tertimpa, yang dapat menyebabkan layanan menjadi tidak dapat diakses.

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

Batasan kuota

Langkah 1: Menyebarkan aplikasi sampel

Anda dapat menyebarkan aplikasi dari baris perintah kubectl.

  1. Buat file bernama my-nginx.yaml yang berisi konten YAML berikut untuk aplikasi sampel.

    apiVersion: apps/v1 # untuk versi sebelum 1.8.0 gunakan apps/v1beta1
    kind: Deployment
    metadata:
      name: my-nginx    # Nama aplikasi sampel.
      labels:
        app: nginx
    spec:
      replicas: 3       # Jumlah replika.
      selector:
        matchLabels:
          app: nginx     # Nilai ini harus cocok dengan pemilih Layanan yang mengekspos aplikasi ini.
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest     # Ganti ini dengan alamat citra aktual. Formatnya adalah <image_name:tags>.
            ports:
            - containerPort: 80                                # Port ini harus diekspos dalam Layanan.
  2. Sebarkan aplikasi sampel my-nginx.

    kubectl apply -f my-nginx.yaml
  3. Konfirmasikan bahwa aplikasi sampel dalam keadaan Normal.

    kubectl get deployment my-nginx

    Contoh keluaran:

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

Langkah 2: Menampilkan aplikasi menggunakan layanan yang secara otomatis membuat load balancer

Anda dapat membuat layanan tipe LoadBalancer menggunakan konsol atau kubectl untuk menampilkan aplikasi.

Gunakan konsol

  1. Masuk ke konsol ACS. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik ID-nya. Di panel navigasi di sebelah kiri halaman detail kluster, pilih Network > Services.

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

  4. Di kotak dialog Create Service, atur parameter untuk layanan.

  5. Parameter

    Deskripsi

    Contoh

    Service Name

    Nama Layanan.

    my-nginx-svc

    Service Type

    Pilih tipe Layanan. Jaringan Layanan mendukung mode berikut untuk jenis klien dan sumber akses yang berbeda:

    ClusterIP

    Mode ini terutama untuk komunikasi internal dalam kluster. Penemuan layanan antar instance layanan didukung hanya ketika tipe layanan diatur ke ClusterIP virtual. Menggunakan Headless Service, Anda dapat berinteraksi dengan mekanisme penemuan layanan lain tanpa bergantung pada penemuan layanan dan penyeimbangan beban bawaan berbasis ClusterIP yang disediakan oleh Kubernetes.

    LoadBalancer

    Mode ini mengekspos aplikasi kluster internal ke internet dengan mengintegrasikan dengan Alibaba Cloud Classic Load Balancer (CLB) dan Network Load Balancer (NLB). Mode ini memberikan ketersediaan dan performa yang lebih tinggi dibandingkan mode NodePort.

      External Traffic Policy

      Anda dapat mengatur External Traffic Policy hanya ketika tipe layanan adalah Node Port atau Server Load Balancer.

      • Local: merutekan trafik hanya ke pod node saat ini.

      • Cluster: Meneruskan trafik ke pod di node lain dalam kluster.

      Local

      Service Association

      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 port dalam File YAML dan port kontainer sesuai dengan bidang targetPort dalam File YAML. Port kontainer harus sama dengan port yang diekspos di pod backend.

      80

      Annotations

      Tambahkan anotasi ke layanan untuk mengonfigurasi parameter load balancer. Untuk informasi lebih lanjut, lihat Konfigurasikan instans CLB menggunakan anotasi.

      Penting

      Jangan gunakan kembali instans SLB dari API Server kluster. Jika tidak, akses kluster mungkin menjadi abnormal.

      Dalam contoh ini, metode penagihan untuk layanan diatur ke bayar-per-bandwidth dan puncak bandwidth diatur ke 2 Mbit/s untuk mengontrol lalu lintas layanan. Anotasinya adalah sebagai berikut:

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

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

      Labels

      Label yang akan ditambahkan ke Layanan, yang mengidentifikasi Layanan.

      Tidak ada

    Gunakan kubectl

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

      Pastikan nilai bidang selector (app: nginx dalam contoh ini) cocok dengan nilai bidang matchLabels dalam penerapan aplikasi backend. Ini 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: LoadBalancer
    2. Jalankan perintah berikut untuk membuat layanan bernama my-nginx-svc dan gunakan untuk menampilkan aplikasi.

      kubectl apply -f my-nginx-svc.yaml
    3. Jalankan perintah berikut untuk mengonfirmasi bahwa layanan LoadBalancer telah dibuat.

      kubectl get svc my-nginx-svc

      Keluaran yang diharapkan:

      NAME           TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE
      my-nginx-svc   LoadBalancer   172.21.5.82   39.106.XX.XX     80/TCP   5m
    4. Jalankan perintah berikut untuk mengakses aplikasi sampel.

      curl <YOUR-External-IP> # Ganti <YOUR-External-IP> dengan alamat IP eksternal yang diperoleh pada langkah sebelumnya.

      Keluaran 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
      berfungsi. Konfigurasi lebih lanjut diperlukan.</p>
      
      <p>Untuk dokumentasi online dan dukungan silakan kunjungi
      <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.