自动创建负载均衡配置(lbconfig)
LoadBalancerAutoCreateConfiguration(lbconfig)用于定义ELB(弹性负载均衡)的创建参数。您只需将配置好的lbconfig关联至自定义GatewayClass或Gateway,CCE即可根据预设参数自动为您创建对应的ELB实例。CCE默认提供了5种预置的GatewayClass,可满足绝大多数场景的需求(详见默认GatewayClass)。当预置GatewayClass绑定的底层ELB参数(如规格、带宽等)无法满足需求时,您可以参考本文创建自定义lbconfig并完成关联,实现ELB创建参数的按需定制。
前提条件
集群版本已支持ELB Gateway功能。
约束与限制
修改lbconfig不会变更已有Gateway的ELB配置,更改仅对新创建的Gateway生效。
操作步骤
步骤一:创建lbconfig资源
apiVersion: gateway.cce.io/v1alpha1
kind: LoadBalancerAutoCreateConfiguration
metadata:
name: my-lb-config
# 注意:lbconfig 是集群级资源(Cluster-scoped),不设 namespace
spec:
name: "cce-lb-my-gateway" # 创建的 ELB 名称
guaranteed: true # 是否创建独享型 ELB:true=独享型 / false=共享型
tags: # ELB 实例标签
- key: "my-tag-key" # 标签键
value: "my-tag-value" # 标签值
vipSubnetCIDRID: "subnet-cidr-id-xxx" # ELB 前端子网 CIDR ID
elbVipAddress: "192.168.1.100" # ELB VIP 地址,不填则自动分配
loadbalanceReclaimPolicy: alwaysDelete #自动创建ELB的回收策略
ipv6BandWidthID: "" # 已有的 IPv6 共享带宽 ID,仅独享型支持
publicIP: # 公网 IP 配置
networkType: "5_bgp" # 公网 IP 网络类型
bandwidth: # 带宽配置
bandwidthName: "my-bandwidth" # 带宽名称
bandwidthSize: 10 # 带宽大小(Mbit/s)
bandwidthChargeMode: "bandwidth" # 计费模式:bandwidth=按带宽 / traffic=按流量
bandwidthShareType: "PER" # 带宽共享类型:PER=独享 / WHOLE=共享
bandwidthID: "" # 已有的共享带宽 ID,加入该带宽(不新创建)
enterpriseProjectID: "0" # 企业项目 ID
elbVirSubnetIDs: # ELB 后端子网 ID 列表,仅独享型支持
- "vir-subnet-id-1"
- "vir-subnet-id-2"
elbIPv6SubnetID: "ipv6-subnet-id" # ELB IPv6 前端子网 ID,仅独享型支持
l4FlavorID: "flavor-l4-xxx" # 四层规格 ID,仅独享型支持
l4FlavorName: "" # 四层规格名称,仅独享型支持
l7FlavorID: "flavor-l7-xxx" # 七层规格 ID,仅独享型支持
l7FlavorName: "" # 七层规格名称,仅独享型支持
availabilityZones: # 可用区列表,仅独享型支持
- "az-1"
- "az-2" 步骤二:关联lbconfig至Gateway
您可以根据实际管理需求,选择以下任意一种方式进行关联:
- 方式一:通过GatewayClass统一关联(推荐)
适用场景:集群管理员统一运维。由管理员创建GatewayClass并绑定lbconfig,开发人员后续只需声明该GatewayClass即可直接继承ELB配置。
- 创建GatewayClass并关联lbconfig:在parametersRef中引用步骤1创建的lbconfig。
apiVersion: gateway.networking.k8s.io/v1 kind: GatewayClass metadata: name: my-cce-gateway-class spec: controllerName: gateway.cce.io/gateway-controller #cce 管理的gatewayControllerName parametersRef: group: gateway.cce.io kind: LoadBalancerAutoCreateConfiguration name: lbconfig-plb-basic # 创建的自定义lbConfig名称 - 创建Gateway:声明使用上述GatewayClass。
apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: my-cce-gateway namespace: default spec: gatewayClassName: my-cce-gateway-class listeners: - name: default-http port: 80 protocol: HTTP
- 创建GatewayClass并关联lbconfig:在parametersRef中引用步骤1创建的lbconfig。
- 方式二:在Gateway级别直接关联
适用场景:单个Gateway业务的特化定制。无需新建GatewayClass,直接在Gateway资源中指定lbconfig。
apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: my-gateway namespace: default spec: gatewayClassName: cce-dedicated-external #gatewayClass名称 infrastructure: parametersRef: group: gateway.cce.io kind: LoadBalancerAutoCreateConfiguration name: lbconfig-plb-basic # 创建的自定义lbConfig名称 listeners: - name: http protocol: HTTP port: 82
当Gateway与它所使用的GatewayClass同时配置了lbconfig时,Gateway级别的配置优先级更高,将自动覆盖GatewayClass级别的配置。
LoadBalancerAutoCreateConfiguration参数说明
| 参数 | 是否必填 | 参数类型 | 描述 |
|---|---|---|---|
| name | 否 | String | 自动创建的负载均衡的名称。 取值范围:只能由中文、英文字母、数字、下划线、中划线、点组成,且长度范围为1-64个字符。 默认名称:cce-gw+gateway.UID |
| guaranteed | 否 | Boolean | 负载均衡实例类型,独享型或者共享型。 取值如下
默认类型:false |
| availabilityZones | 否 | Array of strings | 负载均衡所在可用区。 可以通过查询可用区列表获取所有支持的可用区。 独享型负载均衡器独有字段。 |
| vipSubnetCIDRID | 否 | String | 填写子网的IPv4子网ID,指定ELB所在的子网,用于分配ELB实例对外服务的IP地址,该子网必须属于集群所在的VPC。 如不指定,则默认与集群在同一个子网。 仅v1.21及以上版本的集群支持指定该字段。 获取方式: 登录VPC控制台,在左侧导航栏选择“子网”,根据集群所在的VPC名称筛选子网,单击子网名称,在“基本信息”页签下找到“IPv4子网ID”字段复制即可。 |
| elbVirSubnetIDs | 否 | Array of strings | 填写子网的网络ID,指定负载均衡后端所在子网,用于分配与后端服务建立连接的IP地址,不填默认为vip_subnet_cidr_id参数所选的子网。不同实例规格将占用不同数量子网IP,不建议使用其他资源(如集群,节点等)的子网网段。 独享型负载均衡器独有字段。 获取方式: 登录VPC控制台,在左侧导航栏选择“子网”,根据集群所在的VPC名称筛选子网,单击子网名称,在“基本信息”页签下找到“网络ID”字段复制即可。 |
| elbVipAddress | 否 | String | 负载均衡器的内网IP。仅支持指定IPv4地址,不支持指定IPv6地址。 该IP必须为ELB所在子网网段中的IP。若不指定,自动从ELB所在子网网段中生成一个IP地址。 |
| l4FlavorName | 否 | String | 四层负载均衡实例规格名称。需要使用TCP、UDP、TLS协议时必填。 可以通过查询规格列表获取所有支持的类型。
独享型负载均衡器独有字段。 |
| l7FlavorName | 否 | String | 七层负载均衡实例规格名称。使用HTTP/HTTPS协议时必填。 可以通过查询规格列表获取所有支持的类型。
独享型负载均衡器独有字段,必须与l4_flavor_name对应规格的类型一致,即都为弹性规格或都为固定规格。 |
| tags | 否 | Array of ELBTag objects | ELB 实例标签列表 |
| loadbalanceReclaimPolicy | 否 | String | 自动创建的ELB配置回收策略,取值如下:
默认值 :alwaysDelete |
| publicIP | 否 | PublicIP object | 公网 IP 配置 |
| ipTargetEnable | 否 | Boolean | 指定是否启用 IP 地址后端。
|
| 参数 | 是否必填 | 参数类型 | 描述 |
|---|---|---|---|
| networkType | 是 | String | 公网IP网络类型,如5_bgp、5_sbgp |
| bandwidth | 是 | Bandwidth Object | 带宽配置 |
| 参数 | 是否必填 | 参数类型 | 描述 |
|---|---|---|---|
| bandwidthShareType | 否 | String | 带宽共享类型,如PER、WHOLE |
| bandwidthSize | 否 | Integer | 带宽大小,默认1Mbit/s~2000Mbit/s,请根据Region带宽支持范围设置。 调整带宽时的最小单位会根据带宽范围不同存在差异。
|
| bandwidthChargeMode | 否 | String | 带宽付费模式。
|
| bandwidthID | 否 | String | 已有共享带宽ID |
| bandwidthName | 否 | String | 带宽的名称,默认值为:cce-bandwidth-******。 取值范围:只能由中文、英文字母、数字、下划线、中划线、点组成,且长度范围为1-64个字符。 |
| ipv6BandWidthID | 否 | String | 已有IPv6共享带宽ID,仅独享型ELB |