CCE的自动伸缩能力是通过节点自动伸缩组件autoscaler实现的,可以按需弹出节点实例,支持多可用区、多实例规格、多种伸缩模式,满足不同的节点伸缩场景。
使用节点伸缩功能前,需要安装autoscaler插件,插件版本要求1.13.8及以上。
节点伸缩策略中不能直接设置缩容策略,你可以在安装autoscaler时进行设置。
节点缩容仅支持资源分配率缩容机制,当集群下CPU和内存分配率低于您设置的门限(在安装/编辑autoscaler插件时设置)时将对节点池下节点启动缩容(该功能可以关闭)。
步骤 1 在CCE控制台中,单击左侧导航栏的“弹性伸缩”,在“节点伸缩”页签下,单击“创建节点伸缩策略”按钮。
步骤 2 进入创建节点伸缩策略页面,在“插件检测”步骤中:
- 若插件名称后方显示,请单击插件后方的“现在安装”按钮,根据业务需求配置插件参数后单击“立即安装”,等待插件安装完成。
- 若插件名称后方显示,则说明插件已安装成功。
步骤 3 确认插件已安装成功后,单击“下一步:策略配置”。
说明:如果插件已提前安装成功,单击“创建节点伸缩策略”按钮后,在“插件检测”步骤中经过短暂检测后将直接进入“策略配置”步骤。
步骤 4 在打开的“创建节点伸缩策略”页面中,参照下表设置策略参数。
表-节点伸缩策略参数配置
参数 | 参数说明 |
策略名称 | 新建策略的名称,请自定义。 |
关联节点池 | 请单击“添加节点池”后选择要操作的节点池。您可以关联多个节点池,以使用相同的伸缩策略。 |
执行规则 | 单击“添加规则”,在弹出的添加规则窗口中设置如下参数: 规则名称:请输入规则名称,可自定义。 规则类型:可选择“指标触发”或“周期触发”,两种类型区别如下:
− 触发条件:请选择“CPU分配率”或“内存分配率”,输入百分比的值。该百分比应大于autoscaler插件中配置的缩容百分比。 说明: 分配率 = 节点池容器组(Pod)资源申请量 / 节点池Pod可用资源量 (Node Allocatable) 。 − 执行动作:与上述“触发条件”相对应,达到触发条件值后所要执行的动作。
− 触发时间:可选择每天、每周、每月或每年的具体时间点。 − 执行动作:与上述“触发时间”相对应,达到触发时间值后所要执行的动作。 您可以单击“添加规则”,设置多条节点伸缩策略。您最多可以添加1条CPU使用率指标规则、1条内存使用率指标规则,且规则总数小于等于10条。 |
步骤 5 设置完成后,单击“创建”,在“完成”步骤中若显示“创建节点伸缩策略***任务提交成功”,可单击“返回节点策略”。
步骤 6 在“节点伸缩”页签下,可以看到刚创建的节点伸缩策略。
节点伸缩策略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
表-关键参数说明
参数 | 参数类型 | 描述 |
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 |