全部產品
Search
文件中心

Server Load Balancer:通過Annotation配置網路型負載平衡NLB

更新時間:Jun 05, 2025

在Service中使用網路型負載平衡NLB時,您可通過YAML檔案中的Annotation(註解)實現更多負載平衡功能,例如指定NLB網路類型、開啟配置修改保護、配置雙向認證等。本文將從NLB、監聽和伺服器組三種資源維度,介紹如何通過Service YAML檔案中的Annotation對NLB進行常見配置操作。

索引

分類

功能分類

配置連結

注意事項

NLB的典型操作

建立負載平衡

執行個體配置

安全配置

監聽的典型操作

建立監聽

監聽配置

安全配置

伺服器組的典型操作

伺服器配置

注意事項

  • 叢集版本為v1.24及以上且CCM(Cloud Controller Manager)版本不低於v2.5.0。如需升級叢集,請參見手動升級叢集;如需升級組件,請參見管理組件

  • Service中spec.loadBalancerClass需要指定為alibabacloud.com/nlb。如不指定,則預設建立傳統型負載平衡CLB

  • Service一旦建立後spec.loadBalancerClass不支援更改,CLB及NLB資源無法相互轉換。

  • 暫不支援通過Container Service控制台管理NLB,需使用kubectl命令操作。

NLB的典型操作

建立公網類型的NLB

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

描述

支援的CCM版本

指定NLB的可用性區域。

NLB支援的地區及可用性區域可以登入NLB控制台查看,至少需要兩個可用性區域。多個可用性區域間用逗號分隔,例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

建立私網類型的NLB

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type

描述

支援的CCM版本

指定NLB為私網類型。可以更改此Annotation取值,實現NLB的公私網轉變。取值:

  • internet:公網NLB。

  • intranet:私網NLB。

預設值:internet

NLB支援的地區及可用性區域可以登入NLB控制台查看,至少需要兩個可用性區域。多個可用性區域間用逗號分隔,例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

指定負載平衡名稱

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

描述

支援的CCM版本

指定均衡執行個體名稱。NLB名稱長度為2~128個英文或中文字元,必須以大小寫字母或中文開頭,可包含數字、點號(.)、底線(_)和虛線(-)。

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # 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

指定負載平衡所屬的資源群組

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id

描述

支援的CCM版本

指定負載平衡所屬的資源群組,資源群組ID指定後不可被修改。

可以登入阿里雲資源管理平台查詢資源群組ID。

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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。
  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

建立雙棧類型的NLB

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

描述

支援的CCM版本

指定NLB的協議版本。建立後,IP類型不可更改。使用時,叢集的kube-proxy代理模式需為IPVS。取值:

  • ipv4:IPv4類型。

  • DualStack:雙棧類型,同時支援IPv4和IPv6。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps中指定的兩個vSwitch均需開啟IPv6。

    • 產生的IPv6地址僅可在支援IPv6的環境中訪問。

預設值:ipv4

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

為負載平衡添加額外標籤

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

描述

支援的CCM版本

支援額外添加Tag標籤。多個Tag間使用英文半形逗號(,)分隔,例如k1=v1,k2=v2。v2.10.0及以上版本支援對已建立執行個體和複用執行個體的標籤進行修改。

重要

在Service上添加該註解指定額外標籤後,在控制台上對對應Server Load Balancer執行個體標籤進行的額外修改操作存在被覆蓋的風險。

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

使用已有的負載平衡

Annotation:多個,如下表所示。

Annotation

描述

支援的CCM版本

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

添加已有負載平衡的ID。

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

決定是否根據Service同步NLB監聽配置。取值:

  • true:CCM會根據Service配置,建立、更新、刪除NLB監聽。

  • false:CCM不會對NLB監聽做任何處理。

預設值:false

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # NLB的ID。
    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

綁定共用頻寬包

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id

描述

支援的CCM版本

綁定的共用頻寬包ID。

您可登入VPC控制台查詢共用頻寬包ID。

v2.9.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

開啟刪除保護

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection

描述

支援的CCM版本

是否開啟NLB刪除保護。取值:

  • on

  • off

預設值:on

重要

對於LoadBalancer類型的Service建立的負載平衡,如果手動在NLB控制台開啟了刪除保護,仍可通過kubectl delete svc {your-svc-name}的方式刪除Service關聯的負載平衡。

v2.9.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

開啟配置修改保護

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection

描述

支援的CCM版本

是否開啟NLB配置修改保護。取值:

  • ConsoleProtection

  • NonProtection

預設值:ConsoleProtection

v2.9.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
  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

指定IPv6公私網類型

Annotation:多個,如下表所示。

Annotation

描述

支援的CCM版本

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

