详情页标题前

阿里云容器服务ACK通过Annotation配置传统型负载均衡CLB-云淘科技

详情页1

通过Service YAML文件中的Annotation(注解),可以实现丰富的负载均衡功能。本文从CLB、监听和后端服务器组三种资源维度介绍通过注解可以对CLB进行的常见配置操作。

索引

主要内容

跳转链接

注解使用说明

CLB的典型操作

  • 创建一个公网类型的负载均衡

  • 创建一个私网类型的负载均衡

  • 指定负载均衡规格

  • 使用已有的负载均衡

  • 使用已有的负载均衡,并强制覆盖已有监听

  • 创建负载均衡时,指定主备可用区

  • 创建按带宽付费的负载均衡

  • 为负载均衡指定虚拟交换机

  • 为私网负载均衡指定IP地址

  • 为负载均衡添加额外标签

  • 创建IPv6类型的负载均衡

  • 为负载均衡开启删除保护

  • 为负载均衡开启配置修改保护

  • 指定负载均衡名称

  • 指定负载均衡所属的资源组

  • 为Service设置Hostname

  • 创建一个按使用量计费的负载均衡

监听的典型操作

  • 为TCP类型的负载均衡配置会话保持时间

  • 为HTTP和HTTPS协议的监听配置会话保持(insert cookie)

  • 为负载均衡配置访问控制策略组

  • 为负载均衡指定转发端口

  • 为负载均衡设置调度算法

  • 创建UDP类型的监听

  • 创建HTTP类型的监听

  • 创建HTTPS类型的监听

  • 创建带健康检查的监听

  • 为监听设置连接优雅中断

  • 为监听配置通过X-Forwarded-Proto头字段获取CLB的监听协议

  • 为监听设置连接空闲超时时间

  • 关闭监听的HTTP2特性

  • 为监听配置指定请求超时时间

  • 为监听指定链接超时时间

  • 为监听配置安全策略

  • 为监听同时配置TCP及UDP协议

  • 为TCP和UDP类型的监听配置Proxy Protocol协议

后端服务器组的典型操作

  • 使用指定Label的Worker节点作为后端服务器

  • 使用Pod所在的节点作为后端服务器

  • 移除CLB后端unschedulable状态的节点

  • 直接将Pod ENI挂载到CLB后端

  • 复用已有虚拟服务器组

  • 设置Service接收流量的权重

相关文档

注解使用说明

  • 注解的内容是区分大小写。

  • 自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-charge-type

负载均衡实例的计费方式。取值:

  • paybytraffic

  • paybybandwidth

paybytraffic

v1.9.3及以上版本

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

负载均衡实例的规格,请参见CreateLoadBalancer。通过该参数可以创建指定规格的CLB,或者更新已有CLB的规格。

重要

如果您通过CLB控制台修改CLB规格(仅支持修改按规格计费的负载均衡实例),可能会被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版本

