You need to enable JavaScript to run this app.
导航
通过 kubectl 创建 CLB Ingress
最近更新时间:2025.03.20 17:03:51首次发布时间:2022.03.10 16:33:40
我的收藏
有用
有用
无用
无用

通过配置路由规则(Ingress)YAML 文件中特定的注解(Annotation)内容,实现更加丰富的七层负载均衡(CLB)能力和更加多样的服务路由规则。

注意

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

前提条件

创建 CLB Ingress

对接已有 CLB 实例

此场景使用的负载均衡(CLB)实例,特指在控制台手动创建的负载均衡实例。详细操作,请参见 创建负载均衡实例

警告

请勿对接集群 API Server 对应的 CLB 实例(无论是本集群的 API Server 的 CLB 实例,还是别的集群的 API Server 的 CLB 实例),否则可能导致集群故障。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.vke.volcengine.com/loadbalancer-id: "clb-rrxpqzg37eo0v0x58******"
    # 指定使用的负载均衡 ID
  name: clb-ingress # 自定义路由规则名称
  namespace: default # 指定命名空间
spec:
  ingressClassName: clb
  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 说明如下表所示。

字段类型是否必须描述默认值是否支持修改
ingress.vke.volcengine.com/loadbalancer-idString指定已存在的 CLB 实例 ID。

新建 CLB 实例

使用如下 YAML 配置,创建 Ingress 并同时创建新的 CLB 实例。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.vke.volcengine.com/loadbalancer-name: "clb-demo"
    # 配置负载均衡名称
    ingress.vke.volcengine.com/loadbalancer-spec: "small_1"
    # 配置创建负载均衡的规格。small_1:200Mbps、small_2:500Mbps、medium_1:1000Mbps、meidum_2:2000Mbps、large_1:5000Mbps、large_2:10000Mbps
    ingress.vke.volcengine.com/loadbalancer-subnet-id: "subnet-rrhvmyikek1sv0x58***"
    # 配置负载均衡器实例所属的子网
    ingress.vke.volcengine.com/loadbalancer-address-type: "public" 
    # 配置负载均衡类型。取值: public (公网类型)、 private (私网类型)
    ingress.vke.volcengine.com/loadbalancer-isp-type: "BGP"
    # 配置负载均衡 EIP 线路类型
    ingress.vke.volcengine.com/loadbalancer-bandwidth:  "10" 
    # 配置公网负载均衡实例的 EIP 带宽峰值,取值范围:1~500Mbps
    ingress.vke.volcengine.com/loadbalancer-eip-BandwidthPackageId: "bwp-2d63yyj3ki4u858oz***"
    # 指定 EIP 的共享带宽包
  name: clb-ingress # 路由规则名称
  namespace: default #路由规则所在的命名空间
spec:
  ingressClassName: clb
  rules:
  - host: example.com # 对外提供访问的域名
    http:
      paths:
      - backend:
          service:
            name: service-demo-a # 需要对接的服务名称
            port:
              number: 80 # 需要对接服务的端口号
        path: /foo # 请求匹配的路径
        pathType: Prefix
      - backend:
          service:
            name: service-demo-b # 需要对接的服务名称
            port:
              number: 80 # 需要对接服务的端口号
        path: /bar # 请求匹配的路径
        pathType: Prefix

Annotation 说明如下表所示。

字段类型是否必选描述默认值是否支持修改
ingress.vke.volcengine.com/loadbalancer-nameString新创建的负载均衡器实例名称。如未指定,系统会自动生成。
ingress.vke.volcengine.com/loadbalancer-specString表示负载均衡器实例的规格。取值:small_1、small_2、medium_1、meidum_2、large_1、large_2 。详情请参见 产品类型与规格
ingress.vke.volcengine.com/loadbalancer-subnet-idString指定创建的负载均衡器实例所属的子网。

ingress.vke.volcengine.com/loadbalancer-address-type

