云服务器内容精选

  • 为什么需要控制扩缩速率 HPA controller默认的扩缩容总原则是:快速扩容,低速缩容。然而,若仅依靠配置稳定窗口时长,在窗口时长过后即失去了对扩缩容速率的控制能力,无法真正实现对扩缩容速率的准确控制。您可以通过配置负载伸缩策略的YAML文件中spec的behavior结构,来更准确灵活地控制FederatedHPA的自动扩缩速度。该结构支持为每个FederatedHPA策略独立配置扩缩容速率,以及为扩容与缩容配置不同的速率。
  • 创建FederatedHPA策略 控制台创建 登录U CS 控制台,在左侧导航栏中选择“容器舰队”。 单击已开通集群联邦的容器舰队名称,进入容器舰队详情页面。 在左侧导航栏选择“负载伸缩”,在“指标伸缩策略”页签下,单击右上角的“创建指标伸缩策略”。 配置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: FederatedHPAmetadata: 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