You need to enable JavaScript to run this app.
导航

使用 Annotation 配置 CLB Ingress

最近更新时间2023.12.18 16:28:36

首次发布时间2023.12.18 16:28:36

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

注意

  • ALB Ingress 提供更加丰富的功能和可靠性,为保障您业务的安全和稳定,建议在集群中优先选择 ALB Ingress 实现业务发布。详情请参见 ALB Ingress
  • 注解的内容需要严格区分大小写。

配置监听器

说明

监听器支持在对接已有 CLB 实例时配置,也支持在创建新的 CLB 实例时配置。本例以对接已有 CLB 实例为例。

CLB Ingress 支持通过 Annotation 配置监听器。示例和注解说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.vke.volcengine.com/loadbalancer-id: "clb-rrxpqzg37eo0v0x58******"
    # 指定使用的负载均衡 ID
    ingress.vke.volcengine.com/loadbalancer-scheduler: "wrr" 
    # 配置监听器调度算法。取值:wrr(加权轮询)、wlc(加权最小连接数)、sh(源地址哈希)
    ingress.vke.volcengine.com/loadbalancer-protocol: "http" 
    # 配置监听器协议。取值:http 、https
    ingress.vke.volcengine.com/loadbalancer-port: "80" 
    # 配置监听器的监听端口,取值范围为 1-65535。http 协议默认监听 80 端口,https 协议默认监听 443 端口
  name: clb-ingress # 自定义路由规则名称
  namespace: default # 指定命名空间
spec:
  ingressClassName: clb # 指定 IngressClass 资源名称
  rules:
  - host: example.com # 需要对外提供访问的域名
    http:
      paths:
      - backend:
          service:
            name: service-demo-a # 需要对接的服务名称
            port:
              number: 80 # 需要对接服务的端口号
        path: /foo # 请求匹配的路径
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)
      - backend:
          service:
            name: service-demo # 需要对接的服务名称
            port:
              number: 80 # 需要对接服务的端口号
        path: /bar # 需要设定的访问路径信息
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)

Annotation 说明如下表所示。

Key类型是否必须描述默认值

ingress.vke.volcengine.com/loadbalancer-scheduler

String

负载均衡器使用的调度算法。取值:

  • wrr:权重值越高的后端服务器,被轮询到的次数(概率)越高。
  • wlc:将请求分发给 当前连接/权重 比值最小的后端服务器。
  • sh:基于源IP地址的一致性哈希,相同的源地址会调度到相同的后端服务器。

wrr

ingress.vke.volcengine.com/loadbalancer-protocol

String

负载均衡实例的监听协议。取值:

  • http:负载均衡实例的监听协议为 HTTP 协议。
  • https:负载均衡实例的监听协议为 HTTPS 协议。

http

ingress.vke.volcengine.com/loadbalancer-port

Integer

负载均衡器对外的监听端口,注册到负载均衡服务地址上的端口。取值范围为 1~65535。

  • https 协议:443
  • http 协议:80

配置直通 Pod 模式

说明

  • 直通 Pod 模式仅在 VPC-CNI 容器网络模式的集群下生效。
  • 直通 Pod 模式支持在对接已有 CLB 实例时使用,也支持在创建新的 CLB 实例时使用。本例以对接已有 CLB 实例为例。

CLB Ingress 支持通过 Annotation 配置直通 Pod 模式。示例和注解说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.vke.volcengine.com/loadbalancer-id: "clb-rrxpqzg37eo0v0x58******"
    ingress.vke.volcengine.com/loadbalancer-pass-through: "true"
    # 开启 Pod 直通模式
  name: clb-ingress # 路由规则的名称
  namespace: default # 路由规则所在的命名空间
spec:
  ingressClassName: clb # 指定 IngressClass 资源名称
  rules:
  - host: example.com # 需要对外提供访问的域名
    http:
      paths:
      - backend:
          service:
            name: service-demo # 需要对接的服务名称
            port:
              number: 80 # 需要对接服务的端口号
        path: / # 请求匹配的路径
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)

Annotation 说明如下表所示。

Key类型是否必须描述默认值

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

String

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

  • true:启用负载均衡器直通 Pod 模式。
  • false:禁用负载均衡器直通 Pod 模式。

true

配置健康检查

说明

健康检查功能支持在对接已有 CLB 实例时使用,也支持在创建新的 CLB 实例时使用。本例以对接已有 CLB 实例为例。

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

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.vke.volcengine.com/loadbalancer-id: "clb-rrxpqzg37eo0v0x58******" 
    # 指定使用的负载均衡 ID
    ingress.vke.volcengine.com/loadbalancer-healthcheck-enabled: "true" 
    # 配置是否开启健康检查。取值:true、false,本场景取值:true
    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: clb-ingress # 路由规则的名称
  namespace: default # 路由规则所在的命名空间
spec:
  ingressClassName: clb # 指定 IngressClass 资源名称
  rules:
  - host: example.com #对外提供访问的域名
    http:
      paths:
      - backend:
          service:
            name: service-demo # 对接的服务名称
            port:
              number: 80 # 对接服务的端口号
        path: /
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)

Annotation 说明如下表所示。

Key类型是否必须描述默认值

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

String

表示是否启用健康检查。取值:

  • true:启用健康检查。
  • false:禁用健康检查。

true

ingress.vke.volcengine.com/loadbalancer-healthcheck-pathString表示健康检查路径。/
ingress.vke.volcengine.com/loadbalancer-healthcheck-methodString配置健康检查的方法。取值:GET、HEADGET
ingress.vke.volcengine.com/loadbalancer-healthcheck-httpcodeString设置健康检查正常的状态码。取值:http_2xxhttp_3xxhttp_4xxhttp_5xxhttp_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