文档首页 > > 用户指南> 弹性伸缩> 创建节点伸缩策略

创建节点伸缩策略

分享
更新时间:2020/11/28 GMT+08:00

本章节介绍CCE中集群节点进行扩缩容的步骤。

前提条件

使用节点伸缩功能前,需要安装autoscaler插件,插件版本要求1.13.8及以上。

操作步骤

  1. CCE控制台中,单击左侧导航栏的“弹性伸缩”,在“节点伸缩”页签下,单击“创建节点伸缩策略”按钮。
  2. 进入创建节点伸缩策略页面,在“插件检测”步骤中:

    • 若插件名称后方显示,请单击插件后方的“现在安装”按钮,根据业务需求配置插件参数后单击“立即安装”,等待插件安装完成。
    • 若插件名称后方显示,则说明插件已安装成功。

  3. 确认插件已安装成功后,单击“下一步:策略配置”

    如果插件已提前安装成功,单击“创建节点伸缩策略”按钮后,在“插件检测”步骤中经过短暂检测后将直接进入“策略配置”步骤。

  4. 在打开的“创建节点伸缩策略”页面中,参照表1设置策略参数。

    表1 节点伸缩策略参数配置

    参数

    参数说明

    策略名称

    新建策略的名称,请自定义。

    关联节点池

    请单击“添加节点池”后选择要操作的节点池。您可以关联多个节点池,以使用相同的伸缩策略。

    执行规则

    单击“添加规则”,在弹出的添加规则窗口中设置如下参数:

    规则名称:请输入规则名称,可自定义。

    规则类型:可选择“指标触发”“周期触发”,两种类型区别如下:

    • 指标触发:
      • 触发条件:请选择“CPU分配率”“内存分配率”,输入百分比的值。该百分比应大于autoscaler插件中配置的缩容百分比。
        说明:

        分配率 = 节点池容器组(Pod)资源申请量 / 节点池Pod可用资源量 (Node Allocatable) 。

      • 执行动作:与上述“触发条件”相对应,达到触发条件值后所要执行的动作。如图1中所示,当内存分配率超过40%时将增加5个节点。
        图1 指标触发-执行动作
    • 周期触发:
      • 触发时间:可选择每天、每周、每月或每年的具体时间点,如图2所示,则为每天15:00触发。
        图2 周期触发时间
      • 执行动作:与上述“触发时间”相对应,达到触发时间值后所要执行的动作。如图3中所示,即每天15:00时将执行增加5个节点的动作。
        图3 定时触发-执行动作

    您可以单击“添加规则”,设置多条节点伸缩策略。您最多可以添加1条CPU使用率指标规则、1条内存使用率指标规则,且规则总数小于等于10条。

  5. 设置完成后,单击“创建”,在“完成”步骤中若显示“创建节点伸缩策略***任务提交成功”,可单击“返回节点策略”
  6. “节点伸缩”页签下,可以看到刚刚创建的节点伸缩策略。

    图4 节点伸缩策略

Yaml样例

节点伸缩策略Yaml样例如下:

apiVersion: autoscaling.cce.io/v1alpha1
kind: HorizontalNodeAutoscaler
metadata:
  creationTimestamp: "2020-02-13T12:47:49Z"
  generation: 1
  name: xxxx
  namespace: kube-system
  resourceVersion: "11433270"
  selfLink: /apis/autoscaling.cce.io/v1alpha1/namespaces/kube-system/horizontalnodeautoscalers/xxxx
  uid: c2bd1e1d-60aa-47b5-938c-6bf3fadbe91f
spec:
  disable: false
  rules:
  - action:
      type: ScaleUp
      unit: Node
      value: 1
    cronTrigger:
      schedule: 47 20 * * *
    disable: false
    ruleName: cronrule
    type: Cron
  - action:
      type: ScaleUp
      unit: Node
      value: 2
    disable: false
    metricTrigger:
      metricName: Cpu
      metricOperation: '>'
      metricValue: "40"
      unit: Percent
    ruleName: metricrule
    type: Metric
  targetNodepoolIds:
  - 7d48eca7-3419-11ea-bc29-0255ac1001a8
表2 关键参数说明

参数

参数类型

描述

spec.disable

Bool

伸缩策略开关,会对策略中的所有规则生效

spec.rules

Array

伸缩策略中的所有规则

spec.rules[x].ruleName

String

规则名称

spec.rules[x].type

String

规则类型,当前支持“Cron”和“Metric”两种类型

spec.rules[x].disable

Bool

规则开关,当前仅支持“false”

spec.rules[x].action.type

String

规则操作类型,当前仅支持“ScaleUp”

spec.rules[x].action.unit

String

规则操作单位,当前仅支持“Node”

spec.rules[x].action.value

Integer

规则操作数值

spec.rules[x].cronTrigger

/

可选,仅在周期规则中有效

spec.rules[x].cronTrigger.schedule

String

周期规则的cron表达式

spec.rules[x].metricTrigger

/

可选,仅在指标规则中有效

spec.rules[x].metricTrigger.metricName

String

指标规则对应的指标,当前支持“Cpu”和“Memory”两种类型

spec.rules[x].metricTrigger.metricOperation

String

指标规则的比较符,当前仅支持“>”

spec.rules[x].metricTrigger.metricValue

String

指标规则的阈值,支持1-100之间的所有整数,需以字符串表示

spec.rules[x].metricTrigger.Unit

String

指标规则阈值的单位,当前仅支持“%”

spec.targetNodepoolIds

Array

伸缩策略关联的所有节点池

spec.targetNodepoolIds[x]

String

伸缩策略关联节点池的uid

常见问题

  1. 如果多条规则同时满足条件,会如何执行?

    该问题有如下两种情况:

    • 如果同时配置了“CPU分配率”“内存分配率”的规则,两种或多种规则同时满足扩容条件时,执行扩容节点数更多的规则。
    • 如果同时配置了“CPU分配率”“周期触发”的规则,当达到“周期触发”的时间值时CPU也满足扩容条件时,较早执行的A规则会将节点池状态置为伸缩中状态,导致B规则无法正常执行。待A规则执行完毕,节点池状态恢复正常后,B规则也不会执行。

  2. 配置了CPU或者内存规则后,策略的检测周期是多久?是否只要一次检测出满足条件就会触发扩容节点?

    周期不固定,会因autoscaler每次循环的处理逻辑而变动。只要一次检测出满足条件就会触发扩容(当然还要满足冷却时间、节点池状态等约束条件)。

  3. 节点伸缩和autoscaler插件的本身功能如何配合?

    节点伸缩中创建的策略和autoscaler插件中的配置同时生效时,比如不可调度和指标规则同时满足时,优先执行不可调度扩容。

    • 若不可调度执行成功,跳过指标规则逻辑,进入下一次循环。
    • 若不可调度执行失败,才执行指标规则逻辑。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问