全部產品
Search
文件中心

:通過Annotation配置傳統型負載平衡CLB

更新時間:Dec 19, 2024

為實現豐富的負載平衡功能,您可以通過Service YAML檔案中的Annotation(註解)對CLB、監聽和後端伺服器組三種資源維度進行配置操作。

索引

主要內容

跳轉連結

註解使用說明

CLB的典型操作

監聽的典型操作

後端伺服器組的典型操作

相關文檔

註解使用說明

  • 註解的內容區分大小寫。

  • 使用註解前請先在本文中查看該功能支援的CCM組件版本。如需升級CCM組件,請參見管理組件。關於CCM的組件變更記錄,請參見Cloud Controller Manager

  • 自2019年09月11日起,annotations欄位alicloud更新為alibaba-cloud

    例如:

    更新前:service.beta.kubernetes.io/alicloud-loadbalancer-id

    更新後:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id

    系統將繼續相容alicloud的寫法,您無需做任何修改。

CLB的典型操作

建立一個公網類型的負載平衡

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

建立一個私網類型的負載平衡

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

描述

預設值

支援的CCM版本

指定負載平衡為私網類型。取值:

  • internet:服務通過公網訪問,此為預設值。對應CLB的地址類型必須為公網

  • intranet:服務通過私網訪問。對應CLB的地址類型必須為私網

internet

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

指定負載平衡規格

Annotation:多個,如下表所示。

註解

描述

預設值

支援的CCM版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type

執行個體計費方式。取值:

  • PayBySpec:預設值,按規格計費。

  • PayByCLCU:按使用量計費。

重要

按使用量計費的負載平衡不支援設定規格。即取值PayByCLCUservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec不可同時存在。

PayBySpec

v2.4.0及以上版本

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

Server Load Balancer執行個體的規格。通過該參數可以建立指定規格的CLB,或者更新已有CLB的規格。 取值:

  • slb.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

關於該選項的更多取值,請參見CreateLoadBalancer

重要

如果您通過CLB控制台修改CLB規格(僅支援修改按規格計費的Server Load Balancer執行個體),可能會被CCM修改回原規格,請謹慎操作。

slb.s1.small

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayBySpec"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

使用已有的負載平衡

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

描述

預設值

支援的CCM版本

Server Load Balancer執行個體的ID。通過此Annotation指定已有的CLB。

  • 預設情況下,使用已有的Server Load Balancer執行個體不會覆蓋監聽,如果要強制覆蓋已有監聽,請配置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true"。該配置僅會覆蓋當前Service的監聽,對其他監聽沒有影響。

    說明

    複用已有的負載平衡預設不會覆蓋已有的監聽,有以下兩點原因:

    • 如果已有負載平衡的監聽上綁定了業務,強制覆蓋可能會引發業務中斷。

    • 由於CCM目前支援的後端配置有限,無法處理一些複雜配置。如有複雜的後端配置需求,可以在不覆蓋監聽的情況下,通過控制台自行配置監聽。

    考慮到以上兩種情況,不建議您強制覆蓋監聽。如果已有負載平衡的監聽連接埠不再使用,則可以強制覆蓋。

  • (v2.10.0以下版本)使用已有的負載平衡時,暫不支援添加額外標籤(annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags)。

v1.9.3.81-gca19cd4-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}" # 不支援配置多個策略組。
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

使用已有的負載平衡,並強制覆蓋已有監聽

Annotation:多個,如下表所示。強制覆蓋已有監聽,如果監聽連接埠衝突,則會刪除已有監聽。

註解

描述

預設值

支援的CCM版本

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

Server Load Balancer執行個體的ID。通過此Annotation指定已有的CLB。

  • 預設情況下,使用已有的Server Load Balancer執行個體不會覆蓋監聽,如需強制覆蓋已有監聽,請配置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true"。該配置僅會覆蓋當前Service的監聽,對其他監聽沒有影響。

    說明

    複用已有的負載平衡預設不會覆蓋已有的監聽,有以下兩點原因:

    • 如果已有負載平衡的監聽上綁定了業務,強制覆蓋可能會引發業務中斷。

    • 由於CCM目前支援的後端配置有限,無法處理一些複雜配置。如有複雜的後端配置需求,可以在不覆蓋監聽的情況下,通過控制台自行配置監聽。

    考慮到以上兩種情況,不建議您強制覆蓋監聽。如果已有負載平衡的監聽連接埠不再使用,則可以強制覆蓋。

  • (v2.10.0以下版本)使用已有的負載平衡時,暫不支援添加額外標籤(annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags)。

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

