All Products
Search
Document Center

Server Load Balancer:Konfigurasi NLB dengan anotasi

Last Updated:May 20, 2026

Anda dapat menggunakan anotasi dalam file YAML Service untuk mengaktifkan fitur load balancing tambahan pada Network Load Balancer (NLB), seperti menentukan jenis jaringan NLB, mengaktifkan perlindungan modifikasi, dan mengonfigurasi otentikasi timbal balik. Topik ini menjelaskan cara menggunakan anotasi tersebut untuk mengonfigurasi NLB. Konfigurasi dikelompokkan berdasarkan tiga jenis resource: instans NLB, listener, dan grup server.

Indeks

Kategori

Kategori fitur

Tautan konfigurasi

Prasyarat

Operasi NLB

Creation

Instance configuration

Operasi listener

Creation

Listener configuration

Security configuration

Operasi grup server

Server configuration

Catatan

  • Pastikan kluster Anda menggunakan versi v1.24 atau lebih baru dan add-on Cloud Controller Manager (CCM) menggunakan versi v2.5.0 atau lebih baru. Untuk meningkatkan kluster, lihat Tingkatkan kluster secara manual; untuk meningkatkan add-on, lihat Kelola add-on.

  • Dalam definisi Service, atur spec.loadBalancerClass ke alibabacloud.com/nlb. Jika parameter ini tidak ditentukan, Classic Load Balancer (CLB) akan dibuat secara default.

  • Setelah Service dibuat, Anda tidak dapat mengubah field spec.loadBalancerClass. Anda tidak dapat mengonversi jenis load balancer dari CLB ke NLB atau sebaliknya.

  • Anda tidak dapat mengelola instans NLB di Konsol ACK. Anda harus menggunakan perintah kubectl untuk melakukan semua operasi manajemen.

Operasi NLB

Buat NLB publik

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Deskripsi

Versi CCM yang didukung

Menentukan zona, vSwitch, alamat IP privat, dan informasi EIP untuk NLB. Formatnya sebagai berikut:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Pisahkan beberapa entri dengan koma (,).

  • Zona dan ID vSwitch: Wajib. Tentukan minimal dua, misalnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Untuk daftar wilayah dan zona yang didukung untuk NLB, lihat Konsol NLB.

  • Alamat IP privat: Opsional.

  • ID instans EIP: Opsional.

Zona dan ID vSwitch: v2.5.0 atau lebih baru

alamat IP privat dan EIP: v2.12.1 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Buat NLB privat

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type

Deskripsi

Versi CCM yang didukung

Menentukan jenis jaringan NLB. Anda dapat mengubah nilai anotasi ini untuk beralih antara NLB publik dan privat. Nilai yang valid:

  • internet: NLB publik.

  • intranet: NLB privat.

Default: internet

Anda dapat login ke Konsol NLB untuk melihat wilayah dan zona yang didukung. Minimal dua zona diperlukan. Beberapa zona dipisahkan dengan koma, misalnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Tentukan alamat IP privat

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Deskripsi

Versi CCM yang didukung

Menentukan zona, vSwitch, alamat IP privat, dan informasi EIP untuk NLB. Formatnya sebagai berikut:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Pisahkan beberapa entri dengan koma (,).

  • Zona dan ID vSwitch: Wajib. Tentukan minimal dua pasang. Misalnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Untuk daftar wilayah dan zona yang didukung untuk NLB, lihat Konsol NLB.

  • Alamat IP privat: Opsional.

  • ID instans EIP: Opsional.

  • Zona dan ID vSwitch: v2.5.0 atau lebih baru

  • alamat IP privat dan EIP: v2.12.1 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    # Contohnya, cn-hangzhou-k:vsw-i123456:10.1.0.1,cn-hangzhou-j:vsw-j654321:10.2.0.1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}:${private-ipv4-A},${zone-B}:${vsw-B}:${private-ipv4-B}"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Tentukan ID instans EIP

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

Deskripsi

Versi CCM yang didukung

Menentukan zona, vSwitch, alamat IP privat, dan informasi EIP untuk NLB. Formatnya sebagai berikut:

{zone}:{vSwitchID}:{privateIPAddress}:{EIPInstanceID}. Pisahkan beberapa entri dengan koma (,).

  • Zona dan ID vSwitch: Wajib. Tentukan minimal dua pasang, misalnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.

    Untuk daftar wilayah dan zona yang didukung untuk NLB, lihat Konsol NLB.

  • Alamat IP privat: Opsional.

  • ID instans EIP: Opsional.

Zona dan ID vSwitch: v2.5.0 atau lebih baru

alamat IP privat dan EIP: v2.12.1 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    # Jika Anda tidak memerlukan alamat IP privat, biarkan kolom alamat IP privat kosong.
    # Contohnya, cn-hangzhou-k:vsw-i123456::eip-12345,cn-hangzhou-j:vsw-j654321::eip-54321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}::${eip-A},${zone-B}:${vsw-B}::${eip-B}"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Tentukan nama load balancer

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

Deskripsi

Versi CCM yang didukung

Menentukan nama instans load balancer. Nama harus terdiri dari 2 hingga 128 karakter, dimulai dengan huruf atau karakter Tionghoa, dan dapat berisi angka, titik (.), garis bawah (_), dan tanda hubung (-).

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # Nama instans NLB.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Tentukan kelompok sumber daya

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id

Deskripsi

Versi CCM yang didukung

Menentukan kelompok sumber daya untuk load balancer. ID kelompok sumber daya tidak dapat diubah setelah ditetapkan.

Anda dapat menemukan ID kelompok sumber daya di Konsol Resource Management.

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id:  "${your-resource-group-id}" # ID kelompok sumber daya.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Buat NLB dual-stack

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

Untuk menyambungkan server backend IPv6, lihat Sambungkan server backend IPv6.

Deskripsi

Versi CCM yang didukung

Mode kube-proxy kluster harus IPVS.

Menentukan versi protokol IP untuk NLB. Versi protokol IP tidak dapat diubah setelah pembuatan. Nilai yang valid:

  • ipv4: IPv4.

  • DualStack: Mendukung IPv4 dan IPv6.

    • Kedua vSwitch yang ditentukan dalam service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps harus memiliki IPv6 yang diaktifkan.

    • Alamat IPv6 yang dihasilkan hanya dapat diakses dari lingkungan yang mendukung IPv6.

Default: ipv4

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Tambahkan tag tambahan

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

Deskripsi

Versi CCM yang didukung

Anda dapat menambahkan tag tambahan. Gunakan koma (,) untuk memisahkan beberapa tag. Misalnya, k1=v1,k2=v2. Di versi 2.10.0 dan lebih baru, Anda dapat memodifikasi tag instans yang sudah ada dan digunakan kembali.

Penting

Setelah Anda menambahkan anotasi ini, semua modifikasi tag manual yang dilakukan pada instans load balancer di konsol akan ditimpa.

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Gunakan load balancer yang sudah ada

Penting

Jangan menambahkan atau memodifikasi anotasi reuse untuk Service LoadBalancer yang sudah ada. Melakukannya dapat menyebabkan kegagalan reuse atau mencegah load balancer yang dibuat oleh CCM dilepas.

Anotasi: Beberapa anotasi digunakan, seperti yang dijelaskan dalam tabel berikut.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id

Menentukan ID load balancer yang sudah ada.

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners

Menentukan apakah akan menyinkronkan konfigurasi listener NLB berdasarkan konfigurasi Service. Nilai yang valid:

  • true: CCM membuat, memperbarui, dan menghapus listener NLB berdasarkan konfigurasi Service.

  • false: CCM tidak memproses listener NLB.

Default: false

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # ID instans NLB.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Bind paket bandwidth bersama

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id

Deskripsi

Versi CCM yang didukung

Menentukan ID paket bandwidth bersama yang akan di-bind.

Anda dapat menemukan ID paket bandwidth bersama di Konsol VPC.

v2.9.1 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Konfigurasi penerusan lintas zona

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled

Deskripsi

Versi CCM yang didukung

Menentukan apakah akan mengaktifkan penerusan lintas zona. Nilai yang valid:

  • on

  • off

Default: on