负载均衡实例的ID。通过此Annotation指定已有的CLB。

  • 默认情况下,使用已有的负载均衡实例,不会覆盖监听,如要强制覆盖已有监听,请配置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true"

    说明

    复用已有的负载均衡默认不覆盖已有监听,有以下两点原因:

    • 如果已有负载均衡的监听上绑定了业务,强制覆盖可能会引发业务中断。

    • 由于CCM目前支持的后端配置有限,无法处理一些复杂配置。如有复杂的后端配置需求,可以在不覆盖监听的情况下,通过控制台自行配置监听。

    考虑到以上两种情况,不建议您强制覆盖监听。如果已有负载均衡的监听端口不再使用,则可以强制覆盖。

  • 使用已有的负载均衡时,暂不支持添加额外标签(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

负载均衡实例的ID。通过此Annotation指定已有的CLB。

  • 默认情况下,使用已有的负载均衡实例,不会覆盖监听,如要强制覆盖已有监听,请配置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true"

    说明

    复用已有的负载均衡默认不覆盖已有监听,有以下两点原因:

    • 如果已有负载均衡的监听上绑定了业务,强制覆盖可能会引发业务中断。

    • 由于CCM目前支持的后端配置有限,无法处理一些复杂配置。如有复杂的后端配置需求,可以在不覆盖监听的情况下,通过控制台自行配置监听。

    考虑到以上两种情况,不建议您强制覆盖监听。如果已有负载均衡的监听端口不再使用,则可以强制覆盖。

  • 使用已有的负载均衡时,暂不支持添加额外标签(annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags)。

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

绑定已有负载均衡时,是否强制覆盖该CLB的监听。取值:

  • "true":覆盖

  • "false":不覆盖

重要

复用已有CLB且设置forceoverridetrue时,请勿多个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

负载均衡实例的计费方式。取值:

  • paybytraffic

  • paybybandwidth

paybytraffic

v1.9.3及以上版本

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

负载均衡的带宽,为带宽峰值。仅适用于公网类型的负载均衡。其他限制,请参见修改公网负载均衡实例的计费方式。

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

负载均衡实例所属的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

负载均衡实例所属的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

私网负载均衡实例的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"

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版本

负载均衡实例的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版本

负载均衡实例名称。长度为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时将会存在回环访问问题。详细信息,请参见客户端无法访问负载均衡CLB。

  • 添加该Annotation不会自动绑定CLB与域名。如需进行绑定,请至域名服务页面购买域名并自行绑定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

监听的典型操作

为TCP类型的负载均衡配置会话保持时间

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

描述

默认值

支持的CCM版本

会话保持时间。仅针对TCP协议的监听。如果负载均衡实例配置了多个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协议的负载均衡实例。

  • 如果配置了多个HTTP或者HTTPS的监听端口,该会话保持默认应用到所有HTTP和HTTPS监听端口。

注解

描述

默认值

支持的CCM版本

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

是否开启会话保持。仅对HTTP和HTTPS协议的监听生效。取值:

  • on

  • off

更多信息,请参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener。

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。

更多信息,请参见CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener。

v1.9.3及以上版本

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

Cookie超时时间。当service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session为on且service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type为insert时,该参数必选。单位:秒。取值范围[1, 86400]。

更多信息,请参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener。

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

为负载均衡指定转发端口

Annotation:多个,如下表所示。以下三项Annotation必选。

端口转发是指将HTTP端口的请求转发到HTTPS端口上。设置端口转发前,需先登录数字证书管理服务控制台创建一个证书并记录cert-id,然后在CLB控制台上传该证书。

注解

描述

默认值

支持的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。

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:轮询,按照访问顺序依次将外部请求分发到后端服务器。

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类型的监听前,需先登录数字证书管理服务控制台创建一个证书并记录cert-id,然后在CLB控制台上传该证书。

  • 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。

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的值,则前者无效,超时时间为后者的值。更多信息,请参见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-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-protocol-port

描述

默认值

支持的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

更多信息,请参见CreateLoadBalancerTCPListener。

tcp

v1.9.3及以上版本

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

用于健康检查的URI。当健康检查类型为TCP模式时,无需配置此Annotation参数。更多信息,请参见CreateLoadBalancerTCPListener。

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及以上版本

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"
    # 设置健康检查方法,该Annotation可选
    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

为监听配置通过X-Forwarded-Proto头字段获取CLB的监听协议

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及以上版本

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"
  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。

可以登录数字证书管理服务控制台创建并记录cert-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。

可以登录数字证书管理服务控制台创建并记录cert-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-scheduler

描述

默认值

支持的CCM版本

从CLB后端移除SchedulingDisabled Node。取值:

  • 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场景下生效。具体的使用示例,请参见通过CCM跨集群部署服务。

设置Service接收流量的权重

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

在多个Service复用同一个CLB的场景下,支持通过此Annotation设置当前Service接收流量的权重。该Annotation仅在复用已有虚拟服务器组场景下生效。具体的使用示例,请参见通过CCM跨集群部署服务。

相关文档

  • Service注解不生效如何处理?

  • Service FAQ

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/168022.html

(0)
上一篇 2023年12月10日 上午10:45
下一篇 2023年12月10日 上午10:46
详情页2

相关推荐

  • 腾讯云云直播推流播放相关

    直播的在线人数是否有上限? 腾讯云直播默认不限制观看直播的在线人数,只要网络等条件允许都可以观看直播。如果用户配置了带宽限制,当观看人数过多、超出了限制带宽时新的用户无法观看,此情况下在线人数是有限制的。 如何使用播放转码? 考虑到不同的网络因素,满足您使用不同码率不同分辨率的需求,您可以前往 转码配置 设置不同码率不同分辨率的转码模板,更多转码相关信息请参…

    腾讯云 2023年12月9日
  • 腾讯云对象存储API 概览

    注意您目前查阅的是历史版本 API 文档,已不再更新和维护,我们建议您查阅新版 API 文档。腾讯云对象存储服务(COS)相关 JSON API 接口及说明如下: 目录操作 API 请求方式 功能说明 创建目录 API POST 在 Bucket 中创建一个新目录 查询目录属性 API GET 查询目录的属性信息 列出目录 API GET 列出指定目录下的所…

    腾讯云 2023年12月9日
  • 腾讯云容器服务包年包月实例退费说明同尘科技

    为了更加方便您使用云原生 etcd 集群服务,如果您在购买包年包月集群后有任何不满意,我们支持自助退货退款。每个主体可享受1次1个 etcd 集群实例五天无理由退还,您支付的有效金额将返还至您的腾讯云账户。除此之外,您还可享受普通自助退还,扣除您已使用的费用,将按购买支付使用的现金和赠送金支付比例退还至您的腾讯云账户的方式返还到您的账户。以上操作均可在控制台…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云直播QUIC 协议直播

    QUIC(Quick UDP Internet Connection)是谷歌公司研发的基于 UDP 协议的下一代高质量传输协议,自2018年开始,IETF 将 QUIC 协议确定为 HTTP/3.0 网络协议规范进行推广,QUIC 协议相对于 TCP 协议,更适合弱网络和高丢包场景下的数据传输。当前腾讯视频云支持使用 QUIC 协议来进行 直播推流 和 直播…

    2023年12月9日
  • 腾讯云内容分发网络CDNTypeC

    为保护您的站点资源不被非法站点下载盗用,您可按需选择 Type ABCD 四种鉴权方式的某一种,本文为您详细介绍 Type C 的各个参数字段和原理。 算法说明 访问 URL 格式http://DomainName/md5hash/timestamp/FileName注意访问 URL 中不能包含中文。不支持带参数 URL 鉴权。有效时间最大可输入630720…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。