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

后端服务器组配置(poolConfig)

在ELB Gateway模式下,系统通过PoolConfiguration(简称poolConfig)来配置和调整后端服务器组的相关参数。

前提条件

集群版本已支持ELB Gateway功能。

关联机制

创建HTTPRoute与Service时,系统支持两种关联poolConfig的方式:

  • 自动创建(推荐):先创建HTTPRoute和Service,系统会自动生成对应的poolConfig资源。后续可直接修改该资源来调整后端服务器组参数。
  • 按需预创建:提前手动创建poolConfig并绑定目标Service,随后创建HTTPRoute时,系统将直接基于该poolConfig的参数配置生成后端服务器组。

操作指南

方式一:修改已有PoolConfiguration

对于系统自动创建或已存在的poolConfig,可以通过以下步骤查找并修改。

  1. 创建Gateway资源。

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway                      # 资源类型为 Gateway
    metadata:
      name: cce-gateway              # Gateway 名称
      namespace: default
    spec:
      gatewayClassName: cce-shared-internal  # GatewayClass 名称
      listeners:
        - name: http              #监听器名称
          protocol: HTTP               # 协议
          port: 80                     # 监听端口

  2. 创建关联Service的HTTPRoute资源。

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute                # 资源类型为 HTTPRoute
    metadata:
      name: backend                # HTTPRoute 名称
      namespace: default
    spec:
      parentRefs:
        - group: gateway.networking.k8s.io
          kind: Gateway
          name: cce-gateway
      hostnames:
        - "www.example.com"    #域名
      rules:
        - backendRefs:
            - group: ""
              kind: Service
              name: backend        # 已创建的 Service
              port: 3000           # Service 的端口
              weight: 1
          matches:
            - path:
                type: PathPrefix   # 前缀匹配
                value: /

  3. 查询Service关联的poolConfig名称:

    kubectl get poolconfig -n <namespace> -l gateway.cce.io/service-name=<serviceName>

    参数说明:

    • <namespace>:目标Service所在的命名空间。
    • <serviceName>:目标Service的名称。

    示例:

    kubectl get poolconfig -n default -l gateway.cce.io/service-name=backend

    预期输出如下:

    NAME            TARGET    PORT   ACCEPTED   AGE
    backend-95qcg   backend   3000   True       2m10s

  4. 编辑对应的poolConfig资源更新后端服务器组参数:

    kubectl edit poolconfig backend-95qcg -n default 

方式二:手动预创建PoolConfiguration

  1. 预先创建PoolConfiguration:通过spec.targetRef指定要绑定的Service。

    apiVersion: gateway.cce.io/v1alpha1
    kind: PoolConfiguration
    metadata:
      name: poolconfig-default
      namespace: default
    spec:
      targetRef:
        group: ""
        kind: Service
        name: backend   #已有Service名称
      defaultConfig:
        lbAlgorithm: ROUND_ROBIN
        poolProtocol: HTTP
        sessionAffinity:
          type: HTTP_COOKIE
          cookieTimeout: 1440
        healthCheck:
          enable: true
          protocol: HTTP
          urlPath: "/healthz"
          delay: 5
          timeout: 10
          maxRetries: 3
          expectedCodes: "200-399"
          monitorPort: 8080

  2. 创建Gateway资源。

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway                      # 资源类型为 Gateway
    metadata:
      name: cce-gateway              # Gateway 名称
      namespace: default
    spec:
      gatewayClassName: cce-shared-internal  # GatewayClass 名称
      listeners:
        - name: http              #监听器名称
          protocol: HTTP               # 协议
          port: 80                     # 监听端口

  3. 创建HTTPRoute资源:关联已绑定poolConfig的Service。系统会自动读取该poolConfig并创建对应的ELB后端服务器组。

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute                # 资源类型为 HTTPRoute
    metadata:
      name: backend                # HTTPRoute 名称
      namespace: default
    spec:
      parentRefs:
        - group: gateway.networking.k8s.io
          kind: Gateway
          name: cce-gateway
      hostnames:
        - "www.example.com"    #域名
      rules:
        - backendRefs:
            - group: ""
              kind: Service
              name: backend        # 已创建的 Service
              port: 3000           # Service 的端口
              weight: 1
          matches:
            - path:
                type: PathPrefix   # 前缀匹配
                value: /