綁定已有負載平衡時,是否強制覆蓋該CLB的監聽。取值:

  • "true":覆蓋。僅會覆蓋當前Service的監聽,對其他監聽沒有影響。

  • "false":不覆蓋。

重要

複用已有CLB且設定force-override"true"時,請勿多個Service複用同一個CLB的同一個監聽,否則會導致監聽配置衝突。

"false"

v1.9.3.81-gca19cd4-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
    
    
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

建立負載平衡時,指定主備可用性區域

Annotation:多個,如下表所示。一旦建立,主備可用性區域不支援修改。

某些地區的負載平衡不支援主備可用性區域,請以CLB建立頁面為準。

註解

描述

預設值

支援的CCM版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid

主後端伺服器的可用性區域ID。

v1.9.3.10-gfb99107-aliyun及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid

備份後端伺服器的可用性區域ID。

v1.9.3.10-gfb99107-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "cn-hangzhou-k"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "cn-hangzhou-j"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

建立按頻寬付費的負載平衡

Annotation:多個,如下表所示。以下兩項Annotation必選。

註解

描述

預設值

支援的CCM版本

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

Server Load Balancer執行個體的計費方式。取值:

  • paybytraffic

  • paybybandwidth

paybytraffic

v1.9.3及以上版本

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

負載平衡的頻寬,為頻寬峰值。僅適用於公網類型的負載平衡。其他限制,請參見修改公網Server Load Balancer執行個體的計費方式

50

v1.9.3.10-gfb99107-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "2"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

為負載平衡指定虛擬交換器

Annotation:多個,如下表所示。以下兩項Annotation必選。

註解

描述

預設值

支援的CCM版本

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

指定負載平衡為私網類型。取值:

  • internet:服務通過公網訪問,此為預設值。對應CLB的地址類型必須為公網

  • intranet:服務通過私網訪問。對應CLB的地址類型必須為私網

internet

v1.9.3及以上版本

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

Server Load Balancer執行個體所屬的VSwitch ID,虛擬交換器必須與Kubernetes叢集屬於同一個VPC。

設定該參數時,需同時設定service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type"intranet"

可以登入專用網路管理主控台查詢交換器ID。

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
   service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
   service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

為私網負載平衡指定IP地址

Annotation:多個,如下表所示。以下三項Annotation必選。

註解

描述

預設值

支援的CCM版本

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

指定負載平衡為私網類型。取值:

  • internet:服務通過公網訪問,此為預設值。對應CLB的地址類型必須為公網

  • intranet:服務通過私網訪問。對應CLB的地址類型必須為私網

internet

v1.9.3及以上版本

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

Server Load Balancer執行個體所屬的VSwitch ID,虛擬交換器必須與Kubernetes叢集屬於同一個VPC。

設定該參數時,需同時設定service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type為intranet。

可以登入專用網路管理主控台查詢交換器ID。

v1.9.3及以上版本

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

私網Server Load Balancer執行個體的IP。

  • 該IP地址必須包含在交換器的目標網段下,僅支援IPv4地址,且需要與service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id一起使用。

  • IP地址建立後不支援更改。

v2.7.0及以上版本

apiVersion: v1
kind: Service
metadata:
 annotations:
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip: "192.168.x.x"
 name: nginx
 namespace: default
spec:
 type: LoadBalancer
 ports:
 - port: 80
   targetPort: 80
   name: http
 selector:
   app: nginx

為負載平衡添加額外標籤

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

描述

預設值

支援的CCM版本

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

重要

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

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2" 
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

建立IPv6類型的負載平衡

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

描述

預設值

支援的CCM版本

