更新时间:2025-08-11 GMT+08:00
分享

为ELB Ingress配置IP类型的后端

默认情况下,在CCE集群中创建Service或Ingress对接ELB时,CCE会自动在ELB监听器添加对应的后端服务器,具体情况如下:
  • 共享型ELB支持添加的后端服务器类型为云服务器,CCE Standard集群和Turbo集群添加的后端服务器都是云服务器(即节点)。
  • 独享型ELB支持添加的后端服务器类型为云服务器、辅助弹性网卡、IP类型后端,其中CCE Standard集群添加的后端服务器为云服务器(即节点),CCE Turbo集群添加的后端服务器为辅助弹性网卡(即Pod的IP)。

    在v1.25.16-r30、v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0、v1.32.1-r0版本的集群中,支持为独享型ELB添加IP类型后端,支持将节点IP或Pod IP地址作为后端服务器。

图1所示,如果多个ELB实例或多个监听器挂载相同后端服务器,同一个客户端通过这些ELB实例访问到相同的后端服务器时,后端服务器从弹性负载均衡处接收的客户端请求报文的源IP和源端口相同,会导致访问概率性失败或超时。详细说明请参见为什么同一客户端同时访问不同ELB实例、IP或端口会概率性超时?。如果将ELB的后端服务器配置为IP类型,则可有效避免上述问题。
图1 IP类型后端应用场景

前提条件

  • 已创建Kubernetes集群,且集群版本满足以下要求:
    • v1.25集群:v1.25.16-r30及以上
    • v1.27集群:v1.27.16-r30及以上
    • v1.28集群:v1.28.15-r20及以上
    • v1.29集群:v1.29.13-r0及以上
    • v1.30集群:v1.30.10-r0及以上
    • v1.31集群:v1.31.6-r0及以上
    • v1.32集群:v1.32.1-r0及以上
    • 其他更高版本集群
  • 如果您需要通过命令行创建,请使用kubectl连接到集群,详情请参见通过kubectl连接集群

通过kubectl命令行配置

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

    vi ingress-test.yaml
    以关联已有ELB为例,YAML配置文件如下:
    apiVersion: networking.k8s.io/v1
    kind: Ingress 
    metadata: 
      name: ingress-test
      annotations: 
        kubernetes.io/elb.id: <your_elb_id>                 #替换为您已有的ELB ID
        kubernetes.io/elb.class: performance                #ELB类型,需指定独享型ELB
        kubernetes.io/elb.port: '80'
        kubernetes.io/elb.ip-target-enabled: 'true'       #配置IP类型后端
    spec:
      rules: 
      - host: ''
        http: 
          paths: 
          - path: '/'
            backend: 
              service:
                name: <your_service_name>  #替换为您的目标服务名称
                port: 
                  number: 8080             #替换为您的目标服务端口
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
            pathType: ImplementationSpecific
      ingressClassName: cce     

    表1 配置IP类型后端参数说明

    参数

    参数类型

    描述

    kubernetes.io/elb.ip-target-enabled

    String

    表示为ELB配置IP类型的后端,启用后该Service/Ingress添加的后端地址均为VPC子网内的IP。其中CCE Turbo集群的后端为<Pod IP>:<targetPort>,CCE Standard集群的后端为<节点IP>:<NodePort>。
    • true:表示配置IP类型的后端。
    • 不支持其他取值
    注意:
    • 仅独享型ELB支持该特性。
    • 该特性仅在创建Service/Ingress时支持开启,已经存在的Service/Ingress无法添加和删除该annotation,如需使用特性,请新建Service/Ingress。
    • 如果Service/Ingress所使用的负载均衡器未开启IP类型后端功能,添加annotation后CCE会自动开启开关,且开启后无法关闭。
    • 请确保Service/Ingress所使用的负载均衡器后端子网有足够的IP地址,否则该功能无法正常使用。您可以通过负载均衡器的“基本信息 > 后端子网”添加多个后端子网来增加后端子网的IP地址。
    • 其他注意事项请参考通过IP类型后端功能添加服务器至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.**.**.**     80      10s

验证IP类型的后端是否创建成功

  1. 登录ELB控制台
  2. 找到Ingress关联的ELB,单击ELB名称。
  3. 查看基本信息,该ELB已开启“IP类型后端”。

  4. 切换至“监听器”页签,查看监听器的后端服务器已添加为IP类型后端。

相关文档