更新时间:2024-01-04 GMT+08:00

使用Annotation配置ELB Ingress

通过在YAML中添加注解Annotation(注解),您可以实现更多的Ingress高级功能。本文介绍在创建ELB类型的Ingress时可供使用的Annotation。

对接ELB

表1 对接ELB注解

参数

类型

描述

支持的集群版本

kubernetes.io/elb.class

String

请根据不同的应用场景和功能需求选择合适的负载均衡器类型。

  • performance:独享型负载均衡,仅支持1.17及以上集群。

v1.9及以上

kubernetes.io/ingress.class

String

  • cce:表示使用自研ELB Ingress。
  • nginx:表示使用Nginx Ingress。

通过API接口创建Ingress时必须增加该参数。

v1.23及以上集群使用ingressClassName参数代替,详情请参见通过Kubectl命令行创建ELB Ingress

仅v1.21及以下集群

kubernetes.io/elb.port

Integer

界面上的对外端口,为注册到负载均衡服务地址上的端口。

取值范围:1~65535。

说明:

部分端口为高危端口,默认被屏蔽,如21端口。

v1.9及以上

kubernetes.io/elb.id

String

仅关联已有ELB的场景:必填。

为负载均衡实例的ID。

获取方法:

在控制台的“服务列表”中,单击“网络 > 弹性负载均衡 ELB”,单击ELB的名称,在ELB详情页的“基本信息”页签下找到“ID”字段复制即可。

v1.9及以上

kubernetes.io/elb.ip

String

仅关联已有ELB的场景:必填。

为负载均衡实例的服务地址,公网ELB配置为公网IP,私网ELB配置为私网IP。

v1.9及以上

kubernetes.io/elb.autocreate

表5 Object

仅自动创建ELB的场景:必填。

示例:

  • 公网自动创建:

    值为 '{"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"}'

  • 私网自动创建:

    值为 '{"type":"inner", "name": "A-location-d-test"}'

v1.9及以上

kubernetes.io/elb.enterpriseID

String

仅自动创建ELB的场景:选填。

v1.15及以上版本的集群支持此字段,v1.15以下版本默认创建到default项目下。

为ELB企业项目ID,选择后可以直接创建在具体的ELB企业项目下。

该字段不传(或传为字符串'0'),则将资源绑定给默认企业项目。

获取方法:

登录控制台后,单击顶部菜单右侧的“企业 > 项目管理”,在打开的企业项目列表中单击要加入的企业项目名称,进入企业项目详情页,找到“ID”字段复制即可。

v1.15及以上

kubernetes.io/elb.subnet-id

String

仅自动创建ELB的场景:选填。

为集群所在子网的ID,取值范围:1-100字符。

  • Kubernetes v1.11.7-r0及以下版本的集群自动创建时:必填
  • Kubernetes v1.11.7-r0以上版本的集群:可不填。

v1.11.7-r0以下必填

v1.11.7-r0以上该字段废弃

上述注解的使用方法如下:

使用HTTP/2

表2 使用HTTP/2注解

参数

类型

描述

支持的集群版本

kubernetes.io/elb.http2-enable

String

表示HTTP/2功能的开启状态。开启后,可提升客户端与LB间的访问性能,但LB与后端服务器间仍采用HTTP1.X协议。v1.19.16-r0、v1.21.3-r0及以上版本的集群支持此字段

取值范围:

  • true:开启HTTP/2功能;
  • false:关闭HTTP/2功能(默认为关闭状态)。

注意:只有当监听器的协议为HTTPS时,才支持开启或关闭HTTP/2功能。当监听器的协议为HTTP时,该字段无效,默认将其设置为false。

v1.19.16-r0、v1.21.3-r0及以上

具体使用场景和说明请参见ELB Ingress使用HTTP/2

对接HTTPS协议的后端服务

表3 对接HTTPS协议的后端服务注解

参数

类型

描述

支持的集群版本

kubernetes.io/elb.pool-protocol

String

对接HTTPS协议的后端服务,取值为'https'。

v1.23.8、v1.25.3及以上

具体使用场景和说明请参见ELB Ingress对接HTTPS协议的后端服务

配置Ingress超时时间

表4 配置Ingress重定向规则注解

参数

类型

描述

支持的集群版本

kubernetes.io/elb.keepalive_timeout

Integer