Server Load Balancer執行個體的IP版本,建立後IP類型不可更改。使用時,叢集的kube-proxy代理模式需為IPVS。取值:

  • ipv4:IPv4類型。

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

ipv4

v1.9.3.220-g24b1885-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
  name: nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

為負載平衡開啟刪除保護

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

描述

預設值

支援的CCM版本

負載平衡刪除保護。取值:

  • on

  • off

重要

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

on

v1.9.3.313-g748f81e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

為負載平衡開啟配置修改保護

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

描述

預設值

支援的CCM版本

負載平衡配置修改保護。取值:

  • ConsoleProtection

  • NonProtection

ConsoleProtection

v1.9.3.313-g748f81e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

指定負載平衡名稱

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

描述

預設值

支援的CCM版本

Server Load Balancer執行個體名稱。長度為2~128個英文或中文字元,必須以大小寫字母或中文開頭,可包含數字、半形句號(.)、底線(_)和短劃線(-)。

v1.9.3.313-g748f81e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "your-svc-name"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

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

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

描述

預設值

支援的CCM版本

負載平衡所屬資源群組ID,資源群組ID指定後不可被修改。可在阿里雲資源管理平台查詢資源群組ID。

v1.9.3.313-g748f81e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "rg-xxxx"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

為Service設定Hostname

Annotation:多個,如下表所示。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

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

為Service設定Hostname。Hostname需要符合DNS命名規則。

有如下注意事項:

  • 添加該Annotation後,Service的EXTERNAL-IP將會從預設的CLB IP更改為your_service_name。在叢集中訪問CLB IP時,流量將會繞行CLB再轉寄至叢集中。

  • 添加該Annotation後,如果監聽協議為TCP或UDP,叢集內訪問CLB IP時將會存在迴環訪問問題。詳細資料,請參見用戶端無法訪問負載平衡

  • 添加該Annotation不會自動綁定CLB與網域名稱。如需進行綁定,請至網域名稱服務 (DNS)頁面購買網域名稱並自行綁定CLB。購買網域名稱,請參見購買網域名稱

v2.3.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname: "${your_service_hostname}"
  name: nginx-svc
  namespace: default
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

預期輸出:

NAME         TYPE           CLUSTER-IP       EXTERNAL-IP            PORT(S)                      AGE
nginx-svc    loadBalancer   47.100.XX.XX     www.example.com        80:30248/TCP,443:32670/TCP   10s

建立一個按使用量計費的負載平衡

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type

描述

預設值

支援的CCM版本

執行個體計費方式。取值:

  • PayBySpec:預設值,按規格計費。

  • PayByCLCU:按使用量計費。

重要

按使用量計費的負載平衡不支援設定規格。即取值PayByCLCUservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec不可同時存在。

PayBySpec

v2.4.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayByCLCU"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

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

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

描述

預設值

支援的CCM版本

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

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

取值:

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

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

重要

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

v2.10.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

監聽的典型操作

為TCP類型的負載平衡配置會話保持時間

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

描述

預設值

支援的CCM版本

會話保持時間。僅針對TCP協議的監聽。如果Server Load Balancer執行個體配置了多個TCP協議的監聽連接埠,則預設將該配置應用到所有TCP協議的監聽連接埠。

單位:秒。取值[0, 3600]。預設值為0,即會話保持關閉。更多資訊,請參見CreateLoadBalancerTCPListener

0

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "1800"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

為HTTP和HTTPS協議的監聽配置會話保持(insert cookie)

Annotation:多個,如下表所示。insert cookie時,以下四項Annotation必選。

  • 僅支援HTTP及HTTPS協議的Server Load Balancer執行個體。

  • 如果配置了多個HTTP或者HTTPS的監聽連接埠,該會話保持預設應用到所有HTTP和HTTPS監聽連接埠。

註解

描述

預設值

支援的CCM版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session

是否開啟會話保持。僅對HTTP和HTTPS協議的監聽生效。取值:

  • on

  • off

更多資訊,請參見:CreateLoadBalancerHTTPListenerCreateLoadBalancerHTTPSListener

off

v1.9.3及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type

