创建FederatedHPA策略以按指标扩缩工作负载
本小节将指导您创建FederatedHPA策略,以基于不同指标自动扩缩工作负载。
在创建FederatedHPA策略前,您可以参考FederatedHPA工作原理了解相关原理与概念。若您需要了解不同负载伸缩策略的差异,请参考负载伸缩概述。
约束与限制
FederatedHPA策略仅支持1.19及更高版本的集群创建。若您需要查询集群版本,请登录UCS控制台,单击需查询集群所在舰队名称,再单击“容器集群”即可。
创建FederatedHPA策略
控制台创建
- 登录UCS控制台,在左侧导航栏中选择“容器舰队”。
- 单击已开通集群联邦的容器舰队名称,进入容器舰队详情页面。
- 在左侧导航栏选择“负载伸缩”,在“指标伸缩策略”页签下,单击右上角的“创建指标伸缩策略”。
- 配置FederatedHPA策略参数。
表1 FederatedHPA策略参数配置 参数
参数说明
策略名称
FederatedHPA策略的名称。输入长度范围为4-63个字符。
命名空间
请选择需要自动扩缩的工作负载所在命名空间的名称。也可新建命名空间,具体操作请参见命名空间。
生效工作负载
请选择需要设置自动扩缩的工作负载的名称。也可新建工作负载,具体操作请参见工作负载。
实例范围
触发策略时,工作负载内Pod数量所能达到的最大值与最小值。
- 最小值:请输入1-299之间的正整数。
- 最大值:请输入1-1500之间的正整数,且填写值需大于实例范围最小值。
稳定窗口时长
稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。默认扩容稳定窗口时长为0秒,缩容稳定窗口时长为300秒。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?。
- 扩容:请输入0-3600之间的正整数,单位为秒。
- 缩容:请输入0-3600之间的正整数,单位为秒。
系统规则
若您需要基于系统指标对工作负载进行扩缩,则需配置该规则。
- 指标:可选择“CPU利用率”或“内存利用率”。
- 期待值:指标数据达到期待值时,触发扩缩。
自定义规则
若您需要基于自定义指标对工作负载进行扩缩,则需配置该规则。
- 自定义指标名称:在下拉框中选择自定义指标的名称。
- 指标来源:在下拉框中选择自定义指标所描述的对象类型,目前仅支持“Pod”。
- 期待值:指标数据达到期待值时,触发扩缩。
注意:- 自定义规则仅支持1.19及更高版本的集群创建。
- 使用自定义规则时,集群中需要安装支持采集自定义指标的插件,且工作负载需正常上报并采集自定义指标,详情请参见安装指标采集插件。
- 参数配置完成后,单击右下角“创建”,即可跳转指标伸缩策略列表查看策略详情,完成FederatedHPA策略创建。
命令行创建
- 使用kubectl连接集群联邦,具体操作请参见使用kubectl连接集群联邦。
- 创建并编辑fhpa.yaml文件,文件内容定义如下所示,关键参数定义请参见表2。
vi fhpa.yaml
本示例创建的FederatedHPA策略名称为hpa-example-hpa,作用于名称为hpa-example的工作负载,稳定窗口时长为扩容0秒、缩容300秒,最大Pod数为100、最小Pod数为2,包含两条系统指标规则(名称为“memory”和“cpu”)。其中,memory规则中内存利用率的期望值为50%,cpu规则中CPU利用率的期望值为60%。
apiVersion: autoscaling.karmada.io/v1alpha1 kind: FederatedHPA metadata: name: hpa-example-hpa # FederatedHPA策略名称 namespace: default # 工作负载所在命名空间名称 spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: hpa-example # 工作负载名称 behavior: scaleDown: stabilizationWindowSeconds: 300 # 缩容的稳定窗口时长为300秒 scaleUp: stabilizationWindowSeconds: 0 # 扩容的稳定窗口时长为0秒 minReplicas: 2 # 最小Pod数为2 maxReplicas: 100 # 最大Pod数为100 metrics: - type: Resource resource: name: memory # 第一条规则名称 target: type: Utilization # 指标类型为利用率 averageUtilization: 50 # 期望的平均利用率 - type: Resource resource: name: cpu # 第二条规则名称 target: type: Utilization # 指标类型为利用率 averageUtilization: 60 # 期望的平均利用率
表2 关键参数说明 参数
是否必填
参数类型
描述
stabilizationWindowSeconds
否
String
缩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为300秒。
说明:稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?。
stabilizationWindowSeconds
否
String
扩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为0秒。
minReplicas
是
String
触发策略时,工作负载内Pod数量所能缩容到的最小值,请输入1-299之间的正整数。
maxReplicas
是
String
触发策略时,工作负载内Pod数量所能扩容到的最大值,请输入1-1500之间的正整数,且输入值需大于实例范围最小值。
name
是
String
规则名称。基于系统指标进行弹性伸缩时,基于内存利用率的规则名称为memory,基于CPU利用率的规则名称为cpu。
type
是
String
指标类型。
- Value:总量
- AverageValue:平均量 = 总量 / 当前Pod数
- Utilization:利用率 = 平均量 / 申请量
averageUtilization
是
String
指标数据达到期待值时,触发扩缩。
- 执行如下命令创建FederatedHPA策略。
kubectl apply -f fhpa.yaml
回显如下表明创建成功。
FederatedHPA.autoscaling.karmada.io/hpa-example-hpa created
创建完成后,可以执行如下命令观察负载伸缩的运行效果。
- 检查工作负载的当前Pod数:kubectl get deployments
- 查看FederatedHPA策略事件(仅保留最近三条):kubectl describe federatedhpa hpa-example-hpa
可以执行如下命令管理FederatedHPA策略。其中hpa-example-hpa为FederatedHPA策略的名称,实际情况中需修改为自己所创建的策略名称。
- 获取FederatedHPA策略:kubectl get federatedhpa hpa-example-hpa
- 更新FederatedHPA策略:kubectl edit federatedhpa hpa-example-hpa
- 删除FederatedHPA策略:kubectl delete federatedhpa hpa-example-hpa