更新时间:2026-07-23 GMT+08:00
分享

取消负载均衡类型的Service关联ELB的监听器托管

默认情况下,CCE为负载均衡类型的Service自动创建并完全托管监听器,包括监听器的创建、更新和删除,满足大多数的使用场景,但是在某些特殊场景下,托管机制可能无法灵活处理监听器配置。为满足这些场景诉求,CCE支持取消负载均衡类型的Service关联ELB的监听器托管,取消监听器托管后,CCE不再管理该Service关联的监听器,用户可以在ELB侧独立管理监听器配置(如超时时间、TLS证书、ACL等),满足多Service共享监听器等灵活场景。

功能说明

场景

功能说明

支持的集群版本

创建Service时取消监听器托管

创建Service时取消监听器托管,CCE仅创建后端云服务器组、健康检查和后端服务器成员,不创建监听器。

v1.29.15-r90、v1.30.14-r90、v1.31.14-r50、v1.32.13-r20、v1.33.12-r0、v1.34.8-r0、v1.35.5-r0、v1.36.1-r10及以上

更新Service时取消监听器托管

对已有Service取消监听器托管,已有监听器脱离CCE管控,后续不再更新或删除。

删除Service时保留监听器

删除已取消监听器托管的Service时,仅清理后端云服务器组,监听器不会被级联删除。

多Service共享监听器

多个取消监听器托管的Service可对接同一个监听器,各自独立管理后端云服务器组。

注意事项

  • 取消监听器托管后不支持恢复,如需恢复CCE对监听器的托管,需要删除并重建Service。
  • 取消监听器托管后,您需要自行在ELB侧创建监听器并绑定后端云服务器组,否则流量无法完成转发。
  • 如果使用应用型(HTTP/HTTPS)的ELB,您需要自行在ELB侧配置转发策略。
  • 删除已取消监听器托管的Service时,仅清理后端云服务器组(含健康检查和后端服务器成员),监听器保留在ELB侧,需用户自行清理。
  • 建议使用ELB侧创建的监听器,而不是其他Service/Ingress创建的监听器。若一个由CCE托管监听器的Service与一个取消监听器托管的Service共享同一监听器,当托管监听器的Service被删除时,监听器会被级联删除,导致取消监听器托管的Service流量中断。您需要注意Service间的依赖关系。
  • 取消监听器托管不可与跨集群后端特性(kubernetes.io/elb.multicluster)同时使用。
  • 使用独享型ELB时,取消监听器托管的Service创建完成后,系统会自动添加kubernetes.io/elb.listener-port注解和kubernetes.io/elb.listener-port-ranges-auto-generated注解,这些annotation用于内部状态管理,请勿自行指定该注解,且不建议自行修改或删除,否则会导致ELB下资源回收失败。

前提条件

  • 已创建CCE集群,且集群版本满足功能说明表中要求。
  • 如果您需要通过命令行创建,需要使用kubectl连接到集群,详情请参见通过kubectl连接集群

创建负载均衡并取消监听器托管