cookie的處理方式。僅對HTTP和HTTPS協議的監聽生效。當service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session取值為on時,該參數必選。取值:

  • insert:植入Cookie。

  • server:重寫Cookie。

更多資訊,請參見CreateLoadBalancerHTTPListenerCreateLoadBalancerHTTPSListener

v1.9.3及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout

Cookie逾時時間。當service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-sessiononservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-typeinsert時,該參數必選。單位:秒。取值範圍為[1, 86400]。

更多資訊,請參見:CreateLoadBalancerHTTPListenerCreateLoadBalancerHTTPSListener

v1.9.3及以上版本

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

伺服器上配置的Cookie名稱。

長度為1~200個字元,只能包含 ASCII 英文字母和數字字元,不能包含半形逗號(,)、半形分號(;)或空格,也不能以貨幣符號($)開頭。

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-sessiononservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-typeserver時,該參數必選。

更多資訊,請參見CreateLoadBalancerHTTPListenerCreateLoadBalancerHTTPSListener

v1.9.3及以上版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type: "insert"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout: "1800"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為負載平衡配置存取控制策略組

Annotation:多個,如下表所示。以下三項Annotation必選。

使用此Annotation建立帶有存取控制的負載平衡前,需先在傳統型負載平衡CLB控制台上建立一個負載平衡存取控制策略組,記錄該存取控制策略組ID(acl-id)。

註解

描述

預設值

支援的CCM版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status

是否開啟存取控制功能。取值:

  • on

  • off

off

v1.9.3.164-g2105d2e-aliyun及以上版本

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

監聽綁定的存取原則組ID。當service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status取值為"on"時,該參數必選。

v1.9.3.164-g2105d2e-aliyun及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type

存取控制類型。取值:

  • white:僅轉寄來自所選存取控制策略組中設定的IP地址或位址區段的請求。白名單適用於應用只允許特定IP訪問的情境。設定白名單存在一定業務風險。一旦設名單,就只有白名單中的IP可以訪問負載平衡監聽。如果開啟了白名單訪問,但存取原則組中沒有添加任何IP,則負載平衡監聽會轉寄全部請求。

  • black:來自所選存取控制策略組中設定的IP地址或位址區段的所有請求都不會轉寄。黑名單適用於應用只限制某些特定IP訪問的情境。如果開啟了黑名單訪問,但存取原則組中沒有添加任何IP,則負載平衡監聽會轉寄全部請求。當AclStatus參數的值為on時,該參數必選。

v1.9.3.164-g2105d2e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: "${YOUR_ACL_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

為負載平衡指定轉送連接埠

連接埠轉寄是指將HTTP連接埠的請求轉寄到HTTPS連接埠。

Annotation:多個,如下表所示。以下三項Annotation必選。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

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

阿里雲上的認證ID。

請登入CLB控制台,在認證管理頁面查看認證ID。

說明

如需建立認證,請參見選擇阿里雲簽發認證

v1.9.3.164-g2105d2e-aliyun及以上版本

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

將HTTP請求轉寄至HTTPS指定連接埠,例如80:443

v1.9.3.164-g2105d2e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port: "80:443"
  name: nginx
  namespace: default
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為負載平衡設定調度演算法

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

描述

預設值

支援的CCM版本

調度演算法。取值:

  • wrr:加權輪詢,權重值越高的後端伺服器,被輪詢到的次數(機率)也越高。

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

  • sch:基於源 IP 位址的一致性 hash,相同的源地址會調度到相同的後端伺服器。

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

關於該選項的更多取值,請參見CLB建立對應類型監聽API(如CreateLoadBalancerTCPListener - 建立TCP監聽)中的Scheduler欄位。

rr

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

建立UDP類型的監聽

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: UDP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

建立HTTP類型的監聽

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

描述

預設值

支援的CCM版本

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

建立HTTPS類型的監聽

Annotation:多個,如下表所示。

HTTPS請求會在CLB層解密,然後以HTTP請求的形式發送給後端的Pod。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

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

阿里雲上的認證ID。

請登入CLB控制台,在認證管理頁面查看認證ID。

說明

如需建立認證,請參見選擇阿里雲簽發認證

v1.9.3.164-g2105d2e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