v2.13.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled: "off" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Konfigurasi daftar izin alamat IP sumber

Field: .spec.loadBalancerRanges

Deskripsi

Versi CCM yang didukung

Fitur ini hanya berlaku untuk instans NLB yang dibuat dan dikelola oleh CCM. Fitur ini tidak didukung untuk instans yang digunakan kembali.

Saat Anda mengonfigurasi field ini, CCM secara otomatis membuat grup keamanan, menetapkan aturan akses yang diperlukan, dan mengaitkan grup keamanan tersebut dengan instans NLB. Jika Anda tidak mengonfigurasi field ini atau membiarkannya kosong, tidak ada grup keamanan yang dikaitkan.

Default: Kosong

Penting
  • Menambahkan atau memodifikasi field ini akan menimpa asosiasi grup keamanan yang ada pada NLB. Jika grup keamanan lain dikaitkan secara manual dengan NLB, lakukan dengan hati-hati.

  • Jangan memodifikasi grup keamanan atau tag-nya yang dibuat oleh CCM. Jika tidak, asosiasi dapat dihapus atau aturannya ditimpa.

v2.14.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
  name: nginx
  namespace: default
spec:
  # Tentukan blok CIDR alamat IP sumber yang diizinkan.
  loadBalancerSourceRanges:
    - 10.0.0.0/8
    - 172.16.0.0/16
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Tentukan jenis jaringan IPv6

Anotasi: Beberapa anotasi digunakan, seperti yang dijelaskan dalam tabel berikut.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

Mode kube-proxy kluster harus IPVS. Anotasi ini menentukan versi protokol IP untuk NLB. Versi protokol IP tidak dapat diubah setelah pembuatan. Nilai yang valid:

  • ipv4: IPv4.

  • DualStack: Mendukung IPv4 dan IPv6.

    • Kedua vSwitch yang ditentukan dalam service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps harus memiliki IPv6 yang diaktifkan.

    • Alamat IPv6 yang dihasilkan hanya dapat diakses dari lingkungan yang mendukung IPv6.

Default: ipv4

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type

Menentukan jenis jaringan alamat IPv6 NLB. Nilai yang valid:

  • intranet: IPv6 privat.

  • internet: IPv6 publik.

Default: intranet

Catatan

Untuk menggunakan alamat IPv6 publik, gateway IPv6 harus ada di VPC tempat instans NLB ditempatkan. Untuk informasi selengkapnya, lihat Buat dan kelola gateway IPv6.

v2.9.1 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type: internet # Tentukan jenis jaringan IPv6 sebagai publik.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Operasi listener

Atur grup keamanan listener

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids

Deskripsi

Versi CCM yang didukung

Menentukan ID grup keamanan yang akan dikaitkan dengan listener. Pisahkan beberapa ID dengan koma (,), misalnya, sg-aaaaa,sg-bbbbb.

v2.6.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # Pisahkan beberapa ID grup keamanan dengan koma (,).
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Konfigurasi listener TCP dan UDP

Deskripsi

Versi CCM yang didukung

Fitur ini memerlukan Kubernetes v1.24 atau lebih baru. Untuk informasi selengkapnya tentang peningkatan kluster, lihat Tingkatkan kluster Kubernetes ACK.

Tidak tersedia

apiVersion: v1
kind: Service
metadata:
  annotations:
      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 81
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Buat listener TCP

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Buat listener UDP

Catatan

Jika Anda tidak menentukan pemeriksaan kesehatan saat membuat listener UDP, pemeriksaan kesehatan TCP akan diaktifkan secara default untuk grup server. Untuk listener UDP, kami merekomendasikan menggunakan anotasi untuk secara eksplisit menentukan pemeriksaan kesehatan UDP atau menonaktifkan pemeriksaan kesehatan.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 80
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Buat listener TCPSSL

Anotasi: Lihat tabel berikut untuk anotasi yang diperlukan.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Menentukan protokol listener. Untuk menentukan beberapa protokol, pisahkan dengan koma (,), misalnya, TCP:80,TCPSSL:443.

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Untuk mendapatkan ID-nya, login ke Konsol Layanan Manajemen Sertifikat, buat sertifikat, dan temukan ID-nya di halaman SSL Certificate Management.

