All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasi ELB umum menggunakan anotasi

Last Updated:Mar 27, 2026

Gunakan anotasi dalam file YAML Service untuk mengonfigurasi instans Edge Load Balancer (ELB), listener, kelompok server backend, dan alamat IP elastis edge (edge EIP).

Semua kunci anotasi dalam topik ini menggunakan awalan service.beta.kubernetes.io/. Hanya sufiks yang ditampilkan dalam tabel.

Catatan penggunaan

  • Nilai anotasi bersifat case-sensitive. Gunakan huruf kecil.

  • Tetapkan type: LoadBalancer pada Service.

  • Tetapkan loadBalancerClass: alibabacloud.com/elb untuk menggunakan ELB.

Penting

Konfigurasi instans ELB tidak dapat diperbarui setelah instans dibuat. Untuk mengubah pengaturan tingkat instans apa pun, hapus Service tersebut dan buat ulang dengan nilai baru.

Konfigurasi Service dasar

Semua contoh dalam topik ini berdasarkan Service berikut. Service ini memilih kelompok node ENS berdasarkan label dan mengaktifkan topologi Service sehingga lalu lintas hanya diteruskan ke Pod di kelompok node yang ditentukan.

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool     # Aktifkan topologi Service.
    service.openyurt.io/nodepool-labelselector: key1=val1  # Pilih kelompok node ENS.
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb

Anotasi nodepool-labelselector menerima dua sintaks:

Sintaks Logika Contoh
key1=val1,key2=val2 AND — kelompok node harus memenuhi semua label env=prod,region=cn-north
key in (val1,val2) OR — kelompok node memenuhi salah satu nilai region in (cn-north,cn-south)

Konfigurasi instans ELB

Tentukan tipe instans dan metode penagihan

Untuk detail tipe instans dan harga, lihat CreateLoadBalancer dan Tipe instans dan penagihan.

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-spec Tipe instans ELB, misalnya, elb.s1.small. elb.s2.small
alibaba-cloud-loadbalancer-pay-type Metode penagihan. Hanya PostPaid (pay-as-you-go) yang didukung. PostPaid

Contoh:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool
  service.openyurt.io/nodepool-labelselector: key1=val1
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: elb.s1.small
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-pay-type: PostPaid

Tetapkan mode eksposur Service

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-address-type internet: mengekspos Service ke Internet (memerlukan instans ELB internal dan edge EIP). intranet: mengekspos Service ke jaringan pribadi (hanya memerlukan instans ELB internal). internet

Contoh:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool
  service.openyurt.io/nodepool-labelselector: key1=val1
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet

Konfigurasikan spesifikasi edge EIP (hanya untuk mode internet)

Ketika address-type bernilai internet, diperlukan instans ELB internal dan edge EIP.

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-eip-bandwidth Bandwidth maksimum edge EIP. Satuan: Mbit/s. 10
alibaba-cloud-loadbalancer-eip-isp ISP. Nilai: cmcc (China Mobile), unicom (China Unicom), elecom (China Telecom). Tidak ada
alibaba-cloud-loadbalancer-eip-instance-charge-type Metode penagihan EIP. Hanya PostPaid (pay-as-you-go) yang didukung. PostPaid
alibaba-cloud-loadbalancer-eip-internet-charge-type Metode penagihan bandwidth Internet. Hanya 95BandwidthByMonth (bayar berdasarkan persentil ke-95 bulanan) yang didukung. 95BandwidthByMonth

Contoh:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool        # Aktifkan topologi Service.
  service.openyurt.io/nodepool-labelselector: key1=val1 # Pilih kelompok node ENS.
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-bandwidth: "10"
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-isp: cmcc
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-instance-charge-type: "PostPaid"
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-eip-internet-charge-type: "95BandwidthByMonth"

Kelompok server backend

Tetapkan kebijakan traffic eksternal

Kebijakan traffic eksternal mengontrol node ENS mana yang menerima traffic:

  • Mode lokal (externalTrafficPolicy: Local): traffic hanya dialihkan ke node yang menjalankan Pod aplikasi. Tidak dapat digunakan ketika beberapa Service berbagi satu instans ELB.

  • Mode kluster (default): traffic didistribusikan ke semua node ENS dalam virtual private cloud (VPC). Diperlukan ketika beberapa Service berbagi satu instans ELB.

Contoh (mode lokal):

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool        # Aktifkan topologi Service.
    service.openyurt.io/nodepool-labelselector: key1=val1 # Pilih kelompok node ENS.
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb
  externalTrafficPolicy: Local

Tambahkan server backend berdasarkan label node

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-backend-label Label node yang akan ditambahkan sebagai server backend. Beberapa label menggunakan logika AND dan dipisahkan dengan koma, misalnya, k1=v1,k2=v2. T/A

Untuk mengecualikan node edge tertentu dari pool server backend, tambahkan label node.kubernetes.io/exclude-from-external-load-balancers=true ke node tersebut.

Contoh:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool
  service.openyurt.io/nodepool-labelselector: key1=val1
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: key2=val2

Tetapkan bobot server backend

Ketika listener menggunakan algoritma weighted round-robin (WRR), permintaan didistribusikan berdasarkan bobot server backend.

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-backend-weight Penetapan bobot dalam format base=<weight>,<nodeName>=<weight>. base menetapkan bobot default untuk semua server backend. Penggantian per node dipisahkan dengan koma. base=100

