华为云UCS-volcano:安装插件

时间:2023-11-01 16:25:09

安装插件

  1. 登录U CS 控制台,单击集群名称进入集群,单击左侧导航栏的“插件管理”,找到Volcano,单击“安装”
  2. 该插件可配置“单实例”“高可用”或自定义规格。

    选择自定义时,volcano-controller和volcano-scheduler的建议值如下:

    • 小于100个节点,可使用默认配置,即CPU的申请值为500m,限制值为2000m;内存的申请值为500Mi,限制值为2000Mi。
    • 高于100个节点,每增加100个节点(10000个Pod),建议CPU的申请值增加500m,内存的申请值增加1000Mi;CPU的限制值建议比申请值多1500m,内存的限制值建议比申请值多1000Mi。

      申请值推荐计算公式:

      • CPU申请值:计算“目标节点数 * 目标Pod规模”的值,并在表1中根据“集群节点数 * Pod规模”的计算值进行插值查找,向上取最接近规格的申请值及限制值。

        例如2000节点和2w个Pod的场景下,“目标节点数 * 目标Pod规模”等于4000w,向上取最接近的规格为700/7w(“集群节点数 * Pod规模”等于4900w),因此建议CPU申请值为4000m,限制值为5500m。

      • 内存申请值:建议每1000个节点分配2.4G内存,每1w个Pod分配1G内存,二者叠加进行计算。(该计算方法相比表1中的建议值会存在一定的误差,通过查表或计算均可)

        即:内存申请值 = 目标节点数/1000 * 2.4G + 目标Pod规模/1w * 1G。

        例如2000节点和2w个Pod的场景下,内存申请值 = 2 * 2.4G + 2 * 1G = 6.8G

      表1 volcano-controller和volcano-scheduler的建议值

      集群节点数/Pod规模

      CPU Request(m)

      CPU Limit(m)

      Memory Request(Mi)

      Memory Limit(Mi)

      50/5k

      500

      2000

      500

      2000

      100/1w

      1000

      2500

      1500

      2500

      200/2w

      1500

      3000

      2500

      3500

      300/3w

      2000

      3500

      3500

      4500

      400/4w

      2500

      4000

      4500

      5500

      500/5w

      3000

      4500

      5500

      6500

      600/6w

      3500

      5000

      6500

      7500

      700/7w

      4000

      5500

      7500

      8500

  3. 选择插件实例是否多可用区部署。

    • 优先模式:优先将插件的Deployment实例调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将调度到单可用区。
    • 强制模式:插件Deployment实例强制调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将无法全部运行。

  4. 配置插件实例节点亲和策略。

    • 指定节点调度:指定插件实例部署的节点 ,若不指定,将根据集群默认调度策略进行随机调度。
    • 自定义亲和策略:填写期望插件部署的节点标签实现更灵活的调度策略,若不填写将根据集群默认调度策略进行随机调度。自定义亲和策略详情请参见调度策略(亲和与反亲和)

  5. 配置volcano默认调度器配置参数,详情请参见表2

    colocation_enable: ''default_scheduler_conf:  actions: 'allocate, backfill'  tiers:    - plugins:        - name: 'priority'        - name: 'gang'        - name: 'conformance'        - name: 'lifecycle'          arguments:            lifecycle.MaxGrade: 10            lifecycle.MaxScore: 200.0            lifecycle.SaturatedTresh: 1.0            lifecycle.WindowSize: 10    - plugins:        - name: 'drf'        - name: 'predicates'        - name: 'nodeorder'    - plugins:        - name: 'cce-gpu-topology-predicate'        - name: 'cce-gpu-topology-priority'        - name: 'cce-gpu'    - plugins:        - name: 'nodelocalvolume'        - name: 'nodeemptydirvolume'        - name: 'nodeCSIscheduling'        - name: 'networkresource'
    表2 Volcano插件配置参数说明

    插件

    功能

    参数说明

    用法演示

    colocation_enable

    是否开启混部能力。

    参数值:

    • true:表示开启混部。
    • false:不是不开启混部。

    -

    binpack

    将Pod调度到资源使用较高的节点以减少资源碎片

    • binpack.weight:binpack插件本身在所有插件打分中的权重
    • binpack.cpu:CPU资源在资源比重的比例,默认是1
    • binpack.memory:memory资源在所有资源中的比例,默认是1
    • binpack.resources:资源类型。
    - plugins:  - name: binpack    arguments:      binpack.weight: 10      binpack.cpu: 1      binpack.memory: 1      binpack.resources: nvidia.com/gpu, example.com/foo      binpack.resources.nvidia.com/gpu: 2      binpack.resources.example.com/foo: 3

    conformance

    跳过关键Pod,比如在kube-system命名空间的Pod,防止这些Pod被驱逐

    -

    -

    lifecycle

    通过统计业务伸缩的规律,将有相近生命周期的Pod优先调度到同一节点,配合autoscaler的水平扩缩容能力,快速缩容释放资源,节约成本并提高资源利用率。

    1. 统计业务负载中Pod的生命周期,将有相近生命周期的Pod调度到同一节点

    2. 对配置了自动扩缩容策略的集群,通过调整节点的缩容注解,优先缩容使用率低的节点

    arguments参数:
    • lifecycle.WindowSize:为int型整数,不小于1,默认为10。

      记录副本数变更的次数,负载变化规律、周期性明显时可适当调低;变化不规律,副本数频繁变化需要调大。若过大会导致学习周期变长,记录事件过多。

    • lifecycle.MaxGrade:为int型整数,不小于3,默认为3。

      副本分档数,如设为3,代表分为高中低档。负载变化规律、周期性明显时可适当调低;变化不规律,需要调大。若过小会导致预测的生命周期不够准确。

    • lifecycle.MaxScore:为float64浮点数,不小于50.0,默认为200.0。

      lifecycle插件的最大得分,等效于插件权重。

    • lifecycle.SaturatedTresh:为float64浮点数,小于0.5时取值为0.5;大于1时取值为1,默认为0.8。

      用于判断节点利用率是否过高的阈值,当超过该阈值,调度器会优先调度作业至其他节点。

    - plugins:  - name: priority  - name: gang    enablePreemptable: false  - name: conformance  - name: lifecycle    arguments:      lifecycle.MaxGrade: 10      lifecycle.MaxScore: 200.0      lifecycle.SaturatedTresh: 1.0      lifecycle.WindowSize: 10
    说明:
    • 对不希望被缩容的节点,需要手动标记长周期节点,为节点添加volcano.sh/long-lifecycle-node: true的annotation。对未标记节点,lifecycle插件将根据节点上负载的生命周期自动标记。
    • MaxScore默认值200.0相当于其他插件权重的两倍,当lifecycle插件效果不明显或与其他插件冲突时,需要关闭其他插件,或将MaxScore调大。
    • 调度器重启后,lifecycle插件需要重新记录负载的变化状况,需要统计数个周期后才能达到最优调度效果。

    gang

    将一组Pod看做一个整体去分配资源

    -

    -

    priority

    使用用户自定义负载的优先级进行调度

    -

    -

    overcommit

    将集群的资源放到一定倍数后调度,提高负载入队效率。负载都是deployment的时候,建议去掉此插件或者设置扩大因子为2.0。

    overcommit-factor: 扩大因子,默认是1.2

    - plugins:  - name: overcommit    arguments:      overcommit-factor: 2.0

    drf

    根据作业使用的主导资源份额进行调度,用的越少的优先

    -

    -

    predicates

    预选节点的常用算法,包括节点亲和,Pod亲和,污点容忍,node ports重复,volume limits,volume zone匹配等一系列基础算法

    -

    -

    nodeorder

    优选节点的常用算法

    • nodeaffinity.weight:节点亲和性优先调度,默认值是1
    • podaffinity.weight:Pod亲和性优先调度,默认值是1
    • leastrequested.weight:资源分配最少的的节点优先,默认值是1
    • balancedresource.weight:node上面的不同资源分配平衡的优先,默认值是1
    • mostrequested.weight:资源分配最多的的节点优先,默认值是0
    • tainttoleration.weight:污点容忍高的优先调度,默认值是1
    • imagelocality.weight:node上面有Pod需要镜像的优先调度,默认值是1
    • selectorspread.weight: 把Pod均匀调度到不同的节点上,默认值是0
    • volumebinding.weight: local pv延迟绑定调度,默认值是1
    • podtopologyspread.weight: Pod拓扑调度,默认值是2
    - plugins:  - name: nodeorder    arguments:      leastrequested.weight: 1      mostrequested.weight: 0      nodeaffinity.weight: 1      podaffinity.weight: 1      balancedresource.weight: 1      tainttoleration.weight: 1      imagelocality.weight: 1      volumebinding.weight: 1      podtopologyspread.weight: 2

    cce-gpu-topology-predicate

    GPU拓扑调度预选算法

    -

    -

    cce-gpu-topology-priority

    GPU拓扑调度优选算法

    -

    -

    cce-gpu

    结合CCE的GPU插件支持GPU资源分配,支持小数GPU配置

    说明:

    小数GPU配置的前提条件为CCE集群GPU节点为共享模式,检查集群是否关闭GPU共享,请参见集群配置管理中的enable-gpu-share参数。

    -

    -

    numaaware

    numa拓扑调度

    weight: 插件的权重

    -

    networkresource

    支持预选过滤ENI需求节点,参数由CCE传递,不需要手动配置

    NetworkType: 网络类型(eni或者vpc-router类型)

    -

    nodelocalvolume

    支持预选过滤不符合local volume需求节点

    -

    -

    nodeemptydirvolume

    支持预选过滤不符合emptydir需求节点

    -

    -

    nodeCSIscheduling

    支持预选过滤everest组件异常节点

    -

    -

  6. 单击“安装”
support.huaweicloud.com/usermanual-ucs/cce_10_0193.html