建立帶健全狀態檢查的監聽

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

Annotation:多個,如下表所示。以下所有Annotation必選。

TCP連接埠預設開啟健全狀態檢查。

註解

描述

預設值

支援的CCM版本

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

TCP及UDP監聽是否開啟健全狀態檢查。取值:

  • on

  • off

on

v2.6.0及以上版本

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

健全狀態檢查類型。取值:

  • tcp

  • http

更多資訊,請參見:CreateLoadBalancerTCPListener

tcp

v1.9.3及以上版本

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

接收來自健全狀態檢查的響應需要等待的時間,適用於TCP模式。如果後端ECS在指定的時間內沒有正確響應,則判定為健全狀態檢查失敗。單位:秒。取值範圍為[1, 300]。

如果service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout的值小於service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值,則前者無效,逾時時間為後者的值。更多資訊,請參見CreateLoadBalancerTCPListener

5

v1.9.3及以上版本

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

健全狀態檢查連續成功多少次後,將後端伺服器的健全狀態檢查狀態由fail判定為success

取值範圍為[2, 10]。更多資訊,請參見CreateLoadBalancerTCPListener

3

v1.9.3及以上版本

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

健全狀態檢查連續失敗多少次後,將後端伺服器的健全狀態檢查狀態由success判定為fail。取值範圍為[2, 10]。更多資訊,請參見CreateLoadBalancerTCPListener

3

v1.9.3及以上版本

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

健全狀態檢查的時間間隔。單位:秒。取值範圍[1, 50]。更多資訊,請參見CreateLoadBalancerTCPListener

2

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "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: "3"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

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

Annotation:多個,如下表所示。以下所有Annotation必選。

UDP連接埠預設開啟健全狀態檢查。

註解

描述

預設值

支援的CCM版本

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

TCP及UDP監聽是否開啟健全狀態檢查。取值:

  • on

  • off

on

v2.6.0及以上版本

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

接收來自健全狀態檢查的響應需要等待的時間,適用於TCP模式。如果後端ECS在指定的時間內沒有正確響應,則判定為健全狀態檢查失敗。單位:秒。取值範圍為[1, 300]。

如果service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout的值小於service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值,則前者無效,逾時時間為後者的值。更多資訊,請參見CreateLoadBalancerUDPListener

5

v1.9.3及以上版本

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

健全狀態檢查連續成功多少次後,將後端伺服器的健全狀態檢查狀態由fail判定為success。

取值範圍為[2, 10]。更多資訊,請參見CreateLoadBalancerUDPListener

3

v1.9.3及以上版本

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

健全狀態檢查連續失敗多少次後,將後端伺服器的健全狀態檢查狀態由success判定為fail。取值範圍為[2, 10]。更多資訊,請參見CreateLoadBalancerUDPListener

3

v1.9.3及以上版本

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

健全狀態檢查的時間間隔。單位:秒。取值範圍[1, 50]。更多資訊,請參見CreateLoadBalancerUDPListener

2

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "3"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "3"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: UDP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為TCP和UDP監聽關閉健全狀態檢查

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch

描述

預設值

支援的CCM版本

TCP及UDP監聽是否開啟健全狀態檢查。取值:

  • on

  • off

on

v2.6.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" #關閉健全狀態檢查
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

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

Annotation:多個,如下表所示。

註解

描述

預設值

支援的CCM版本

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

取值:

  • on:TCP監聽預設為on且不可更改。TCP無需改此Annotation參數。

  • off:HTTP監聽預設為off

off

v1.9.3及以上版本

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

健全狀態檢查類型。取值:

  • tcp

  • http

更多資訊,請參見CreateLoadBalancerHTTPListener

tcp

v1.9.3及以上版本

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

用於健全狀態檢查的URI。當健全狀態檢查類型為TCP模式時,無需配置此Annotation參數。

v1.9.3及以上版本

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

健全狀態檢查正常的HTTP狀態代碼,多個狀態代碼用英文半形逗號分隔。取值:

  • http_2xx

  • http_3xx

  • http_4xx

  • http_5xx

更多資訊,請參見CreateLoadBalancerHTTPListener

http_2xx