Contoh — tetapkan bobot default menjadi 50 dan ganti node1 menjadi 80 serta node2 menjadi 90:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool
  service.openyurt.io/nodepool-labelselector: key1=val1,key2=val2
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-weight: base=50,node1=80,node2=90

Listeners

EdgeControllerManager (ECM) secara otomatis membuat listener berdasarkan spec.ports. Port backend ditetapkan oleh kluster. Untuk menetapkan port backend tertentu, atur nodePort secara eksplisit:

spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    nodePort: 30080
    targetPort: 80

Tetapkan algoritma penjadwalan

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-scheduler Algoritma load balancing. rr

Algoritma yang didukung:

Nilai Algoritma Perilaku
rr Round robin Mendistribusikan permintaan secara merata ke semua server backend.
wrr Weighted round robin Server backend dengan bobot lebih tinggi menerima lebih banyak permintaan.
wlc Weighted least connections Mendistribusikan permintaan berdasarkan bobot dan jumlah koneksi saat ini.
sch Source IP consistent hashing Mengarahkan permintaan dari IP sumber yang sama ke server backend yang sama.
qch QUIC ID consistent hashing Mengarahkan permintaan dengan QUIC ID yang sama ke server backend yang sama.
iqch iQUIC CID consistent hashing Mengarahkan permintaan dengan byte ke-2, ke-3, dan ke-4 CID iQUIC yang sama ke server backend yang sama.

Contoh:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool
  service.openyurt.io/nodepool-labelselector: key1=val1
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: wrr

Konfigurasikan persistensi sesi (listener TCP)

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-persistence-timeout Durasi persistensi sesi dalam detik. Rentang valid: 0–3600. Tetapkan ke 0 untuk menonaktifkan. Ketika instans ELB memiliki beberapa listener TCP, pengaturan ini berlaku untuk semuanya. 0

Konfigurasikan timeout koneksi (listener TCP)

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-established-timeout Timeout koneksi TCP dalam detik. Rentang valid: 10–900. 500

Contoh:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool
  service.openyurt.io/nodepool-labelselector: key1=val1,key2=val2
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "900"

Konfigurasikan pemeriksaan kesehatan

Sufiks anotasi Deskripsi Default
alibaba-cloud-loadbalancer-healthy-threshold Jumlah pemeriksaan kesehatan berturut-turut yang harus berhasil untuk menandai server backend sebagai sehat. Rentang valid: 2–10. 3
alibaba-cloud-loadbalancer-unhealthy-threshold Jumlah kegagalan pemeriksaan kesehatan berturut-turut yang diperlukan untuk menandai server backend sebagai tidak sehat. Rentang valid: 2–10. 3
alibaba-cloud-loadbalancer-check-interval Interval antar pemeriksaan kesehatan dalam detik. Rentang valid: 2–10. 2
alibaba-cloud-loadbalancer-health-check-connect-timeout Timeout respons pemeriksaan kesehatan dalam detik. Jika server backend tidak merespons dalam periode ini, pemeriksaan ditandai sebagai gagal. Rentang valid: 1–300. 5

Contoh:

annotations:
  openyurt.io/topologyKeys: openyurt.io/nodepool
  service.openyurt.io/nodepool-labelselector: key1=val1,key2=val2
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "5"
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "5"
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-check-interval: "2"
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "5"

Konfigurasi lanjutan

Gunakan instans ELB yang sudah ada

Untuk menyambungkan instans ELB yang sudah ada ke Service, tentukan ID jaringan dan ID instans ELB.

  1. Terapkan Service dengan anotasi managed-by-user:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      namespace: default
      annotations:
        openyurt.io/topologyKeys: openyurt.io/nodepool        # Aktifkan topologi Layanan.
        service.openyurt.io/nodepool-labelselector: key1=val1
        service.openyurt.io/elb-force-override-listeners: "true"
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-managed-by-user: "true"
    spec:
      ports:
      - name: nginx-80
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
      loadBalancerClass: alibabacloud.com/elb
  2. Temukan PoolService yang sesuai dengan kelompok node target (VPC ENS) dan anotasikan dengan ID instans ELB:

    kubectl annotate ps {<SERVICENAME>-NodePoolID} service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id=<lb_ID>

    Ganti <SERVICENAME> dengan nama PoolService dari kelompok node (VPC ENS), dan ganti <lb_ID> dengan ID instans ELB.

Berbagi satu instans ELB di beberapa Service

Ketika beberapa Service berbagi satu instans ELB, semua kondisi berikut harus dipenuhi:

  • Tetapkan externalTrafficPolicy ke mode kluster (default).

  • Gunakan instans ELB yang dikelola sendiri dan tentukan dengan anotasi managed-by-user.

  • Jika diperlukan akses internet melalui EIP, buat dan kelola EIP secara manual.

  • Paksa timpa listener dengan menetapkan service.openyurt.io/elb-force-override-listeners: "true".

Contoh:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  annotations:
    openyurt.io/topologyKeys: openyurt.io/nodepool        # Aktifkan topologi Service.
    service.openyurt.io/nodepool-labelselector: key1=val1
    service.openyurt.io/elb-force-override-listeners: "true"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-managed-by-user: "true"
spec:
  ports:
  - name: nginx-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerClass: alibabacloud.com/elb