更新时间:2024-11-12 GMT+08:00

为ELB Ingress配置转发规则优先级

Ingress使用同一个ELB监听器时,支持按照以下规则进行转发规则优先级排序:

  • 不同Ingress的转发规则:按照“kubernetes.io/elb.ingress-order”注解的优先级(取值范围为1~1000)进行排序,值越小表示优先级越高。
  • 同一个Ingress的转发规则:“kubernetes.io/elb.rule-priority-enabled”注解设置为“true”时,根据创建Ingress时的转发规则先后顺序进行排序,配置在上面的优先级高;未配置该注解时,同一个Ingress的转发规则会使用ELB侧的默认排序。

未配置以上注解时,同一个ELB监听器下无论包含多个Ingress还是同一个Ingress的转发规则,都会使用ELB侧的默认排序规则。

前提条件

约束与限制

仅使用独享型ELB时,Ingress支持配置转发规则优先级。

通过kubectl命令行配置

  1. 请参见通过kubectl连接集群,使用kubectl连接集群。
  2. 创建名为“ingress-test.yaml”的YAML文件,此处文件名可自定义。

    vi ingress-test.yaml

    以使用已有ELB为例,配置示例如下:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: test
      namespace: default
      annotations:
        kubernetes.io/elb.port: '88'
        kubernetes.io/elb.id: 2c623150-17bf-45f1-ae6f-384b036f547e    # 已有ELB的ID
        kubernetes.io/elb.class: performance    # ELB的类型
        kubernetes.io/elb.ingress-order: '1'    # 不同Ingress间的转发规则优先级
        kubernetes.io/elb.rule-priority-enabled: 'true'   # 同一个Ingress的转发规则按照paths字段下的转发规则顺序进行排序
    spec:
      rules:
        - host: ''
          http:
            paths:
              - path: /test1
                backend:
                  service:
                    name: test1
                    port:
                      number: 8081
                property:
                  ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                pathType: ImplementationSpecific
              - path: /test2
                backend:
                  service:
                    name: test2
                    port:
                      number: 8081
                property:
                  ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                pathType: ImplementationSpecific
      ingressClassName: cce

    表1 转发规则优先级注解

    参数

    类型

    描述

    kubernetes.io/elb.ingress-order

    String

    不同Ingress间的转发规则排序,参数值越小表示优先级越高,且同一个监听内规则优先级必须唯一,取值范围为1~1000。

    仅独享型ELB支持配置。

    说明:

    配置该注解时,默认开启“kubernetes.io/elb.rule-priority-enabled”注解,即同时对每个Ingress的转发规则进行排序。

    kubernetes.io/elb.rule-priority-enabled

    String

    仅支持设置为“true”,表示对同一个Ingress的转发规则进行排序,系统将会根据创建Ingress时的转发规则先后顺序确定优先级,配置在上面的优先级高。

    未开启该参数时,同一个Ingress的转发规则会使用ELB侧的默认排序,开启后则不允许关闭。

    仅独享型ELB支持配置。

  3. 创建Ingress。

    kubectl create -f ingress-test.yaml

    回显如下,表示Ingress服务已创建。

    ingress/ingress-test created

  4. 查看已创建的Ingress。

    kubectl get ingress

    回显如下,表示Ingress服务创建成功。

    NAME          CLASS    HOSTS     ADDRESS          PORTS   AGE
    ingress-test  cce      *         121.**.**.**     88      10s