v1.9.3及以上版本

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

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

  • $_ip: 後端伺服器的私網IP。當指定了IP或該參數未指定時,負載平衡會使用各後端伺服器的私網IP作為健全狀態檢查使用的網域名稱。

  • domain:網域名稱長度為1~80字元,只能包含字母、數字、英文半形句號(.)和短劃線(-)。

更多資訊,請參見CreateLoadBalancerHTTPListener

v1.9.3及以上版本

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

接收來自健全狀態檢查的響應需要等待的時間,適用於HTTP模式。如果後端ECS在指定的時間內沒有正確響應,則判定為健全狀態檢查失敗。

單位:秒。取值範圍[1, 300]。

如果service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout的值小於service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值,則service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout無效,逾時時間為service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值。

更多資訊,請參見CreateLoadBalancerHTTPListener

v1.9.3及以上版本

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

健全狀態檢查連續成功多少次後,將後端伺服器的健全狀態檢查狀態由fail判定為success。

取值範圍為[2, 10]。更多資訊,請參見CreateLoadBalancerHTTPListener

3

v1.9.3及以上版本

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

健全狀態檢查連續失敗多少次後,將後端伺服器的健全狀態檢查狀態由success判定為fail。取值範圍為[2, 10]。更多資訊,請參見CreateLoadBalancerHTTPListener

3

v1.9.3及以上版本

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

健全狀態檢查的時間間隔。單位:秒。取值範圍[1, 50]。更多資訊,請參見CreateLoadBalancerHTTPListener

2

v1.9.3及以上版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

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

監聽HTTP類型健全狀態檢查的健全狀態檢查方法。取值:

  • head

  • get

v2.3.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    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-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    # 設定健全狀態檢查HTTP狀態代碼,可選
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
    # 設定健全狀態檢查網域名稱,可選
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
    # 設定健全狀態檢查方法,可選
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為監聽設定串連優雅中斷

Annotation:多個,如下表所示。以下所有Annotation必選。

僅支援TCP和UDP協議。

註解

描述

預設值

支援的CCM版本

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

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

  • on

  • off

v2.0.1及以上版本

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

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

v2.0.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    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:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為監聽配置額外要求標頭

Annotation:多個,如下表所示。

僅支援HTTP和HTTPS協議。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto

配置是否通過X-Forwarded-Proto頭欄位擷取CLB的監聽協議。取值:

  • on

  • off

off

v2.1.0及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport

配置是否通過XForwardedFor_SLBPORT頭欄位擷取Server Load Balancer執行個體的監聽連接埠。取值:

  • on

  • off

off

v2.9.1及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport

配置是否通過XForwardedFor_ClientSrcPort頭欄位擷取訪問Server Load Balancer執行個體用戶端的連接埠。取值:

  • on

  • off

off

v2.9.1及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

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

Annotation:多個,如下表所示。

僅支援HTTP和HTTPS協議。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

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

為監聽設定串連空閑逾時時間。單位:秒。取值範圍[1, 60]。

15

v2.1.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "30"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

關閉監聽的HTTP2特性

Annotation:多個,如下表所示。

僅支援HTTPS協議。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

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

阿里雲上的認證ID。

請登入CLB控制台,在認證管理頁面查看認證ID。

說明

如需建立認證,請參見選擇阿里雲簽發認證

v1.9.3.164-g2105d2e-aliyun及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled

是否開啟HTTP2特性。取值:

  • on

  • off

on

v2.1.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled: "off"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為監聽配置指定請求逾時時間

Annotation:多個,如下表所示。

僅支援HTTP和HTTPS協議。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout

指定請求逾時時間。單位:秒。取值範圍為[1, 180]。

在逾時時間內,後端伺服器一直沒有響應,負載平衡將放棄等待,用戶端返回HTTP 504錯誤碼。

60

v2.3.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout: "60"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為監聽指定連結逾時時間

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

僅支援TCP協議。

描述

預設值

支援的CCM版本

連線逾時時間。單位:秒。取值範圍為[10, 900]。更多資訊,請參見CreateLoadBalancerTCPListener

v2.3.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "60"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

為監聽配置安全性原則

