You need to enable JavaScript to run this app.
导航
使用 Annotation 配置 ALB Ingress
最近更新时间:2025.03.20 16:54:00首次发布时间:2022.09.27 16:04:07
我的收藏
有用
有用
无用
无用

ALB Ingress 支持通过注解(Annotation)实现更加丰富的 ALB 能力配置。本文主要介绍使用 Annotation 配置 ALB Ingress 的主要场景和配置方法。

注意

注解的内容需要严格区分大小写。

选择单个监听器

说明

使用 Annotation 选择 ALB 实例的监听器前,您需要首先通过 ALBInstacne 创建或关联对应的 ALB 实例和监听器。配置方式,请参见 通过 kubectl 创建 ALB Ingress

ALB Ingress 支持通过 Annotation 选择由 ALBInstace 创建好的单个监听器,并在指定监听器下创建相应的转发规则和后端服务器组。示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress # 路由规则的名称
  namespace: default  # 路由规则所属的命名空间
  annotations:
    ingress.vke.volcengine.com/loadbalancer-port: "80" # 监听器端口号
    ingress.vke.volcengine.com/loadbalancer-protocol: "http"  # 监听器协议。取值:http、https
spec:
  ingressClassName: alb  # ALBInstance 的资源名称
  rules:
    - host: example.com  # 需要对外提供访问的域名
      http:
        paths:
        - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
          path: / # 请求匹配的路径
          backend:
            service:
              name: service-demo # 需要对接的服务名称
              port: 
                number: 80 # 需要对接服务的端口号

Annotation 说明如下表所示。

字段类型描述默认值
ingress.vke.volcengine.com/loadbalancer-portString选择单个监听器的监听端口,请保证监听器已经配置了对应的监听端口。80

ingress.vke.volcengine.com/loadbalancer-protocol

String

选择单个监听器的监听协议。取值:

  • http:使用 HTTP 协议的监听器。
  • https:使用 HTTPS 协议的监听器。

http

选择多个监听器

说明

  • 邀测·申请试用】:该功能目前处于邀测阶段,如需使用,请提交申请。
  • 使用 Annotation 选择 ALB 实例的监听器前,您需要首先通过 ALBInstacne 创建或关联对应的 ALB 实例和监听器。配置方式,请参见 通过 kubectl 创建 ALB Ingress

ALB Ingress 支持通过 Annotation 选择由 ALBInstace 创建好的多个监听器,并在指定监听器下创建相应的转发规则和后端服务器组。示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress # 路由规则的名称
  namespace: default  # 路由规则所属的命名空间
  annotations:
    ingress.vke.volcengine.com/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]' # 选择多监听器,包括监听协议和端口号
spec:
  ingressClassName: alb  # ALBInstance 的资源名称
  rules:
    - host: example.com  # 需要对外提供访问的域名
      http:
        paths:
        - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
          path: / # 请求匹配的路径
          backend:
            service:
              name: service-demo # 需要对接的服务名称
              port: 
                number: 80 # 需要对接服务的端口号

Annotation 说明如下表所示。

字段类型描述默认值

ingress.vke.volcengine.com/listen-ports

Array of String

选择多监听器的协议和端口号,例如{"HTTP": 80}。支持配置多个值,多个值之间使用半角逗号,隔开。

说明

  • 使用该 Annotation 选择多监听器时,选择单个监听器的ingress.vke.volcengine.com/loadbalancer-portingress.vke.volcengine.com/loadbalancer-protocol失效。
  • 删除该 Annitation 时,系统自动创建的转发规则会被同步删除。

配置调度算法

ALB Ingress 支持通过 Annotation 配置调度算法,示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress # 路由规则的名称
  namespace: default  # 路由规则所属的命名空间
  annotations:
    ingress.vke.volcengine.com/loadbalancer-scheduler: "wrr"  # 后端服务器组调度算法。取值:wrr(加权轮询)、wlc(加权最小连接数)、sh(源地址哈希)
spec:
  ingressClassName: alb  # ALBInstance 的资源名称
  rules:
    - host: example.com  # 需要对外提供访问的域名
      http:
        paths:
        - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
          path: / # 请求匹配的路径
          backend:
            service:
              name: service-demo # 需要对接的服务名称
              port: 
                number: 80 # 需要对接服务的端口号

Annotation 说明如下表所示。

字段类型描述默认值

ingress.vke.volcengine.com/loadbalancer-scheduler

String

ALB 监听器使用的调度算法。取值:

  • wrr:加权轮询,权重值越高的后端服务器,被轮询到的次数(概率)越高。
  • wlc:加权最小连接数,在最少连接数的基础上,根据服务器的不同处理能力,为每个服务器分配不同的权重,使其能够接受相应权值数的服务请求。
  • sh:源地址哈希,基于源 IP 地址的一致性哈希,相同的源地址会调度到相同的后端服务器。

wrr

配置直通 Pod 模式

注意

直通 Pod 模式仅在 VPC-CNI 容器网络模式的集群下生效。