poolConfig配置指导

健康检查

  • 设置健康检查的默认配置

    通过defaultConfig.healthCheck为Service的所有端口设置统一的健康检查默认配置:

    apiVersion: gateway.cce.io/v1alpha1
    kind: PoolConfiguration
    metadata:
      name: poolconfig-default
      namespace: default
    spec:
      targetRef:
        group: ""
        kind: Service
        name: backend
      defaultConfig:
        healthCheck:     #健康检查
          enable: true
          protocol: HTTP
          urlPath: "/healthz"
          delay: 5
          timeout: 10
          maxRetries: 3
          expectedCodes: "200-399"
          monitorPort: 8080
  • 不同端口的健康检查配置

    通过ports为不同端口设置各自的健康检查配置,覆盖defaultConfig中的默认值:

    apiVersion: gateway.cce.io/v1alpha1
    kind: PoolConfiguration
    metadata:
      name: poolconfig-default
      namespace: default
    spec:
      targetRef:
        group: ""
        kind: Service
        name: backend   #已有Service名称
      defaultConfig:
        healthCheck:     #健康检查
          enable: true
          protocol: HTTP
          urlPath: "/healthz"
          delay: 5
          timeout: 10
          maxRetries: 3
          expectedCodes: "200-399"
          monitorPort: 8080
        slowStart:
          enable: false
      ports:
        - port: 8080          #8080端口的后端服务器组配置
          config:
            lbAlgorithm: LEAST_CONNECTIONS
            healthCheck:
              enable: true
              protocol: TCP
              delay: 3
              timeout: 5
              maxRetries: 2
        - port: 80         #80端口的后端服务器组配置
          config:
            lbAlgorithm: LEAST_CONNECTIONS
            healthCheck:
              enable: true
              protocol: TCP
              delay: 3
              timeout: 10
              maxRetries: 2
      reclaimPolicy: DeleteWhenOrphaned

配置慢启动持续时间

apiVersion: gateway.cce.io/v1alpha1
kind: PoolConfiguration
metadata:
  name: poolconfig-default
  namespace: default
spec:
  targetRef:
    group: ""
    kind: Service
    name: backend
  defaultConfig:
    lbAlgorithm: ROUND_ROBIN    #配置后端服务器组的负载均衡算法:加权轮询
    poolProtocol: HTTP            #后端协议
    slowStart:
      enable: true    #开启慢启动
      duration: 30    #慢启动持续时间
  reclaimPolicy: DeleteWhenOrphaned

会话保持

apiVersion: gateway.cce.io/v1alpha1
kind: PoolConfiguration
metadata:
  name: poolconfig-default
  namespace: default
spec:
  targetRef:
    group: ""
    kind: Service
    name: backend
  defaultConfig:
    lbAlgorithm: ROUND_ROBIN
    poolProtocol: HTTP
    sessionAffinity:         #会话保持
      type: HTTP_COOKIE           #开启HTTP_COOKIE类型的会话保持
      cookieTimeout: 60    #会话保持超时时间
  reclaimPolicy: DeleteWhenOrphaned

Service多端口开启不同的健康检查

apiVersion: gateway.cce.io/v1alpha1
kind: PoolConfiguration
metadata:
  name: poolconfig-default
  namespace: default
spec:
  targetRef:
    group: ""
    kind: Service
    name: backend   #已有Service名称
  defaultConfig:
    lbAlgorithm: ROUND_ROBIN
    poolProtocol: HTTP
    sessionAffinity:
      type: HTTP_COOKIE
      cookieTimeout: 1440
    ipTargetEnable: false
    slowStart:
      enable: false
  ports:
    - port: 8080
      config:
        lbAlgorithm: LEAST_CONNECTIONS
        healthCheck:
          enable: true
          protocol: TCP
          delay: 3
          timeout: 5
          maxRetries: 2
    - port: 80
      config:
        lbAlgorithm: LEAST_CONNECTIONS
        healthCheck:
          enable: true
          protocol: TCP
          delay: 3
          timeout: 10
          maxRetries: 2
  reclaimPolicy: DeleteWhenOrphaned

PoolConfiguration配置参数说明

非必填或无默认值的字段,若不填/未指定(即null或省略该字段),系统均默认为保持已有配置不变,实际状态以ELB侧现有配置为准。只有显式传入新值(如传入空列表 [] 进行清空)时才会触发更新。