Gambar berikut menunjukkan contohnya:

image

Penting

Saat ini, listener TCP/SSL tidak mendukung grup server dengan pelestarian alamat IP klien diaktifkan. Artinya, Anda tidak dapat mengonfigurasi anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}" dan service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on" secara bersamaan. Jika Anda perlu mendapatkan alamat IP klien melalui NLB, lihat Dapatkan alamat IP klien asli di server backend melalui NLB.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Konfigurasi range port listener

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range

Deskripsi

Versi CCM yang didukung

Fitur ini memerlukan plugin jaringan Terway.

Anda dapat mengonfigurasi listener untuk mendengarkan pada range port tertentu. Instans NLB kemudian meneruskan trafik dari range port tersebut ke range port yang sama di server backend. Misalnya, jika Anda mengonfigurasi range port 80-100, trafik ke port 80 hingga 100 pada instans NLB diteruskan ke port 80 hingga 100 di server backend.

Formatnya adalah range-port:port-service. Pisahkan beberapa nilai dengan koma (,), misalnya, 80-100:80,400-500:443. Port dan range port untuk protokol yang sama tidak boleh tumpang tindih.

targetPort menentukan port pemeriksaan kesehatan untuk grup server dan harus berupa bilangan bulat dari 1 hingga 65535.

v2.11.4 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    # Konfigurasi listener untuk range port 80-100 dan 400-500.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range: "80-100:80,400-500:443"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    # Konfigurasi port ini dipetakan ke range 80-100.
    port: 80
    protocol: TCP
    # targetPort menentukan port pemeriksaan kesehatan untuk server backend dan harus berupa bilangan bulat.
    targetPort: 80
  - name: https
    # Konfigurasi port ini dipetakan ke range 400-500.
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Aktifkan otentikasi timbal balik

Anotasi: Lihat tabel berikut untuk anotasi yang diperlukan.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Menentukan protokol listener. Untuk menentukan beberapa protokol, pisahkan dengan koma (,), misalnya, TCP:80,TCPSSL:443.

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Untuk mendapatkan ID-nya, login ke Konsol Layanan Manajemen Sertifikat, buat sertifikat, dan temukan ID-nya di halaman SSL Certificate Management.

Gambar berikut menunjukkan contohnya:

image

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id

Untuk mendapatkan ID-nya, login ke Konsol Layanan Manajemen Sertifikat dan temukan ID-nya di detail sertifikat pada halaman PCA Certificate Management.

image

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert

Menentukan apakah akan mengaktifkan otentikasi timbal balik. Nilai yang valid:

  • on: Mengaktifkan otentikasi timbal balik.

  • off: Menonaktifkan otentikasi timbal balik.

Nilai default: off

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"   
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Atur kebijakan keamanan TLS

Anotasi: Lihat tabel berikut untuk anotasi yang diperlukan.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Menentukan protokol listener. Untuk menentukan beberapa protokol, pisahkan dengan koma (,), misalnya, TCP:80,TCPSSL:443.

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Untuk mendapatkan ID-nya, login ke Konsol Layanan Manajemen Sertifikat, buat sertifikat, dan temukan ID-nya di halaman SSL Certificate Management.

Gambar berikut menunjukkan contohnya:

image

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy

ID kebijakan keamanan TLS. Anda dapat menggunakan kebijakan keamanan yang ditentukan sistem atau kustom. Nilai yang valid:

  • tls_cipher_policy_1_0

  • tls_cipher_policy_1_1

  • tls_cipher_policy_1_2

  • tls_cipher_policy_1_2_strict

  • tls_cipher_policy_1_2_strict_with_1_3

Nilai default: tls_cipher_policy_1_0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Aktifkan Proxy Protocol

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

Deskripsi

Versi CCM yang didukung

Menentukan apakah akan menggunakan Proxy Protocol untuk meneruskan alamat IP klien ke server backend. Nilai yang valid:

  • on: Mengaktifkan fitur.

  • off: Menonaktifkan fitur.

Nilai default: off

Penting