ALB Ingress 支持通过 Annotation 配置直通 Pod 模式,示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress # 路由规则的名称
  namespace: default  # 路由规则所属的命名空间
  annotations:
    ingress.vke.volcengine.com/loadbalancer-pass-through: "true" # 配置直通 Pod 模式
spec:
  ingressClassName: alb  # ALBInstance 的资源名称
  rules:
    - host: example.com  # 需要对外提供访问的域名
      http:
        paths:
        - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
          path: / # 请求匹配的路径
          backend:
            service:
              name: service-demo # 需要对接的服务名称
              port: 
                number: 80 # 需要对接服务的端口号

Annotation 说明如下表所示。

字段类型描述默认值

ingress.vke.volcengine.com/loadbalancer-pass-through

String

是否启用应用型负载均衡器直通 Pod 模式。取值:

  • true:启用应用型负载均衡器直通 Pod 模式。
  • false:(默认值)禁用应用型负载均衡器直通 Pod 模式。

false

配置健康检查

ALB Ingress 支持通过 Annotation 配置健康检查。示例和注解说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.vke.volcengine.com/loadbalancer-healthcheck-enabled: "true" # 是否开启健康检查。取值:true、false
    ingress.vke.volcengine.com/loadbalancer-healthcheck-domain: "example.com"  # 健康检查域名
    ingress.vke.volcengine.com/loadbalancer-healthcheck-path: "/"  # 健康检查路径,默认为 "/"。
    ingress.vke.volcengine.com/loadbalancer-healthcheck-method: "GET"  # 健康检查方法。取值 GET、HEAD
    ingress.vke.volcengine.com/loadbalancer-healthcheck-httpcode: "http_2xx,http_3xx"  # 健康检查的状态码。取值:http_2xx(默认)、http_3xx(默认)、http_4xx、http_5xx。
    ingress.vke.volcengine.com/loadbalancer-healthcheck-timeout: "2"  # 等待健康检查响应的时间。取值范围:1~60 秒
    ingress.vke.volcengine.com/loadbalancer-healthcheck-interval: "2"  # 执行健康检查的时间间隔。取值范围:1~300 秒
    ingress.vke.volcengine.com/loadbalancer-healthy-threshold: "3"  # 判断后端服务器正常的健康检查次数。取值范围:2~10 次
    ingress.vke.volcengine.com/loadbalancer-unhealthy-threshold: "3"  # 判断后端服务器异常的健康检查次数。取值范围:2~10 次
  name: alb-ingress      # 自定义路由规则名称。
  namespace: default     # 路由规则所属的命名空间。
spec:
  ingressClassName: alb  # ALBInstance 的资源名称
  rules:
    - host: example.com  # 需要对外提供访问的域名
      http:
        paths:
        - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
          path: / # 请求匹配的路径
          backend:
            service:
              name: service-demo # 需要对接的服务名称
              port: 
                number: 80 # 需要对接服务的端口号

Annotation 说明如下表所示。

字段类型描述默认值

ingress.vke.volcengine.com/loadbalancer-healthcheck-enabled

String

是否开启健康检查。取值:

  • true:(默认值)开启健康检查。
  • false:禁用健康检查。

true

ingress.vke.volcengine.com/loadbalancer-healthcheck-domain

String

健康检查域名。填写后 ALB 会将域名配置到 host 字段中。
如果没有配置域名,则 host 字段为空,ALB 不会在请求中附带 host 字段,而是默认域名为后端服务器组内网 IP。

ingress.vke.volcengine.com/loadbalancer-healthcheck-pathString健康检查路径,默认为//
ingress.vke.volcengine.com/loadbalancer-healthcheck-methodString健康检查的方法。取值:GET、HEADGET

ingress.vke.volcengine.com/loadbalancer-healthcheck-httpcode

String

健康检查正常的状态码。
取值:http_2xx(默认值)、http_3xx(默认值)、http_4xx、http_5xx。

http_2xx,http_3xx

ingress.vke.volcengine.com/loadbalancer-healthcheck-timeout

String

等待健康检查响应的时间。

  • 取值:1~60
  • 单位:秒

2

ingress.vke.volcengine.com/loadbalancer-healthcheck-interval

String

执行健康检查的时间间隔。

  • 取值:1~300
  • 单位:秒

2

ingress.vke.volcengine.com/loadbalancer-healthy-threshold

String

健康检查连续成功多少次后,将后端服务器的健康检查状态由 Fail 判定为 Success。

  • 取值 :2~10
  • 单位:次

3

ingress.vke.volcengine.com/loadbalancer-unhealthy-threshold

String

健康检查连续失败多少次后,将后端服务器的健康检查状态由 Success 判定为 Fail。

  • 取值:2~10
  • 单位:次

3

配置后端服务组健康检查

ALB Ingress 支持通过 Annotation 配置指定后端服务组的健康检查,示例和注解说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress
  annotations:
    ingress.vke.volcengine.com/loadbalancer-rules-configs: |
        [
            {
                "host": "second.example.com",
                "path": "/",
                "healthCheck":
                 {
                   "enabled": true,
                   "protocol": "http",
                   "method": "GET",
                   "httpcode": "http_2xx,http_3xx",
                   "timeout": 2,
                   "interval": 2,
                   "healthyThreshold": 3,
                   "unhealthyThreshold": 3
                }
            }
        ]