表1 poolConfig Spec

参数

是否必填

参数类型

描述

targetRef

是

PolicyTargetRef object

关联的Service引用(1:1关系,一个Service至多一个PoolConfiguration)。

defaultConfig

否

PoolConfig object

所有端口的基础池配置。

ports

否

Array of PortOverride objects

特定端口的配置覆盖列表,详情请参见不同端口的健康检查配置。

reclaimPolicy

否

String

当关联的目标资源(如Service)被删除时poolconfig的回收策略。无论选择哪种策略,绑定的底层云资源都将被释放。

  • Retain:保留poolconfig资源本身,后续需显式手动删除。
  • DeleteWhenOrphaned(默认):自动级联删除poolconfig资源。
表2 PolicyTargetRef

参数

是否必填

参数类型

描述

group

是

String

目标资源API Group。

kind

是

String

目标资源Kind,如Gateway(ListenerConfiguration)或Service(PoolConfiguration)。

name

是

String

目标资源名称。

表3 PoolConfig(defaultConfig和PortOverride.config共用)

参数

是否必填

参数类型

描述

lbAlgorithm

否

String

负载均衡算法,取值ROUND_ROBIN、LEAST_CONNECTIONS、SOURCE_IP,默认 ROUND_ROBIN,详情请参见会话保持。

  • ROUND_ROBIN:加权轮询算法。
  • LEAST_CONNECTIONS:加权最少连接算法。
  • SOURCE_IP:源IP算法。

poolProtocol

否

String

后端服务协议,取值HTTP、HTTPS,默认HTTP,详情请参见会话保持。

ipTargetEnable

否

Boolean

表示为ELB配置IP类型的后端,启用后该Service/Ingress添加的后端地址均为VPC子网内的IP。其中CCE Turbo集群的后端为<Pod IP>:<targetPort>,CCE Standard集群的后端为<节点IP>:<NodePort>。

注意:
  • 仅独享型ELB支持该特性。
  • ELB也需要同步开启IP类型的后端。

sessionAffinity

否

SessionAffinity object

会话保持配置,nil表示无会话保持;SOURCE_IP算法不能与会话保持组合,详情请参见会话保持。

slowStart

否

SlowStart object

慢启动配置,不配置时表示禁用;仅HTTP/HTTPS/GRPC + ROUND_ROBIN + 无会话保持时生效,仅独享型ELB支持,详情请参见配置慢启动持续时间。

healthCheck

否

HealthCheck object

健康检查配置,不设置时表示不开启健康检查,详情请参见健康检查。

表4 SessionAffinity

参数

是否必填

参数类型

描述

type

是

String

会话保持类型,取值HTTP_COOKIE、APP_COOKIE。

cookieName

否

String

APP_COOKIE模式的Cookie名称,type=APP_COOKIE时必填。

cookieTimeout

否

Integer

HTTP_COOKIE模式持久化超时,单位分钟,范围1-1440,默认1440。

表5 SlowStart

参数

是否必填

参数类型

描述

enable

是

Boolean

是否启用慢启动。

duration

否

Integer

慢启动持续时间,单位秒,范围30-1200,默认30。

表6 HealthCheck

参数

是否必填

参数类型

描述

enable

是

Boolean

是否启用健康检查。

protocol

否

String

健康检查协议,取值TCP、HTTP、HTTPS、GRPC、TLS,默认HTTP。

urlPath

否

String

健康检查URL路径,默认 /,仅protocol=HTTP/HTTPS适用。

delay

否

Integer

健康检查间隔,单位秒,范围1-50,默认5。

timeout

否

Integer

健康检查超时,单位秒,范围1-50,默认10。

maxRetries

否

Integer

连续失败次数上限,范围1-10,默认3。

expectedCodes

否

String

期望状态码范围,HTTP如200-399,gRPC如0-99,仅HTTP/HTTPS/GRPC适用。

monitorPort

否

Integer

健康检查端口,nil用Service端口,范围1-65535。

表7 PortOverride(用于ports列表项)

参数

是否必填

参数类型

描述

port

是

Integer

端口号。

config

否

PoolConfig object

该端口的覆盖配置,类型定义见PoolConfig。

相关文档