Annotation:多個,如下表所示。

僅支援HTTPS協議。

註解

描述

預設值

支援的CCM版本

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

多個值之間用英文半形逗號(,)分隔,例如https:443,http:80

v1.9.3及以上版本

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

阿里雲上的認證ID。

請登入CLB控制台,在認證管理頁面查看認證ID。

說明

如需建立認證,請參見選擇阿里雲簽發認證

v1.9.3.164-g2105d2e-aliyun及以上版本

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

安全性原則包含HTTPS可選的TLS協議版本和配套的密碼編譯演算法套件。更多資訊,請參見CreateLoadBalancerHTTPSListener。取值:

  • 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

v2.4.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_2"
  name: nginx
  namespace: default
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

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

說明

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

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 81
  selector:
    app: nginx
  sessionAffinity: None
  type: LoadBalancer

為TCP和UDP類型的監聽配置Proxy Protocol協議

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

描述

預設值

支援的CCM版本

為TCP及UDP監聽配置ProxyProtocol協議。ProxyProtocol協議配置後,可通過ProxyProtocol協議攜帶用戶端源地址到後端伺服器。取值:

  • on

  • off

重要

該功能不支援線上平滑遷移,切換ProxyProtocol需要業務停服升級,請謹慎配置。

off

v2.6.0及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

後端伺服器組的典型操作

使用指定Label的Worker節點作為後端伺服器

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label

描述

預設值

支援的CCM版本

指定通過Label指定CLB後端掛載哪些Worker節點。多個Label以英文半形逗號(,)分隔,例如"k1=v1,k2=v2"。多個Label之間是And關係。

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: "failure-domain.beta.kubernetes.io/zone=ap-southeast-5a"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

使用Pod所在的節點作為後端伺服器

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

預設externalTrafficPolicy為Cluster模式,會將叢集中所有節點掛載到後端伺服器。Local模式僅將Pod所在節點作為後端伺服器。

描述

預設值

支援的CCM版本

調度演算法。取值:

  • wrr:加權輪詢,權重值越高的後端伺服器,被輪詢到的次數(機率)也越高。

    Local模式需要設定調度策略為加權輪詢wrr。

    說明

    在v1.9.3.164-g2105d2e-aliyun及之後版本,外部流量原則設定為Local模式的服務會自動根據Node上的Pod數量為Node設定權重,權重計算規則請參見Local模式下如何自動化佈建Node權重?

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

rr

v1.9.3及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

移除CLB後端unschedulable狀態的節點

Annotationservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend

描述

預設值

支援的CCM版本

從CLB後端移除SchedulingDisabled節點。取值:

  • on:需要從CLB的後端伺服器組移除unschedulable狀態的節點。

  • offkubectl cordonkubectl drain命令會將節點置為unschedulable狀態。此時不會將處於unschedulable狀態的節點從CLB的後端伺服器組移除。

off

v1.9.3.164-g2105d2e-aliyun及以上版本

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend: "on"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 30080
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

直接將Pod ENI掛載到CLB後端

Annotationservice.beta.kubernetes.io/backend-type

描述

預設值

支援的CCM版本

CLB後端伺服器類型。取值:

  • eni:通過此配置將Pod掛載到CLB後端,可以提高網路轉寄效能。僅在Terway網路模式下生效。

    也可以手動將service.beta.kubernetes.io/backend-type: "eni"中的eni設定為ecs,將ECS掛載到CLB後端。

  • ecs:將ECS掛載到CLB後端。

  • Flannel網路模式:ecs

  • Terway網路模式:

    • 2020年08月10日之前建立的Terway叢集:ecs

    • 2020年08月10日之後建立的Terway叢集:eni

v1.9.3.164-g2105d2e-aliyun及以上版本

  apiVersion: v1
  kind: Service
  metadata:
    annotations:
      service.beta.kubernetes.io/backend-type: "eni"
    name: nginx
  spec:
    ports:
    - name: http
      port: 30080
      protocol: TCP
      targetPort: 80
    selector:
      app: nginx
    type: LoadBalancer

複用已有虛擬伺服器組

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

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

設定Service接收流量的權重

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

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