创建负载均衡器
负载均衡(Load Balancer)是将流量分发到容器实例的服务。通过负载均衡功能,自动分配计算组件的访问流量,转发给计算组件的容器实例。负载均衡可以提高计算组件的容错能力,扩展计算组件的对外服务能力,提高应用的可用性。
平台管理员可以为平台上的任意集群创建单点或高可用的负载均衡器,并统一管理和分配负载均衡器资源。例如将负载均衡分配给项目,控制仅具有相应项目权限的用户可以使用该负载均衡。
本节相关概念说明请参见下表。
| 参数 | 说明 |
|---|---|
| 负载均衡器 | 是一种把网络请求分散到一个集群中的可用节点上的软件或硬件设备,平台中使用的负载均衡器为七层软件负载均衡器。 |
| VIP | 虚拟 IP 地址(Virtual IP Address),是一种不与特定计算机或者特定计算机网卡相对应的 IP 地址。当负载均衡器为高可用类型时,访问地址应为 VIP。 |
前提条件
负载均衡器 的高可用需要 VIP,VIP 来源有如下两种方式。
使用 LoadBalancer 类型的内部路由提供 VIP
创建负载均衡器时开启了 内部路由 选项,系统将自动创建 LoadBalancer 类型内部路由为负载均衡器提供 VIP,使用前需确保当前集群支持 LoadBalancer 类型的内部路由,您可以使用平台自带的 LoadBalancer 内部路由实现,具体配置请参考 外部地址池 ;若关闭 内部路由 选项,需为负载均衡器配置访问地址。
集群外负载均衡器设备提供 VIP
-
请提前和网络工程师确定部署负载均衡器服务的 IP 地址(公网 IP、内网 IP、VIP)或域名。如果要使用域名作为外部流量访问负载均衡器的地址,需要提前申请好域名,并配置域名解析。建议使用商用负载均衡器提供 VIP,若没有则可使用 纯软数据中心 LB 方案(Alpha) 。
-
根据业务场景,外部负载均衡需要为所有正在使用的端口配置健康检查,以减少 ALB 升级中断时间。健康检查配置如下:
健康检查参数 说明 端口 - global 集群填写:11782。
- 业务集群填写: 1936。
协议 健康检查的协议类型,推荐使用 TCP。 响应超时时间 接收健康检查的响应需要等待的时间,推荐配置为 2 秒。 检查间隔时间 进行健康检查的时间间隔,推荐配置为 5 秒。 不健康阈值 健康检查连续失败多少次后,将后端服务器的健康检查状态由成功判定为失败的次数,推荐配置为 3 次。
创建负载均衡器
-
在左侧导航栏中,单击 网络管理 > 负载均衡器。
-
单击 创建负载均衡器。
-
参考以下说明完成网络配置。
参数 说明 网络模式 - 主机网络模式:单个节点只允许部署一个负载均衡器副本,多业务共用一个 ALB,网络性能表现更优。
- 容器网络模式:单个节点可部署多个负载均衡器副本,以满足各业务单独使用 ALB 的需求,网络性能略差。
内部路由及注解(Alpha) - 内部路由:开启时将创建 LoadBalancer 类型内部路由为负载均衡器提供访问地址,使用前需确保当前集群支持 LoadBalancer 类型的内部路由。您可以使用平台自带的 LoadBalancer 内部路由实现,具体配置请参考 外部地址池 ;关闭时需为负载均衡器配置访问地址。
- 注解:用于声明 LoadBalancer 类型内部路由的配置或者能力,具体请参考 LoadBalancer 类型内部路由注解说明 。
访问地址 负载均衡的访问地址,即负载均衡实例的服务地址。负载均衡创建成功后,即可通过该地址访问负载均衡。 - 主机网络模式下请根据实际情况填写,可以是域名或 IP 地址(内网 IP、外网 IP、VIP)。
- 容器网络模式下将自动获取。
-
参考以下说明完成资源配置。
参数 说明 规格 请根据业务需求合理设置规格。您也可参考 负载均衡器选型及规划 ,获取参考依据。 部署类型 - 单点:负载均衡器的容器组部署在单一节点上,若发生机器故障后,可能会导致负载均衡不可用的风险。
- 高可用:多个负载均衡的容器组部署在对应个数的节点上,通常为 3。满足大业务量负载均衡需求的同时,具备应急容灾能力。
副本数 副本数为负载均衡器的容器组个数。
提示:为保证负载均衡的高可用,建议副本数不小于 3。节点标签 通过标签筛选节点,用于部署负载均衡器。
提示:- 推荐符合要求的节点个数大于负载均衡器的副本数。
- 键相同的标签,仅可选中其中一个(选中多个时,将不会有符合条件的主机)。
资源分配方式 - 实例:负载均衡器实例可监听的 1-65535 范围内的任意端口,都可供项目使用。
- 端口(Alpha):仅指定范围内的端口可分配给项目使用。当端口资源有限时,此方式可满足更细粒度的资源管控。
分配项目 - 当 资源分配方式 为 实例 时,将负载均衡器分配给当前集群关联的全部项目或指定的项目,在被分配的项目中,所有命名空间下的 Pod 都可以接收到由该负载均衡分发的请求。
- 所有项目:将负载均衡器分配给当前集群关联的所有项目使用。
- 指定项目(Alpha):单击 指定项目 下拉选择框,单击项目名称左侧的复选框,选择一个或多个项目,将负载均衡器分配给指定的项目使用。
提示:在下拉框中输入项目名称可对项目进行模糊搜索。 - 不分配(Alpha):暂不分配项目。负载均衡器创建完成后,可通过 更新项目 操作,更新已创建负载均衡器的分配项目参数。
- 当 资源分配方式 为 端口 时,不需配置此项,请在创建完成负载均衡器后,手动分配端口信息,参考 分配端口 。
-
单击 创建。创建过程需要一段时间,请您耐心等待。
相关操作
更新负载均衡器
注意:更新负载均衡器将导致业务中断 3 至 5 分钟,请选择合适时间操作!
操作步骤
-
在左侧导航栏中,单击 网络管理 > 负载均衡器。
-
单击
> 更新。 -
按需更新网络及资源配置。
-
请根据业务需求合理设置规格。您也可阅读相关 负载均衡器选型及规划 ,获取参考依据。
-
内部路由 仅支持由 未开启 状态更新为 开启 状态。
-
-
单击 更新。
删除负载均衡器
注意:删除负载均衡器后,相关的端口和规则也将被删除且不可恢复。
操作步骤
-
在左侧导航栏中,单击 网络管理 > 负载均衡器。
-
单击
> 删除,并确认。
负载均衡器选型及规划
针对平台拟定的 小型、中型、大型 和 自定义 生产环境规格及 实例 、端口 的资源分配方式,可参考下述建议进行部署。
小型生产环境
如果业务规模较小,例如集群中节点个数不超过 5 个,且仅用于运行常规应用,使用 单个 负载均衡器即可。建议采用至少有 2 个副本的 高可用 模式,以保证环境稳定。
您可通过 端口 隔离方式,将负载均衡器提供给多项目共用。
此种规格在实验室环境下测得的 QPS 峰值约为 300 次/每秒。
中型生产环境
当业务量达到一定规模时,例如集群中节点个数不超过 30 个,除了运行常规应用,还需要处理高并发业务,使用 单个 负载均衡器也已足够。建议采用至少有 3 个副本的 高可用 模式,以保证环境稳定。
您可通过 端口 隔离或 实例 分配方式,将负载均衡器提供给多项目共用。当然,您也可新建负载均衡器供核心项目独占使用。
此种规格在实验室环境下测得的 QPS 峰值约为 10000 次/每秒。
大型生产环境
当业务量规模较大时,例如集群中包含不止 30 个节点,且除了运行常规应用,还需要处理高并发业务,甚至要处理长链接数据时,建议您使用 多个 负载均衡器,且每个负载均衡器均属于至少有 3 个副本的 高可用 类型,以保证环境稳定。
您可通过 端口 隔离或 实例 分配方式,将负载均衡器提供给多项目共用。当然,您也可新建负载均衡器供核心项目独占使用。
此种规格在实验室环境下测得的 QPS 峰值约为 20000 次/每秒。
特殊场景部署建议
| 场景 | 部署建议 |
|---|---|
| 功能试用 | 建议部署 单实例 的负载均衡器即可。 |
| 测试环境 | 若测试环境满足上述 小型 或 中型 的定义时,使用 单点 等负载均衡器即可。且可将负载均衡器 实例 提供给 多项目共用。 |
| 核心应用 | 建议为核心应用独占使用特定的负载均衡器。 |
| 传输大规模数据 | 由于负载均衡器本身导致的内存消耗甚微,即使对于 大型 规格,预留 2Gi 内存也已足够。但如果业务需要传输大规模数据,也即将导致大量内存消耗,应对应调高负载均衡器的内存规格。 建议您在 自定义 规格场景下,逐步扩充负载均衡器的内存。通过密切监控负载均衡器的内存使用情况,最终获得可达到合理内存使用率时的内存大小。 |
负载均衡器使用方式选型
| 使用方式 | 优势 | 劣势 |
|---|---|---|
| (推荐)负载均衡器按实例的资源分配方式分配给单个项目使用 |
|
主机网络模式的情况下,需要集群具备大量供负载均衡器使用的节点,对资源损耗要求高。 |
| 负载均衡器按实例的资源分配方式分配给多个项目使用 | 管理较为简单。 | 由于被分配的项目都拥有此负载均衡器实例的所有权限,当某个项目配置了负载均衡器的端口、规则时,可能会出现下述情况:
|
| 负载均衡器按端口的资源分配方式进行分配,不同项目使用不同的端口 | 项目间规则是项目隔离的,不会相互受到影响。 |
|
LoadBalancer 类型内部路由注解说明
AWS EKS 集群
EKS LoadBalancer 类型内部路由注解的详细说明请参考 注解使用文档 。
| Key | Value | 说明 |
|---|---|---|
| service.beta.kubernetes.io/aws-load-balancer-type | external:使用 AWS 官方的 AWS LoadBalancer Controller。 | 指定所使用的 LoadBalancer 类型内部路由控制器。 注意:请提前联系平台管理员部署 AWS LoadBalancer Controller。 |
| service.beta.kubernetes.io/aws-load-balancer-nlb-target-type |
|
指定流量送达容器组的方式。 |
| service.beta.kubernetes.io/aws-load-balancer-scheme |
|
指定使用内网或公网。 |
| service.beta.kubernetes.io/aws-load-balancer-ip-address-type |
|
指定支持的 IP 协议栈。 |
华为云 CCE 集群
CCE LoadBalancer 类型内部路由注解的详细说明请参考 注解使用文档 。
| Key | Value | 说明 |
|---|---|---|
| kubernetes.io/elb.id | 填写云上负载均衡器的 ID,需使用已有云上负载均衡器。 | |
| kubernetes.io/elb.autocreate | 示例:{“type”:“public”,“bandwidth_name”:“cce-bandwidth-1551163379627”,“bandwidth_chargemode”:“bandwidth”,“bandwidth_size”:5,“bandwidth_sharetype”:“PER”,“eip_type”:“5_bgp”,“available_zone”:[“cn-north-4b”],“l4_flavor_name”:“L4_flavor.elb.s1.small”} 注意:请先阅读 填写说明 ,并按需调整示例参数。 |
新创建云上负载均衡器。 |
| kubernetes.io/elb.subnet-id | 集群所在子网的 ID,当 Kubernetes 版本为 1.11.7-r0 及以下,新创建云上负载均衡器时必须填写此项。 | |
| kubernetes.io/elb.class |
|
指定新创建的云上负载均衡器的类型,具体请参考 独享型负载均衡与共享型弹性负载均衡的区别 。 |
| kubernetes.io/elb.enterpriseID | 指定新创建云上负载均衡器所属的企业项目。 |
Azure AKS 集群
AKS LoadBalancer 类型内部路由注解的详细说明请参考 注解使用文档 。
| Key | Value | 说明 |
|---|---|---|
| service.beta.kubernetes.io/azure-load-balancer-internal |
|
指定使用内网或公网。 |
Google GKE 集群
GKE LoadBalancer 类型内部路由注解的详细说明请参考 注解使用文档 。
| Key | Value | 说明 |
|---|---|---|
| networking.gke.io/load-balancer-type | Internal | 指定使用内网。 |
| loud.google.com/l4-rbs | enabled | 默认为公网。若配置此参数,流量将直接路由至容器组。 |