客户端连接空闲超时时间,在超过keepalive_timeout时长一直没有请求, 负载均衡会暂时中断当前连接,直到下一次请求时重新建立新的连接。

取值:

  • 若为TCP协议,取值范围为(10-4000s)默认值为300s。
  • 若为HTTP/HTTPS协议,取值范围为(0-4000s)默认值为60s。

UDP监听器不支持此字段。

v1.19.16-r30、v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上

kubernetes.io/elb.client_timeout

Integer

等待客户端请求超时时间,包括两种情况:

  • 读取整个客户端请求头的超时时长:如果客户端未在超时时长内发送完整个请求头,则请求将被中断
  • 两个连续body体的数据包到达LB的时间间隔,超出client_timeout将会断开连接。

取值范围为1-300s,默认值为60s。

使用说明:仅协议为HTTP/HTTPS的监听器支持该字段。

最小值:1

最大值:300

缺省值:60

v1.19.16-r30、v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上

kubernetes.io/elb.member_timeout

Integer

等待后端服务器响应超时时间。请求转发后端服务器后,在等待超时member_timeout时长没有响应,负载均衡将终止等待,并返回 HTTP504错误码。

取值:1-300s,默认为60s。

使用说明:仅支持协议为HTTP/HTTPS的监听器。

最小值:1

最大值:300

缺省值:60

v1.19.16-r30、v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上

具体使用场景和说明请参见ELB Ingress设置超时时间

数据结构

表5 elb.autocreate字段数据结构说明

参数

是否必填

参数类型

描述

name

String

自动创建的负载均衡的名称。

取值范围:只能由中文、英文字母、数字、下划线、中划线、点组成,且长度范围为1-64个字符。

默认名称:cce-lb+service.UID

type

String

负载均衡实例网络类型,公网或者私网。

  • public:公网型负载均衡
  • inner:私网型负载均衡

默认类型:inner

bandwidth_name

公网型负载均衡必填

String

带宽的名称,默认值为:cce-bandwidth-******。

取值范围:只能由中文、英文字母、数字、下划线、中划线、点组成,且长度范围为1-64个字符。

bandwidth_chargemode

String

带宽模式。

  • bandwidth:按带宽
  • traffic:按流量

默认类型:bandwidth

bandwidth_size

公网型负载均衡必填

Integer

带宽大小,默认1Mbit/s~2000Mbit/s,请根据Region带宽支持范围设置。

调整带宽时的最小单位会根据带宽范围不同存在差异。
  • 小于等于300Mbit/s:默认最小单位为1Mbit/s。
  • 300Mbit/s~1000Mbit/s:默认最小单位为50Mbit/s。
  • 大于1000Mbit/s:默认最小单位为500Mbit/s。

bandwidth_sharetype

公网型负载均衡必填

String

带宽共享方式。

  • PER:独享带宽

eip_type

公网型负载均衡必填

String

弹性公网IP类型。

  • 5_bgp:全动态BGP

具体类型以各区域配置为准,详情请参见弹性公网IP控制台。

available_zone

Array of strings

负载均衡所在可用区。

独享型负载均衡器独有字段。

l4_flavor_name

String

四层负载均衡实例规格名称。

  • 弹性规格:适用于业务用量波动较大的场景,按实际使用量收取每小时使用的容量费用。v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上版本集群支持使用弹性规格。
  • 固定规格:适用于业务用量较为稳定的场景,按固定规格折算收取每小时使用的容量费用。

独享型负载均衡器独有字段。

l7_flavor_name

String

七层负载均衡实例规格名称。

  • 弹性规格:适用于业务用量波动较大的场景,按实际使用量收取每小时使用的容量费用。v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上版本集群支持使用弹性规格。
  • 固定规格:适用于业务用量较为稳定的场景,按固定规格折算收取每小时使用的容量费用。

独享型负载均衡器独有字段,必须与l4_flavor_name对应规格的类型一致,即都为弹性规格或都为固定规格。

elb_virsubnet_ids

Array of strings

负载均衡后端所在子网,不填默认为集群子网。不同实例规格将占用不同数量子网IP,不建议使用其他资源(如集群,节点等)的子网网段。

独享型负载均衡器独有字段。

示例:

"elb_virsubnet_ids": [
   "14567f27-8ae4-42b8-ae47-9f847a4690dd"
 ]