您可以通过以下方式进行创建。

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“服务”,在右上角单击“创建服务”

    本示例中仅列举取消监听器托管相关的必选参数,其余参数保持默认,您可根据需求参考通过控制台创建进行设置。

  3. 设置基础配置参数。

    参数

    说明

    示例

    访问类型

    选择“负载均衡”

    -

    服务名称

    自定义服务名称,可与工作负载名称保持一致。

    nginx

    命名空间

    工作负载所在命名空间。

    default

    选择器

    您可以添加Pod标签的键值,Service将会根据标签与工作负载的Pod进行关联,将流量导向包含该标签的Pod。

    您也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”

    app:nginx

  4. 设置负载均衡配置参数。

    参数

    说明

    示例

    负载均衡器

    取消监听器托管功能只支持选择已有ELB,不支持自动创建ELB。

    仅支持选择与集群在同一个VPC下的ELB实例。如果没有可选的ELB实例,请单击“创建负载均衡器”跳转到ELB控制台创建。

    选择已有“独享型”“网络型(TCP/UDP/TLS)&应用型(HTTP/HTTPS)”实例

    监听器托管

    勾选表示由CCE托管监听器(默认行为),CCE自动管理监听器的创建、更新和删除。取消勾选表示取消监听器托管,CCE仅创建后端云服务器组、健康检查和后端服务器成员,不创建和管理监听器。

    请您前往ELB控制台手动配置监听器,并关联当前Service生成的后端云服务器组。且后续将无法再切换成监听器托管模式。

    不勾选

  5. 填写访问设置参数。

    参数

    说明

    示例

    服务亲和

    选择将外部流量路由到节点本地或集群范围的端点,详情请参见服务亲和(externalTrafficPolicy)
    • 集群级别:集群下所有节点的IP+节点端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。
    • 节点级别:只有通过负载所在节点的IP+节点端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。

    集群级别

    端口配置

    • 协议:请根据业务的协议类型选择。根据Kubernetes中定义的实现方案,Service在使用ELB提供的非UDP协议时,都需要将该参数设置为TCP并选择对应的监听器前端协议。详细说明请参见Service所用的协议
    • 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。
    • 服务端口:Service使用的端口。
      • 单端口监听:端口范围为1-65535。
      • 区间端口监听:负载均衡服务支持创建某个端口范围的监听器,您最多可为每个监听器添加10个互不重叠的监听端口段。

        为负载均衡服务配置区间端口监听需满足以下条件:

        • 集群版本为v1.23.18-r0、v1.25.13-r0、v1.27.10-r0、v1.28.8-r0、v1.29.4-r0、v1.30.1-r0及以上。
        • 使用独享型ELB且选择TCP/UDP/TLS协议。
        • 该功能依赖ELB能力,使用该功能前请确认ELB在当前区域是否支持四层协议全端口监听和转发。
    • 监听器前端协议:ELB监听器的前端协议,是客户端与负载均衡监听器建立流量分发连接所使用的协议。当选择独享型负载均衡器类型时,包含“应用型(HTTP/HTTPS)”方可支持配置HTTP/HTTPS;包含“网络型(TCP/UDP/TLS)”方可支持配置TLS。
    说明:

    在创建LoadBalancer类型Service时,会自动生成一个随机节点端口号(NodePort)。

    • 协议:TCP协议
    • 容器端口:80
    • 服务端口:80
    • 监听器前端协议:HTTP

  6. 单击“创建”,创建Service。
  7. 创建完成后,您需要在ELB侧手动创建监听器,并将后端云服务器组绑定至监听器,否则流量无法转发。具体操作请参见在ELB侧配置监听器并绑定后端云服务器组
  • 创建Service时取消监听器托管
    以关联已有ELB为例,创建Service时取消监听器托管的YAML文件配置如下:
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-skip-listener
      labels:
        app: nginx
      namespace: default
      annotations:
        kubernetes.io/elb.class: performance          # ELB类型
        kubernetes.io/elb.id: 35cb350b-23e6-4551-ac77-10d5298f5204   # 已有ELB的ID
        kubernetes.io/elb.skip-managed-listener: 'true'  # 取消监听器托管
        kubernetes.io/elb.protocol-port: http:80  # 使用HTTP协议
    spec:
      selector:
        app: nginx
      externalTrafficPolicy: Cluster
      ports:
        - name: cce-service-0
          targetPort: 80
          nodePort: 0
          port: 80
          protocol: TCP
      type: LoadBalancer
      loadBalancerIP: **.**.**.**   # ELB的IP
    表1 关键参数说明

    参数

    参数类型

    描述

    kubernetes.io/elb.skip-managed-listener

    String

    取消监听器托管。取消后CCE不再管理该Service关联的监听器。

    • true:取消监听器托管,CCE仅创建后端云服务器组、健康检查和后端服务器成员,不创建和管理监听器。
    • 不设置或设为其他值:保持默认行为,CCE完全托管监听器。

    创建完成后,您需要在ELB侧手动创建监听器,并将后端云服务器组绑定至监听器,否则流量无法转发。具体操作请参见在ELB侧配置监听器并绑定后端云服务器组

  • 多Service共享监听器示例

    网络型(TCP/UDP/TLS)ELB场景下一个监听器只能绑定一个后端云服务器组,多Service共享监听器主要适用于应用型(HTTP/HTTPS)ELB的场景。

    以下示例展示两个Service共享同一个ELB监听器的配置:

    • Service A:
      apiVersion: v1
      kind: Service
      metadata:
        name: service-a
        namespace: default
        annotations:
          kubernetes.io/elb.class: performance
          kubernetes.io/elb.id: 35cb350b-23e6-4551-ac77-10d5298f5204   # 同一个ELB实例
          kubernetes.io/elb.skip-managed-listener: 'true'  # 取消监听器托管
          kubernetes.io/elb.protocol-port: http:80  # 使用HTTP协议
      spec:
        selector:
          app: app-a
        ports:
          - name: cce-service-0
            targetPort: 8080
            port: 80
            protocol: TCP
        type: LoadBalancer
    • Service B:
      apiVersion: v1
      kind: Service
      metadata:
        name: service-b
        namespace: default
        annotations:
          kubernetes.io/elb.class: performance
          kubernetes.io/elb.id: 35cb350b-23e6-4551-ac77-10d5298f5204   # 同一个ELB实例
          kubernetes.io/elb.skip-managed-listener: 'true'  # 取消监听器托管
          kubernetes.io/elb.protocol-port: http:80  # 使用HTTP协议
      spec:
        selector:
          app: app-b
        ports:
          - name: cce-service-0
            targetPort: 8081
            port: 80
            protocol: TCP
        type: LoadBalancer

    创建完成后,您需要在ELB侧创建一个监听器,并通过转发策略将Service A和Service B各自的后端云服务器组关联至该监听器,配置域名/URL转发规则实现流量分发。具体操作请参见在ELB侧配置监听器并绑定后端云服务器组

在ELB侧配置监听器并绑定后端云服务器组

取消监听器托管后,您需要在ELB侧手动创建监听器并绑定后端云服务器组,流量才能正常转发。

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“服务”,找到目标Service所在行,单击负载均衡名称跳转至ELB控制台。
  3. 在左侧导航栏选择"后端服务器组",在搜索框中输入Service名称搜索对应的后端云服务器组。

    后端云服务器组的名称由Service名称、监听器协议和端口等组成。如果存在同名后端云服务器组,请查看其描述信息,描述中包含集群ID和Service ID,可用于区分。

  4. 在左侧导航栏选择“负载均衡器”,进入对应的负载均衡器详情页面。
  5. 切换至“监听器”页签,单击“添加监听器”,创建对应端口的监听器。
  6. 在监听器配置中,将步骤3中查找到的后端云服务器组绑定至该监听器。

    • 使用应用型ELB的场景,还需配置转发策略(域名/URL规则),将不同后端云服务器组关联至同一监听器。
    • 使用网络型ELB的场景,一个监听器只能绑定一个后端云服务器组。

  7. 完成配置后,验证流量是否正常转发。

相关文档