集群弹性引擎
插件简介
集群弹性引擎是一个对集群中ModelArts资源池进行进行弹性伸缩的插件。 集群弹性引擎可以根据用户配置的规则对各节点池进行扩容或者缩容。
约束与限制
- 集群弹性引擎支持对集群中按需计费和包周期的Lite Cluster资源池节点进行扩容和缩容。
- 资源规格售罄和底层容量不足会导致扩容失败。
- 集群弹性引擎不支持对整柜购买的Lite Cluster资源池进行弹性伸缩。
- 集群弹性引擎插件使用用户全局委托的权限操作资源池,如果全局委托中涉及资源池操作相关的黑名单策略,需要先删除黑名单。
- 在ModelArts管理控制台的“权限管理”页面获取当前“授权对象”对应的“授权内容”,即当前用户所授予的委托名称。
图1 授权内容
- 前往IAM控制台的委托页面,找到上一步骤获取的委托名称,单击操作列的“修改”。
图2 IAM委托
- 单击“授权记录”,切换至授权记录页签。
- 单击ModelArts CommonOperations操作列的“删除”,在对话框中单击“确定”,删除ModelArts CommonOperations权限。
图3 删除ModelArts CommonOperations权限
- 在ModelArts管理控制台的“权限管理”页面获取当前“授权对象”对应的“授权内容”,即当前用户所授予的委托名称。
安装插件
- 登录ModelArts管理控制台,在左侧菜单栏中选择 ,进入“轻量算力集群 (Lite Cluster)”页面。
- 单击资源池名称,进入资源池详情页。
- 在资源池详情页,切换到“插件”页签。
- 在未安装插件列表中,选择待安装的插件,单击“安装”。
在新创建的资源池上,如果在未手动安装集群弹性引擎插件前,集群弹性引擎插件出现在已安装插件列表中,表示新创建的资源池选择的CCE集群曾经安装过集群弹性引擎插件,请先将集群弹性引擎插件卸载后重新安装。
图4 安装插件 - 在“安装插件”弹框中,配置相关参数。
- 阅读使用说明,勾选“我已阅读并知晓上述使用说明”。
- 单击“确定”。
配置节点池弹性伸缩策略
安装集群弹性引擎插件后,需要为节点池配置弹性伸缩策略。
弹性伸缩支持扩缩容按需计费节点。

自动缩容可能导致已配置的节点被删除且不可恢复,请谨慎操作。
- 在资源池详情页,切换到“节点池管理”页签。
- 单击操作列的“弹性伸缩配置”。
- 在弹性伸缩配置弹框中配置节点池伸缩策略。
- 弹性扩容
开启后,支持节点池自动扩容。每个节点池支持最多添加6个扩容规则。
表2 弹性扩容参数说明 参数
说明
自定义扩容规则
单击“添加规则”,在弹出的添加规则窗口中设置扩容规则的参数。
规则类型分为“周期触发”和“指标触发”。每个节点池支持最多添加6个扩容规则:5个周期触发类扩容规则,1个指标触发类扩容规则。不能添加相同的周期触发类扩容规则。不能添加多个指标触发规格。
扩容规则参数说明请见表3。
节点池资源上限(个)
节点池中的总节点数达到配置的资源上限后将不再自动扩容。另外,如果当前节点数+期望扩容节点数>节点池上限,也不会触发扩容,这是为了保证扩容操作的原子性。
- 弹性缩容
开启后,将综合判断整集群的资源情况,在满足负载迁移后能够正常调度运行的前提下,自动筛选节点来进行缩容。
表4 弹性缩容参数说明 参数
说明
节点池资源下限(个)
节点池中的总节点数缩小至配置的资源下限后将不再自动缩容。
弹性缩容时,需要配置节点资源池下限 (minCount),否则该节点池自动缩容无法生效。
冷却时间(分钟)
触发弹性扩容后,再次启动缩容评估的冷却时间。
- 弹性扩容
- 设置完成后,单击“确定”。
指标触发弹性伸缩配置
如果配置节点池弹性伸缩策略时,使用节点池卡分配率指标ma_node_pool_allocate_card_util作为弹性伸缩策略,需要进行相关配置。
- 安装云原生插件,选择本地存储,并开启自定义指标采集功能,详情请见创建使用自定义指标的HPA策略。
- 创建external APIServices,并使用kubectl apply将配置应用到k8s集群。
a.登录CCE控制台,通过右上角【命令行工具】进入该集群的shell页面。
b.创建external.yaml文件,并将下面的yaml内容保存到该文件
c.执行kubectl apply -f external.yamlapiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: labels: app: external-metrics-apiserver release: cceaddon-prometheus name: v1beta1.external.metrics.k8s.io spec: group: external.metrics.k8s.io groupPriorityMinimum: 100 insecureSkipTLSVerify: true service: name: custom-metrics-apiserver namespace: monitoring port: 443 version: v1beta1 versionPriority: 100
- 增加普罗插件自定义external指标。更多详情请见修改配置文件。
- 登录CCE控制台,单击集群名称进入集群。在集群控制台左侧导航栏中选择“配置与密钥”,切换至“monitoring”命名空间。
- 更新user-adapter-config配置项,通过修改user-adapter-config中rules字段将Prometheus暴露出的指标转换为HPA可关联的指标。
apiVersion: v1 kind: ConfigMap metadata: name: user-adapter-config namespace: monitoring data: config.yaml: | rules: [] ... #以下内容为新增内容 externalRules: - seriesQuery: '{__name__="ma_node_allocate_card_util",pool_id!=""}' metricsQuery: avg(<<.Series>>{<<.LabelMatchers>>}) by (pool_id,node_pool) resources: overrides: pool_id: resource: namespace name: as: ma_node_pool_allocate_card_util
- 在CCE控制台,单击左侧“集群管理”,进入集群管理页面。
- 单击集群名称进入集群,在左侧选择“工作负载”,默认进入“无状态负载”页签。切换至“monitoring”命名空间。选择custom-metrics-apiserver实例,单击工作负载后的“更多 > 重新部署”,执行重新部署操作。
- 重部署完成后,可以通过CCE控制台的命令行工具查看当前指标的值。命令如下,其中pool_id为资源池ID,node_pool参数为节点池名;查询默认节点池时,该参数传空值。
kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/namespaces/{{pool_id}}/ma_node_pool_allocate_card_util?labelSelector=node_pool={{node_pool_name}}
组件说明
容器组件 |
说明 |
资源类型 |
---|---|---|
nodescaler-controller-manager |
负责资源池的弹性扩缩。 |
Deployment |
相关操作
版本记录
插件版本 |
更新特性 |
---|---|
0.1.20 |
支持自定义定时扩容、NPU分配率扩容和基于负载的空闲节点自动缩容。 |