指定NLB的協議版本。建立後,IP類型不可更改。使用時,叢集的kube-proxy代理模式需為IPVS。取值:

  • ipv4:IPv4類型。

  • DualStack:雙棧類型,同時支援IPv4和IPv6。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps中指定的兩個vSwitch均需開啟IPv6。

    • 產生的IPv6地址僅可在支援IPv6的環境中訪問。

預設值:ipv4

v2.5.0及以上版本

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

指定NLB的IPv6網路類型。取值:

  • intranet:私網IPv6

  • internet:公網IPv6

預設值:intranet

說明

啟用IPv6公網時,NLB執行個體所在的VPC下需要存在IPv6網關。詳情請見建立和管理IPv6網關

v2.9.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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 # 指定IPv6網路類型為公網
  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

刪除Service時保留自動建立的Server Load Balancer執行個體

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete

描述

支援的CCM版本

在刪除LoadBalancer類型的Service時,保留通過Service建立的NLB執行個體,並將NLB執行個體和伺服器組上的kubernetes.do.not.deleteack.aliyun.com標籤刪除。伺服器組內的已有的伺服器將得到保留。

該能力開啟時,會在Service同步時產生類型為PreservedOnDelete的Warning事件。配置該Annotation後,推薦檢查該事件是否存在,進一步確認能力已成功開啟。

取值:

  • 不為空白:啟用保留能力。

  • 值為空白或不設定:不啟用保留能力。

重要

請通過刪除Service而不是修改Service類型的方式進行該操作,否則可能會導致Service被錯誤地重新關聯到先前保留的NLB上。

v2.10.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "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
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

監聽的典型操作

設定監聽安全性群組

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids

描述

支援的CCM版本

設定監聽安全性群組。多個值之間使用英文半形逗號(,)分隔,例如sg-aaaaa,sg-bbbbb

v2.6.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # 多個安全性群組使用逗號分隔。
  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

為監聽同時配置TCP及UDP協議

描述

支援的CCM版本

該功能要求Kubernetes叢集版本不低於v1.24。關於如何升級叢集版本,請參見升級ACK叢集K8s版本

不涉及

apiVersion: v1
kind: Service
metadata:
  annotations:
      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

建立TCP類型監聽

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

建立UDP類型監聽

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

建立TCPSSL類型監聽

Annotation:多個,如下表所示。

Annotation

描述

支援的CCM版本

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

設定監聽的協議類型。多個值之間由逗號分隔,例如TCP:80,TCPSSL:443

v2.5.0及以上版本

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

伺服器憑證ID。可以登入數位憑證管理服務控制台建立並查看。

重要

目前TCPSSL監聽不支援綁定已開啟用戶端地址保持功能的伺服器組,即不支援同時配置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}"service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on"註解。如需通過NLB擷取用戶端地址,請參見後端伺服器通過NLB擷取用戶端真實IP

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # 如認證為中國內地Region時,組合後的認證ID為${your-cert-id}-cn-hangzhou。
    # 如認證為除中國內地以外的其他Region時,組合後的認證ID為${your-cert-id}-ap-southeast-1。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${組合後的認證ID}"
  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

配置監聽連接埠段

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range

描述

支援的CCM版本

僅支援在Terway網路外掛程式下使用。

通過配置NLB全連接埠轉寄的監聽位址區段,可實現對指定連接埠範圍的監聽,並將流量轉寄至後端伺服器的對應連接埠。

格式為連接埠段:Service連接埠,多個值之間由英文半形逗號(,)分隔,例如80-100:80,400-500:443。同一協議下的多個連接埠和連接埠段不能重疊。

targetPort是後端伺服器的健全狀態檢查連接埠,需為int類型,取值範圍:1-65535。

v2.11.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    # 配置80-100和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
    port: 80
    protocol: TCP
    # targetPort是後端伺服器的健全狀態檢查連接埠,需為int類型。
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

開啟雙向認證

Annotation:多個,如下表所示。

註解

描述

支援的CCM版本

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

設定監聽的協議類型。多個值之間由逗號分隔,例如TCP:80,TCPSSL:443

v2.5.0及以上版本

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

伺服器憑證ID。可以登入數位憑證管理服務控制台查看。

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

CA認證ID,可以登入數位憑證管理服務控制台查看。

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

是否啟動雙向認證。取值:

  • on:啟動。

  • off:關閉。

預設值:off

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"   
    # 如叢集為中國內地Region時,組合後的認證ID為${your-cert-id}-cn-hangzhou。
    # 如叢集為除中國內地以外的其他Region時,組合後的認證ID為${your-cert-id}-ap-southeast-1。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${組合後的認證ID}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}"  # CA認證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

設定TLS安全性原則

Annotation:多個,如下表所示。

註解

描述

支援的CCM版本

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