spec:
  ingressClassName: alb # ALBInstance 的资源名称
  rules:
  - host: first.example.com
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: service-demo-a
            port:
              number: 80
  - host: second.example.com
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: service-demo-b
            port:
              number: 80

ingress.vke.volcengine.com/loadbalancer-rules-configs注解中的参数说明如下表所示。

字段类型描述默认值
hostString匹配健康检查的转发域名。
pathString匹配健康检查的转发路径。
healthCheckArray of healthCheck后端服务器组的健康检查规则。

healthCheck

字段类型描述默认值

enabled

Boolean

启用后端服务组健康检查功能。取值:

  • true:启用指定后端服务组健康检查功能。
  • false:禁用指定后端服务组健康检查功能。

protocolString健康检查协议,仅支持 http。
methodString健康检查方法。取值:GET、HEAD。HEAD
httpcodeString健康检查正常的 HTTP 状态码。取值:http_2xx、http_3xx、http_4xx、http_5xx。http_2xx,http_3xx

timeout

Integer

健康检查的响应超时时间。如果后端服务器在指定的时间内没有正确响应,则判定为健康检查异常。取值范围为 1~60 秒。

注意

响应超时时间需小于等于检查时间间隔。

2

intervalInteger健康检查的时间间隔。取值范围:1~300 秒。2
healthyThresholdInteger健康检查的健康阈值。表示连续执行指定次数的健康检查,结果均为正常的后端服务器将判定为健康检查正常。取值范围为 2~10 次。3
unhealthyThresholdInteger健康检查的不健康阈值。表示连续执行指定次数的健康检查,结果均为异常的后端服务器将判定为健康检查正常。取值范围为 2~10 次。3

配置转发流量限速

说明

邀测·申请试用】:该功能目前处于 邀测 阶段,如需使用,请提交申请。

ALB Ingress 支持通过 Annotation 配置转发流量限速,示例和注解说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.vke.volcengine.com/loadbalancer-rules-configs: |   # 配置 ALB Ingress 转发规则的流量限速
      [
          {
              "host": "example.com", 
              "path": "/", 
              "trafficLimitQps": 2000 
          }
      ]
  name: alb-ingress # 自定义路由规则名称
  namespace: default # 路由规则所属的命名空间
spec:
  ingressClassName: alb  # ALBInstance 的资源名称
  rules:
    - host: example.com  # 需要对外提供访问的域名
      http:
        paths:
        - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)
          path: / # 请求匹配的路径
          backend:
            service:
              name: service-demo # 需要对接的服务名称
              port: 
                number: 80 # 需要对接服务的端口号

ingress.vke.volcengine.com/loadbalancer-rules-configs注解中的参数说明如下表所示。

字段类型描述默认值
hostString匹配流量限速的转发域名。
pathString匹配流量限速的转发路径。

trafficLimitQps

Integer

该转发规则的 QPS(每秒请求数)。取值范围为 100~100000 QPS。

说明

若不填写参数值,则表示该转发规则不设置流量限速。

配置转发规则重定向

ALB Ingress 支持通过 Annotation 配置转发重定向规则,示例和注解说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress
  annotations:
    ingress.vke.volcengine.com/loadbalancer-rules-configs: |
      [
            {
                "host": "first.example.com",
                "path": "/",
                "ruleAction": "Redirect",
                "redirectConfig": 
                     {
                       "domain": "test.com",
                       "uri": "/docs",
                       "port": 8080,
                       "httpCode": "302",
                       "protocol": "HTTPS"
                    }
            }
      ]
spec:
  ingressClassName: alb # ALBInstance 的资源名称
  rules:
  - host: first.example.com
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: redirect # 固定值,表示重定向的服务
            port:
              name: use-annotation # 固定值,表示重定向的服务
  - host: second.example.com
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: service
            port:
              number: 80

ingress.vke.volcengine.com/loadbalancer-rules-configs注解中的参数说明如下表所示。

字段类型描述默认值
hostString匹配重定向规则的转发域名。
pathString匹配重定向规则的转发路径。

ruleAction

String

配置转发规则动作。取值:

  • 空:表示默认转发至服务器组。
  • Redirect:表示开启重定向。

Redirect

redirectConfigArray of redirectConfig转发重定向规则。

redirectConfig

字段类型描述默认值
domainString重定向域名。仅支持精确域名。
若该参数不指定,则为默认值(空),最终效果为与请求域名保持一致。
uriString重定向 URI。必须以正斜线/开头。仅允许包含字母、数字、-_/.%?#&等字符。长度限制为 1~128 个字符。
若该参数不指定,则为默认值(空),最终效果为与请求 URI 保持一致。
portInteger重定向端口。取值范围为 1~65535。
若该参数不指定,将赋值为默认值(空),最终效果为与请求端口保持一致。
httpCodeString重定向状态码,支持 301、302、307、308。
若该参数不指定,则为默认值 301。
301
protocolString重定向使用的协议,支持 HTTP、HTTPS。
若该参数不指定,则为默认值 HTTPS 。
HTTPS