文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 服务(Service)/ 负载均衡(LoadBalancer)/ 为负载均衡类型的Service配置区间端口监听
更新时间:2024-09-29 GMT+08:00

为负载均衡类型的Service配置区间端口监听

在创建负载均衡类型的Service时,您可以为关联的ELB的监听器指定需要监听的端口范围,使ELB监听器可以同时监听指定端口号范围内的端口,将这些端口收到的请求都转发到对应的后端服务。

该功能依赖ELB能力,使用该功能前请确认当前区域是否支持。ELB已发布区域请参见四层协议全端口监听和转发

前提条件

  • 已创建Kubernetes集群,且集群版本满足以下要求:
    • v1.23集群:v1.23.18-r0及以上
    • v1.25集群:v1.25.13-r0及以上
    • v1.27集群:v1.27.10-r0及以上
    • v1.28集群:v1.28.8-r0及以上
    • v1.29集群:v1.29.4-r0及以上
    • v1.30集群:v1.30.1-r0及以上
  • 如果您需要通过命令行创建,请使用kubectl连接到集群,详情请参见通过kubectl连接集群

注意事项

仅使用独享型ELB且选择TCP/UDP/TLS协议时,支持配置区间端口监听。

通过控制台配置

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 选择左侧导航栏的“服务”,在右侧选择“服务”页签,单击右上角“创建服务”
  3. 设置Service参数。本示例中仅列举必选参数,其余参数可根据需求参考创建LoadBalancer类型Service进行设置。

    • Service名称:自定义服务名称,可与工作负载名称保持一致。
    • 访问类型:选择“负载均衡”
    • 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”
    • 负载均衡器:选择弹性负载均衡的类型、创建方式。
      • 类型:本例中仅支持选择“独享型”
      • 创建方式:本文中以选择已有ELB为例进行说明,关于自动创建的配置参数请参见表1
    • 端口配置:
      • 协议:支持选择TCP协议或UDP协议。
      • 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。
      • 服务端口:Service使用的端口。本例中选择“区间端口监听”,可以同时监听指定端口号范围内的端口,将这些端口收到的请求都转发到对应的后端服务。端口范围取值为1-65535。您最多可添加10个互不重叠的监听端口段。
      • 监听器前端协议:当选择独享型负载均衡器类型时,需包含“网络型(TCP/UDP/TLS)”方可支持配置TLS协议。
    图1 配置区间端口监听

  4. 配置完成后,单击“确定”

通过kubectl命令行配置

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

    vi service-test.yaml
    以关联已有ELB为例,YAML配置文件如下:
    apiVersion: v1
    kind: Service
    metadata:
      name: service-test
      labels:
        app: test
        version: v1
      namespace: default
      annotations:
        kubernetes.io/elb.class: performance  #需使用独享型ELB
        kubernetes.io/elb.id: <your_elb_id>  #替换为您已有的ELB ID
        kubernetes.io/elb.port-ranges: '{"cce-service-0":["100,200", "300,400"], "cce-service-1":["500,600", "700,800"]}'  #配置区间端口监听
    spec:
      selector:
        app: test
        version: v1
      externalTrafficPolicy: Cluster
      ports:
        - name: cce-service-0
          targetPort: 80          #替换为您的容器端口
          nodePort: 0
          port: 100       #配置区间端口监听时,该参数值不生效,但不可缺少或重复,默认取值为区间起始端口
          protocol: TCP  
        - name: cce-service-1
          targetPort: 81          #替换为您的容器端口
          nodePort: 0
          port: 500       #配置区间端口监听时,该参数值不生效,但不可缺少或重复
          protocol: TCP  
      type: LoadBalancer
      loadBalancerIP: <your_elb_ip>  #替换为您已有的ELB私有IP
    表1 区间端口监听参数说明

    参数

    是否必填

    参数类型

    描述

    kubernetes.io/elb.port-ranges

    String

    使用独享型ELB且选择TCP/UDP/TLS协议时,支持创建某个端口范围的监听器,端口范围1~65535,您最多可为每个监听器添加10个互不重叠的监听端口段。

    参数值格式如下,ports_name和port均不允许重复:

     '{"<ports_name_1>":["<port_1>,<port_2>","<port_3>,<port_4>"], "<ports_name_2>":["<port_5>,<port_6>","<port_7>,<port_8>"]}'

    例如以下示例表示,端口配置名称为cce-service-0,其监听端口范围为100~200和300~400;端口配置名称为cce-service-1,其监听端口范围为500~600和700~800。

    '{"cce-service-0":["100,200", "300,400"], "cce-service-1":["500,600", "700,800"]}'

  3. 创建Service。

    kubectl create -f service-test.yaml

    回显如下,表示Service已创建。

    service/service-test created