設定監聽的協議類型。多個值之間由逗號分隔,例如TCP:80,TCPSSL:443

v2.5.0及以上版本

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

伺服器憑證ID。可以登入數位憑證管理服務控制台查看。

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

安全性原則ID。支援系統安全性原則和自訂安全性原則。取值:

  • 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

預設值: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}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # 如叢集為中國內地Region時,組合後的認證ID為${your-cert-id}-cn-hangzhou。
    # 如叢集為除中國內地以外的其他Region時,組合後的認證ID為${your-cert-id}-ap-southeast-1。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${組合後的認證ID}" 
    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

設定ProxyProtocol

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

描述

支援的CCM版本

是否開啟通過Proxy Protocol協議攜帶用戶端源地址到伺服器。取值:

  • on:開啟。

  • off:關閉。

預設值:off

重要

啟用ProxyProtocol之前,請檢查後端服務是否已開啟Proxy Protocol v2。如未開啟,會導致訪問不通,請謹慎配置。

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

ProxyProtocol攜帶額外資訊

Annotation:多個,如下表所示。

Annotation

描述

支援的CCM版本

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

是否開啟通過Proxy Protocol協議攜帶用戶端源地址到伺服器。取值:

  • on:開啟。

  • off:關閉。

預設值:off

重要

啟用ProxyProtocol之前,請檢查後端服務是否已開啟Proxy Protocol v2。如未開啟,會導致訪問不通,請謹慎配置。

v2.5.0及以上版本

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

是否開啟通過 Proxy Protocol 協議攜帶 VpcId 到後端伺服器。取值:

  • on:開啟。

  • off:關閉。

預設值:off

v2.9.1及以上版本

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

是否開啟通過 Proxy Protocol 協議攜帶 PrivateLinkEpId 到後端伺服器。取值:

  • on:開啟。

  • off:關閉。

預設值:off

v2.9.1及以上版本

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

是否開啟通過 Proxy Protocol 協議攜帶 PrivateLinkEpsId 到後端伺服器。取值:

  • on:開啟。

  • off:關閉。

預設值:off

v2.9.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

設定監聽每秒建立串連限速值

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps

描述

支援的CCM版本

網路型Server Load Balancer執行個體每秒建立串連限速值。取值範圍[0, 1000000]。0表示不限速。

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

設定監聽串連空閑逾時時間

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout

描述

支援的CCM版本

串連空閑逾時時間。單位:秒。取值範圍[10, 900]。

預設值:900

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

設定ALPN策略

Annotation:多個,如下表所示。

註解

描述

支援的CCM版本

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

設定監聽的協議類型。多個值之間由逗號分隔,例如TCP:80,TCPSSL:443

v2.5.0及以上版本

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

伺服器憑證ID。可以登入數位憑證管理服務控制台建立並查看。

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

是否啟用ALPN。取值:

  • on:開啟。

  • off:關閉。

預設值:off

v2.10.0及以上版本

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

ALPN策略。取值:

  • HTTP1Only:只協商使用 HTTP/1.x 協議,優先順序為 HTTP/1.1>HTTP/1.0。

  • HTTP2Only:只協商使用 HTTP/2.0協議。

  • HTTP2Optional:優先使用 HTTP/1.x 協議,但也接受 HTTP/2.0協議,優先順序為 HTTP/1.1>HTTP/1.0>HTTP/2.0。

  • HTTP2Preferred:優先使用 HTTP/2協議,但也接受 HTTP/1.x 協議,優先順序為 HTTP/2.0>HTTP/1.1>HTTP/1.0。

關於該選項的更多取值,請參見CreateListener - 建立監聽API中的AlpnPolicy欄位。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # 如叢集為中國內地Region時,組合後的認證ID為${your-cert-id}-cn-hangzhou。
    # 如叢集為除中國內地以外的其他Region時,組合後的認證ID為${your-cert-id}-ap-southeast-1。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${組合後的認證ID}" 
    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

伺服器組的典型操作

設定調度策略

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler

描述

支援的CCM版本

調度演算法。取值:

  • wrr:加權輪詢,權重值越高的伺服器,被輪詢到的機率也越高。

  • rr:輪詢,按照訪問順序依次將外部請求分發到伺服器。

  • sch:源IP雜湊,相同的源地址會調度到相同的伺服器。

  • tch:四元組雜湊,基於四元組(源IP、目的IP、源連接埠和目的連接埠)的一致性雜湊,相同的流會調度到相同的伺服器。

  • wlc:加權最小串連數,除了根據每台後端伺服器設定的權重值來進行輪詢外,還考慮後端伺服器的實際負載(即串連數)。當權重值相同時,當前串連數越小的後端伺服器被輪詢到的機率也越高。

預設值:wrr

關於該選項的更多取值,請參見CreateServerGroup - 建立伺服器組API中的Scheduler欄位。

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

