更新时间:2025-09-04 GMT+08:00
分享

集群弹性引擎

插件简介

集群弹性引擎是一个对集群中ModelArts资源池进行进行弹性伸缩的插件。 集群弹性引擎可以根据用户配置的规则对各节点池进行扩容或者缩容。

约束与限制

  • 集群弹性引擎支持对集群中按需计费和包周期的Lite Cluster资源池节点进行扩容和缩容。
  • 资源规格售罄和底层容量不足会导致扩容失败。
  • 集群弹性引擎不支持对整柜购买的Lite Cluster资源池进行弹性伸缩。
  • 集群弹性引擎插件使用用户全局委托的权限操作资源池,如果全局委托中涉及资源池操作相关的黑名单策略,需要先删除黑名单。
    1. ModelArts管理控制台“权限管理”页面获取当前“授权对象”对应的“授权内容”,即当前用户所授予的委托名称。
      图1 授权内容
    2. 前往IAM控制台的委托页面,找到上一步骤获取的委托名称,单击操作列的“修改”
      图2 IAM委托
    3. 单击“授权记录”,切换至授权记录页签。
    4. 单击ModelArts CommonOperations操作列的“删除”,在对话框中单击“确定”,删除ModelArts CommonOperations权限。
      图3 删除ModelArts CommonOperations权限

安装插件

  1. 登录ModelArts管理控制台,在左侧菜单栏中选择资源管理 > 轻量算力集群(Lite Cluster),进入“轻量算力集群 (Lite Cluster)”页面。
  2. 单击资源池名称,进入资源池详情页。
  3. 在资源池详情页,切换到“插件”页签。
  4. 在未安装插件列表中,选择待安装的插件,单击“安装”

    在新创建的资源池上,如果在未手动安装集群弹性引擎插件前,集群弹性引擎插件出现在已安装插件列表中,表示新创建的资源池选择的CCE集群曾经安装过集群弹性引擎插件,请先将集群弹性引擎插件卸载后重新安装。

    图4 安装插件
  5. “安装插件”弹框中,配置相关参数。
    集群弹性引擎插件参数说明如下。
    表1 集群弹性引擎插件配置参数说明

    参数

    子参数

    说明

    规格配置

    插件版本

    指定部署的集群弹性引擎插件版本

    插件规格

    指定插件部署的规格。可选预置的规格或自定义规格。

  6. 阅读使用说明,勾选“我已阅读并知晓上述使用说明”
  7. 单击“确定”

配置节点池弹性伸缩策略

安装集群弹性引擎插件后,需要为节点池配置弹性伸缩策略。

弹性伸缩支持扩缩容按需计费节点。

自动缩容可能导致已配置的节点被删除且不可恢复,请谨慎操作。

  1. 在资源池详情页,切换到“节点池管理”页签。
  2. 单击操作列的“弹性伸缩配置”
  3. 在弹性伸缩配置弹框中配置节点池伸缩策略。
    • 弹性扩容

      开启后,支持节点池自动扩容。每个节点池支持最多添加6个扩容规则。

      表2 弹性扩容参数说明

      参数

      说明

      自定义扩容规则

      单击“添加规则”,在弹出的添加规则窗口中设置扩容规则的参数。

      规则类型分为“周期触发”“指标触发”。每个节点池支持最多添加6个扩容规则:5个周期触发类扩容规则,1个指标触发类扩容规则。不能添加相同的周期触发类扩容规则。不能添加多个指标触发规格。

      扩容规则参数说明请见表3

      节点池资源上限(个)

      节点池中的总节点数达到配置的资源上限后将不再自动扩容。另外,如果当前节点数+期望扩容节点数>节点池上限,也不会触发扩容,这是为了保证扩容操作的原子性。

      表3 扩容规则参数说明

      扩容规则类型

      参数配置

      周期触发

      在特定时间段内自动扩容节点池下的节点数量,优化资源与需求的匹配,降低成本。

      • 触发时间:可选择每天、每周、每月或每年的具体时间点。触发时间基于节点所在时区计算。
      • 增加节点数(个):弹性伸缩时节点池下的节点增加数量。

      指标触发

      基于NPU利用率动态扩容节点池下的节点数,提升任务执行效率。

      • 触发条件:当前暂时仅支持NPU利用率触发扩容。当检测到节点的NPU使用率较低时,系统可能会将任务迁移到这些节点,或者调整节点数量以更好地匹配需求。

        NPU利用率=节点池容器组 (Pod)资源申请值/节点Pod可用资源值 (Node Allocatable)

        注意该百分比应大于autoscaler插件配置的缩容百分比

      • 指定动作:
        • 自定义:自定义弹性伸缩时节点池下的节点增加数量。
        • 自动计算:当达到触发条件时,将自动扩容节点,直至利用率恢复到触发条件以下。

          增加节点数=节点池容器组 (Pod)资源申请值/(单节点可用资源值 * 目标节点数)-当前节点+1

    • 弹性缩容

      开启后,将综合判断整集群的资源情况,在满足负载迁移后能够正常调度运行的前提下,自动筛选节点来进行缩容。

      表4 弹性缩容参数说明

      参数

      说明

      节点池资源下限(个)

      节点池中的总节点数缩小至配置的资源下限后将不再自动缩容。

      弹性缩容时,需要配置节点资源池下限 (minCount),否则该节点池自动缩容无法生效。

      冷却时间(分钟)

      触发弹性扩容后,再次启动缩容评估的冷却时间。

  4. 设置完成后,单击“确定”。

指标触发弹性伸缩配置

如果配置节点池弹性伸缩策略时,使用节点池卡分配率指标ma_node_pool_allocate_card_util作为弹性伸缩策略,需要进行相关配置。

  1. 安装云原生插件,选择本地存储,并开启自定义指标采集功能,详情请见创建使用自定义指标的HPA策略
  2. 创建external APIServices,并使用kubectl apply将配置应用到k8s集群。

    a.登录CCE控制台,通过右上角【命令行工具】进入该集群的shell页面。

    b.创建external.yaml文件,并将下面的yaml内容保存到该文件

    c.执行kubectl apply -f external.yaml
    apiVersion: 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
  3. 增加普罗插件自定义external指标。更多详情请见修改配置文件
    1. 登录CCE控制台,单击集群名称进入集群。在集群控制台左侧导航栏中选择“配置与密钥”,切换至“monitoring”命名空间。
    2. 更新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
  4. 在CCE控制台,单击左侧“集群管理”,进入集群管理页面。
  5. 单击集群名称进入集群,在左侧选择“工作负载”,默认进入“无状态负载”页签。切换至“monitoring”命名空间。选择custom-metrics-apiserver实例,单击工作负载后的“更多 > 重新部署”,执行重新部署操作。
  6. 重部署完成后,可以通过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}}

组件说明

表5 集群弹性引擎Nodescaler组件

容器组件

说明

资源类型

nodescaler-controller-manager

负责资源池的弹性扩缩。

Deployment

版本记录

表6 集群弹性引擎插件版本记录

插件版本

更新特性

0.1.20

支持自定义定时扩容、NPU分配率扩容和基于负载的空闲节点自动缩容。

相关文档