Sebelum mengaktifkan Proxy Protocol, pastikan layanan backend Anda mendukung Proxy Protocol v2. Jika tidak, koneksi akan gagal. Konfigurasikan parameter ini dengan hati-hati.

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Kirim informasi tambahan melalui Proxy Protocol

Anotasi: Lihat tabel berikut untuk anotasi yang diperlukan.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

Menentukan apakah akan menggunakan Proxy Protocol untuk meneruskan alamat IP klien ke server backend. Nilai yang valid:

  • on: Mengaktifkan fitur.

  • off: Menonaktifkan fitur.

Nilai default: off

Penting

Sebelum mengaktifkan Proxy Protocol, pastikan layanan backend Anda mendukung Proxy Protocol v2. Jika tidak, koneksi akan gagal. Konfigurasikan parameter ini dengan hati-hati.

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled

Menentukan apakah akan menggunakan Proxy Protocol untuk meneruskan VpcId ke server backend. Nilai yang valid:

  • on: Mengaktifkan fitur.

  • off: Menonaktifkan fitur.

Nilai default: off

v2.9.1 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled

Menentukan apakah akan menggunakan Proxy Protocol untuk meneruskan PrivateLinkEpId ke server backend. Nilai yang valid:

  • on: Mengaktifkan fitur.

  • off: Menonaktifkan fitur.

Nilai default: off

v2.9.1 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled

Menentukan apakah akan menggunakan Proxy Protocol untuk meneruskan PrivateLinkEpsId ke server backend. Nilai yang valid:

  • on: Mengaktifkan fitur.

  • off: Menonaktifkan fitur.

Nilai default: off

v2.9.1 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Atur batas laju koneksi listener

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps

Deskripsi

Versi CCM yang didukung

Jumlah maksimum koneksi baru per detik untuk instans Network Load Balancer (NLB). Nilainya harus berupa bilangan bulat dari 0 hingga 1.000.000. Nilai 0 menunjukkan tidak ada batasan.

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Atur timeout idle listener

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout

Deskripsi

Versi CCM yang didukung

Timeout koneksi idle dalam satuan detik. Nilai yang valid: 10 hingga 900.

Nilai default: 900

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Atur kebijakan ALPN

Anotasi: Lihat tabel berikut untuk anotasi yang diperlukan.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Menentukan protokol listener. Untuk menentukan beberapa protokol, pisahkan dengan koma (,), misalnya, TCP:80,TCPSSL:443.

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Untuk mendapatkan ID-nya, login ke Konsol Layanan Manajemen Sertifikat, buat sertifikat, dan temukan ID-nya di halaman SSL Certificate Management.

Gambar berikut menunjukkan contohnya:

image

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn

Menentukan apakah akan mengaktifkan Application-Layer Protocol Negotiation (ALPN). Nilai yang valid:

  • on: Mengaktifkan ALPN.

  • off: Menonaktifkan ALPN.

Nilai default: off

v2.10.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy

Kebijakan ALPN. Nilai yang valid:

  • HTTP1Only: Hanya menegosiasikan protokol HTTP/1.x. Prioritas: HTTP/1.1 > HTTP/1.0.

  • HTTP2Only: Hanya menegosiasikan protokol HTTP/2.0.

  • HTTP2Optional: Memrioritaskan protokol HTTP/1.x tetapi juga menerima protokol HTTP/2.0. Prioritas: HTTP/1.1 > HTTP/1.0 > HTTP/2.0.

  • HTTP2Preferred: Memrioritaskan protokol HTTP/2 tetapi juga menerima protokol HTTP/1.x. Prioritas: HTTP/2.0 > HTTP/1.1 > HTTP/1.0.

Untuk informasi selengkapnya, lihat parameter AlpnPolicy dalam referensi API CreateListener.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy: "HTTP1Only" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Konfigurasi sertifikat tambahan

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

Menentukan protokol listener. Untuk menentukan beberapa protokol, pisahkan dengan koma (,), misalnya, TCP:80,TCPSSL:443.

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

Untuk mendapatkan ID-nya, login ke Konsol Layanan Manajemen Sertifikat, buat sertifikat, dan temukan ID-nya di halaman SSL Certificate Management.

Gambar berikut menunjukkan contohnya:

image

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids

ID sertifikat tambahan. Pisahkan beberapa ID sertifikat dengan koma (,). Untuk mendapatkan ID-nya, login ke Konsol Layanan Manajemen Sertifikat, buat sertifikat, dan temukan ID-nya di halaman SSL Certificate Management.

Gambar berikut menunjukkan contohnya:

image

v2.13.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids: "${CertIdentifier-1},${CertIdentifier-2}" # Pisahkan beberapa ID sertifikat tambahan dengan koma (,).
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Operasi umum untuk grup server

Algoritma penjadwalan

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler

Deskripsi

Versi CCM yang didukung

Algoritma penjadwalan. Nilai yang valid:

  • wrr: weighted round robin. Server backend dengan bobot lebih tinggi menerima lebih banyak permintaan.

  • rr: round robin. Permintaan didistribusikan ke server backend secara bergiliran.

  • sch: hash IP sumber. Permintaan dari alamat IP sumber yang sama selalu diarahkan ke server backend yang sama.

  • tch: hash empat-tuple. Permintaan diarahkan berdasarkan hash konsisten dari empat-tuple (alamat IP sumber, alamat IP tujuan, port sumber, dan port tujuan). Ini memastikan bahwa trafik dari aliran yang sama selalu diarahkan ke server backend yang sama.

  • wlc: jumlah koneksi paling sedikit dengan bobot. Permintaan didistribusikan berdasarkan bobot dan beban saat ini (jumlah koneksi aktif) dari setiap server backend. Jika server backend memiliki bobot yang sama, server dengan koneksi aktif paling sedikit lebih mungkin menerima permintaan berikutnya.

Nilai default: wrr

Untuk informasi selengkapnya tentang nilai anotasi ini, lihat parameter Scheduler dalam referensi API CreateServerGroup.

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "sch"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Pengurasan koneksi

Anotasi: Beberapa anotasi tersedia, seperti yang dijelaskan dalam tabel berikut.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain

Menentukan apakah akan mengaktifkan pengurasan koneksi. Jika diaktifkan, perilaku berikut terjadi saat server backend dihapus atau gagal dalam pemeriksaan kesehatan:

  • on: Menjaga koneksi yang ada tetap aktif selama timeout yang ditentukan, memungkinkannya ditutup secara graceful.

  • off: Load balancer tidak menghentikan koneksi yang ada. Koneksi tersebut hanya ditutup saat klien memutuskan atau sesi berakhir.

Nilai default: off

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout

Periode timeout untuk pengurasan koneksi.

  • Unit: detik.

  • Nilai yang valid: 0 hingga 900. Nilai 0 menghentikan koneksi segera.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "30"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Pelestarian IP klien

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip

Deskripsi

Versi CCM yang didukung

Menentukan apakah akan mengaktifkan pelestarian IP klien. Nilai yang valid:

  • on: Mengaktifkan fitur.

  • off: Menonaktifkan fitur.

Nilai default: on

v2.5.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Pemeriksaan kesehatan TCP

Anotasi: Beberapa anotasi tersedia, seperti yang dijelaskan dalam tabel berikut. Untuk mengonfigurasi pemeriksaan kesehatan TCP, semua anotasi berikut wajib digunakan. Secara default, pemeriksaan kesehatan diaktifkan untuk port TCP.

Anotasi

Deskripsi

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag

Menentukan apakah akan mengaktifkan pemeriksaan kesehatan. Nilai yang valid:

  • on: Mengaktifkan pemeriksaan kesehatan.

  • off: Menonaktifkan pemeriksaan kesehatan.

Nilai default: on

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type

Protokol pemeriksaan kesehatan. Nilai yang valid:

  • tcp

  • udp

  • http

Nilai default: tcp

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port

Port pada server backend yang digunakan untuk pemeriksaan kesehatan. Nilai yang valid: 0 hingga 65535. Nilai default 0 menunjukkan bahwa port server backend digunakan.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout

Waktu maksimum untuk menunggu respons pemeriksaan kesehatan. Unit: detik. Nilai yang valid: 1 hingga 300.

Nilai default: 5

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold

Jumlah pemeriksaan kesehatan sukses berturut-turut yang diperlukan agar server backend dianggap sehat. Nilai yang valid: 2 hingga 10.

Nilai default: 2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold

Jumlah pemeriksaan kesehatan gagal berturut-turut yang diperlukan agar server backend dianggap tidak sehat. Nilai yang valid: 2 hingga 10.

Nilai default: 2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval

Interval antara pemeriksaan kesehatan berturut-turut. Unit: detik. Nilai yang valid: 1 hingga 50.

Nilai default: 5

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "tcp"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "8"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Pemeriksaan kesehatan UDP

Anotasi: Beberapa anotasi tersedia, dan semuanya wajib digunakan. Untuk menggunakan pemeriksaan kesehatan UDP, pastikan semua port yang didefinisikan dalam Service menggunakan protokol UDP.

Anotasi

Deskripsi

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag

Menentukan apakah akan mengaktifkan pemeriksaan kesehatan. Nilai yang valid:

  • on: Mengaktifkan pemeriksaan kesehatan.

  • off: Menonaktifkan pemeriksaan kesehatan.

Nilai default: on

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type

Protokol pemeriksaan kesehatan. Nilai yang valid:

  • tcp

  • udp

  • http

Nilai default: tcp

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port

Port server yang digunakan untuk pemeriksaan kesehatan. Nilai yang valid: [0, 65535]. Nilai default adalah 0, yang menunjukkan bahwa port aktual server backend digunakan.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout

Timeout respons untuk satu pemeriksaan kesehatan. Jika terjadi timeout, pemeriksaan saat ini dianggap gagal. Unit: detik. Rentang nilai: [1, 300]. Nilai default: 5.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold

Server backend dianggap sehat setelah melewati jumlah pemeriksaan kesehatan sukses berturut-turut yang ditentukan. Nilai yang valid: [2, 10]. Nilai default: 2.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold

Nilai default: 2

Server backend dianggap tidak sehat setelah jumlah kegagalan pemeriksaan kesehatan berturut-turut ini. Nilai yang valid: [2, 10]. Nilai default: 2.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval

Interval antara pemeriksaan kesehatan berturut-turut. Unit: detik. Rentang nilai: [1, 300]. Nilai default: 5.

Nilai ini harus lebih besar dari nilai health-check-connect-timeout. Jika tidak, pemeriksaan kesehatan mungkin tidak berfungsi dengan benar.
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "udp"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "3"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Pemeriksaan kesehatan HTTP

Anotasi: Beberapa anotasi tersedia, seperti yang dijelaskan dalam tabel berikut. Untuk mengonfigurasi pemeriksaan kesehatan HTTP, semua anotasi berikut wajib digunakan. Secara default, pemeriksaan kesehatan menggunakan protokol TCP.

Anotasi

Deskripsi

Versi CCM yang didukung

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag

Menentukan apakah akan mengaktifkan pemeriksaan kesehatan. Nilai yang valid:

  • on: Mengaktifkan pemeriksaan kesehatan.

  • off: Menonaktifkan pemeriksaan kesehatan.

Nilai default: on

v2.5.0 atau lebih baru

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type

Protokol pemeriksaan kesehatan. Nilai yang valid:

  • tcp

  • udp

  • http

Nilai default: tcp

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri

Jalur untuk pemeriksaan kesehatan. Harus terdiri dari 1 hingga 80 karakter, dimulai dengan garis miring (/), dan dapat berisi huruf, angka, serta karakter khusus berikut: - . _ % / ? # &. Untuk informasi selengkapnya, lihat CreateServerGroup.

Catatan

Parameter ini hanya berlaku saat service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type diatur ke http.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain

Nama domain yang digunakan untuk pemeriksaan kesehatan. Nilai yang valid:

  • $SERVER_IP: Alamat IP privat server backend.

  • domain: Nama domain tertentu. Nama domain harus terdiri dari 1 hingga 80 karakter dan hanya dapat berisi huruf kecil, angka, tanda hubung (-), dan titik (.).

Catatan

Parameter ini hanya berlaku saat service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type diatur ke http.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port