設定串連優雅中斷

Annotation:多個,如下表所示。

註解

描述

支援的CCM版本

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

是否開啟串連優雅中斷。取值:

  • on:開啟。

  • off:關閉。

預設值:off

v2.5.0及以上版本

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

設定串連優雅中斷逾時時間。單位:秒。取值範圍[10, 900]。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

設定用戶端地址保持

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip

描述

支援的CCM版本

是否開啟用戶端地址保持功能。取值:

  • on:開啟。

  • off:關閉。

預設值:on

v2.5.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

設定TCP類型的健全狀態檢查

Annotation:多個,如下表所示。設定TCP類型的健全狀態檢查,以下所有Annotation必選。TCP連接埠預設開啟健全狀態檢查。

註解

描述

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

是否開啟健全狀態檢查,取值:

  • on:開啟。

  • off:關閉。

預設值:on

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

健全狀態檢查協議。取值:

  • tcp

  • http

預設值:tcp

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

健全狀態檢查的伺服器連接埠。取值範圍[0, 65535]。預設值:0,表示使用伺服器的連接埠進行健全狀態檢查。

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

健全狀態檢查響應的最大逾時時間。單位:秒。取值範圍[1, 300]。

預設值:5

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

健全狀態檢查連續成功多少次後,將伺服器的健全狀態檢查狀態由失敗判定為成功。取值範圍[2, 10]。

預設值:2

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

健全狀態檢查連續失敗多少次後,將伺服器的健全狀態檢查狀態由成功判定為失敗。取值範圍[2, 10]。

預設值:2

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

健全狀態檢查的時間間隔。單位:秒。取值範圍[1, 50]。

預設值:10

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

設定HTTP類型的健全狀態檢查

Annotation:多個,如下表所示。設定HTTP類型的健全狀態檢查,以下所有Annotation必選。TCP連接埠預設開啟健全狀態檢查。

註解

描述

支援的CCM版本

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

是否開啟健全狀態檢查,取值:

  • on:開啟。

  • off:關閉。

預設值:on

v2.5.0及以上版本

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

健全狀態檢查協議。取值:

  • tcp

  • http

預設值:tcp

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

健全狀態檢查路徑。長度為1~80個字元,只能使用字母、數字、字元。 必須以正斜線(/)開頭。詳細資料請參見CreateServerGroup

說明

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP時,該參數生效。

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

用於健全狀態檢查的網域名稱。取值:

  • $SERVER_IP:使用後端伺服器內網IP

  • domain:指定特定網域名稱。長度限制1~80個字元,只能使用小寫字母、數字、短劃線(-)、半形句號(.)。

說明

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP時,該參數生效。

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

健全狀態檢查的伺服器連接埠。取值範圍[0, 65535]。預設值:0,表示使用伺服器的連接埠進行健全狀態檢查。

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

健全狀態檢查響應的最大逾時時間。單位:秒。取值範圍[1, 300]。

預設值:5

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

健全狀態檢查連續成功多少次後,將伺服器的健全狀態檢查狀態由失敗判定為成功。取值範圍[2, 10]。

預設值:2

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

健全狀態檢查連續失敗多少次後,將伺服器的健全狀態檢查狀態由成功判定為失敗。取值範圍[2, 10]。

預設值:2

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

健全狀態檢查的時間間隔。單位:秒。取值範圍[1, 50]。

預設值:10

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

健全狀態檢查方法。取值:

  • GET

  • HEAD

說明

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP時,該參數生效。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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"
    # 設定健全狀態檢查方法,該Annotation可選。
    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

設定伺服器群組類型

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type

描述

支援的CCM版本

設定伺服器群組類型。取值:

  • Ip:IP地址類型,支援直接添加IP地址類型的後端伺服器。

  • Instance(預設值):伺服器類型,支援添加ECS、ENI類型的執行個體。

預設值:Instance

關於NLB伺服器組分類及說明,請參見NLB伺服器組

v2.8.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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

複用已有伺服器組

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port

支援複用已有虛擬伺服器組,僅在複用已有NLB情境下生效。具體的使用樣本,請參見通過複用已有負載平衡實現跨叢集部署服務

設定Service接收流量的權重

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

在多個Service複用同一個NLB的情境下,支援通過此Annotation設定當前Service接收流量的權重。該Annotation僅在複用已有伺服器組情境下生效。具體的使用樣本,請參見通過複用已有負載平衡實現跨叢集部署服務

忽略更新後端伺服器權重

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update

描述

支援的CCM版本

在Service同步過程中,跳過伺服器組中後端伺服器權重的更新。此配置適用於需要通過CCM以外的機制手動管理後端伺服器權重的情境。取值:

  • on

  • off

預設值:off

v2.11.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例如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