String

指定负载均衡实例的类型。取值:

  • public:公网类型的负载均衡实例。
  • private:私网类型的负载均衡实例。

public

ingress.vke.volcengine.com/loadbalancer-isp-type

String

公网负载均衡实例的 EIP 线路类型。包括:BGP、SingleLine_BGP、Static_BGP、Fusion_BGP、ChinaMobile、ChinaTelecom、ChinaUnicom、ChinaMobile_Value、ChinaUnicom_Value 和 ChinaTelecom_Value。详细参数解释,请参见 EIP 产品文档

注意

除 BGP 外,其他线路类型均为 EIP 产品的邀测功能,如需使用,请联系客户经理申请。

BGP

ingress.vke.volcengine.com/loadbalancer-bandwidth

Integer

公网负载均衡实例的 EIP 带宽峰值。

  • 取值:1~500
  • 单位:Mbps

10

ingress.vke.volcengine.com/loadbalancer-ip-versionString负载均衡实例的 IP 版本。取值:ipv4。ipv4

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

ingress.vke.volcengine.com/loadbalancer-eip-BandwidthPackageId

String

指定 EIP 的共享带宽包。

说明

共享带宽包是一种支持复用和共享带宽的云资源。将单个地域内多个公网 IP 或 IPv6 公网带宽添加到一个共享带宽包实例中,共享一条带宽,可以帮助您降低公网带宽的使用成本。详情请参见 什么是共享带宽包

结果验证

  1. 执行以下命令,查看已创建的路由规则。
kubectl get ingress

预期结果如下:

NAME            CLASS   HOSTS         ADDRESS           PORTS   AGE
clb-ingress     clb     example.com   180.xxx.xxx.xxx   80      40s

说明

ADDRESS是与该路由规则对接的 CLB 公网 IP 地址。您可以在 负载均衡 控制台中,使用该 IP 地址查找对应的 CLB 实例。

  1. 执行以下命令,查看指定路由规则的详细信息。
kubectl describe ingress clb-ingress

预期结果如下。其中,Annotation 展示了 CLB 的相关信息,包括:CLB ID、监听器、健康检查等。详细解释,请参见 使用 Annotation 配置 CLB Ingress

Name:             clb-ingress
Labels:           <none>
Namespace:        default
Address:          180.xxx.xxx.xxx
Default backend:  default-http-backend:80
Rules:
  Host         Path  Backends
  ----         ----  --------
  example.com  
               /   service:80 (192.168.112.4:80,192.168.128.9:80,192.168.48.3:80)
Annotations:   ingress.vke.volcengine.com/loadbalancer-healthcheck-enabled: true
               ingress.vke.volcengine.com/loadbalancer-healthcheck-httpcode: http_2xx,http_3xx
               ingress.vke.volcengine.com/loadbalancer-healthcheck-interval: 3
               ingress.vke.volcengine.com/loadbalancer-healthcheck-method: GET
               ingress.vke.volcengine.com/loadbalancer-healthcheck-path: /
               ingress.vke.volcengine.com/loadbalancer-healthcheck-timeout: 3
               ingress.vke.volcengine.com/loadbalancer-healthy-threshold: 3
               ingress.vke.volcengine.com/loadbalancer-id: clb-5g8puqwem0ao73i******
               ingress.vke.volcengine.com/loadbalancer-port: 80
               ingress.vke.volcengine.com/loadbalancer-protocol: http
               ingress.vke.volcengine.com/loadbalancer-scheduler: wrr
               ingress.vke.volcengine.com/loadbalancer-unhealthy-threshold: 3
Events:
  Type     Reason              Age                From     Message
  ----     ------              ----               ----     -------
  Normal   ReconcilingIngress  33s (x3 over 55s)  ingress  Reconciling Ingress
  Normal   ReconciledIngress   31s (x2 over 33s)  ingress  Reconciled Ingress