Port pada server backend yang digunakan untuk pemeriksaan kesehatan. Nilai yang valid: 0 hingga 65535. Nilai default 0 menunjukkan bahwa port server backend digunakan.

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout

Waktu maksimum untuk menunggu respons pemeriksaan kesehatan. Unit: detik. Nilai yang valid: 1 hingga 300.

Nilai default: 5

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold

Jumlah pemeriksaan kesehatan sukses berturut-turut yang diperlukan agar server backend dianggap sehat. Nilai yang valid: 2 hingga 10.

Nilai default: 2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold

Jumlah pemeriksaan kesehatan gagal berturut-turut yang diperlukan agar server backend dianggap tidak sehat. Nilai yang valid: 2 hingga 10.

Nilai default: 2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval

Interval antara pemeriksaan kesehatan berturut-turut. Unit: detik. Nilai yang valid: 1 hingga 50.

Nilai default: 5

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method

Metode pemeriksaan kesehatan. Nilai yang valid:

  • GET

  • HEAD

Catatan

Parameter ini hanya berlaku saat service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type diatur ke http.

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "http"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri: "/test/index.html"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.test.com"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
    # Atur metode pemeriksaan kesehatan. Anotasi ini opsional.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Jenis grup server

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type

Deskripsi

Versi CCM yang didukung

Jenis grup server. Nilai yang valid:

  • Ip: Alamat IP. Anda dapat menambahkan server backend dengan menentukan alamat IP-nya.

  • Instance (default): Anda dapat menambahkan instans ECS atau elastic network interfaces (ENIs) sebagai server backend.

Nilai default: Instance

Untuk informasi selengkapnya tentang jenis grup server NLB, lihat Grup server.

v2.8.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Server backend IPv6

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-ip-version

Deskripsi

Versi CCM yang didukung

Versi IP server backend dalam grup server.

  • ipv4: Grup server hanya berisi server backend IPv4.

  • ipv6: Grup server hanya berisi server backend IPv6.

  • DualStack: Grup server berisi server backend IPv4 dan IPv6, dan afinitas versi IP diaktifkan secara otomatis.

Nilai default: ipv4

Catatan

Saat Anda menambahkan server backend IPv4 dan IPv6 ke grup server, penggunaan kuota pod menjadi dua kali lipat.

  • ipv6: v2.9.1 atau lebih baru

  • DualStack: v2.14.0 atau lebih baru

Gunakan kembali grup server

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port

Anotasi ini memungkinkan Anda menggunakan kembali grup server yang sudah ada. Anotasi ini hanya berlaku saat Anda menggunakan kembali instans NLB yang sudah ada. Untuk contoh, lihat Sebarkan layanan lintas kluster dengan menggunakan kembali load balancer.

Bobot trafik layanan

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

Dalam skenario di mana beberapa Service menggunakan kembali instans NLB yang sama, Anda dapat menggunakan anotasi ini untuk mengatur bobot trafik untuk Service saat ini. Anotasi ini hanya berlaku saat Anda menggunakan kembali grup server yang sudah ada. Untuk contoh, lihat Sebarkan layanan lintas kluster dengan menggunakan kembali load balancer.

Mengabaikan pembaruan bobot

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update

Deskripsi

Versi CCM yang didukung

Saat diatur ke on, CCM tidak memperbarui bobot server backend dalam grup server selama sinkronisasi Service. Ini berguna jika Anda mengelola bobot server backend menggunakan mekanisme lain.

  • on

  • off

Nilai default: off

v2.11.1 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Bobot default server backend

Anotasi: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight

Deskripsi

Versi CCM yang didukung

Bobot default server backend dalam grup server. Bobot yang lebih tinggi berarti server menerima bagian trafik masuk yang lebih besar.

Jumlahnya meningkat.

Nilai yang valid: 0 hingga 100. Jika anotasi ini tidak dikonfigurasi, sistem menggunakan bobot default berdasarkan jenis jaringan.

Konfigurasi ini tidak berlaku saat instans backend adalah instans ECS dan externalTrafficPolicy Service diatur ke Local.

v2.14.0 atau lebih baru

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Contohnya, cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    # Atur bobot default server dalam grup server menjadi 35.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer