网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

volcano

更新时间:2024-11-01 GMT+08:00
分享

插件简介

Volcano是一个基于Kubernetes的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而Kubernetes当前缺失的一系列特性。

Volcano提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力,通过接入AI、大数据、基因、渲染等诸多行业计算框架服务终端用户。(目前Volcano项目已经在Github开源)

Volcano针对计算型应用提供了作业调度、作业管理、队列管理等多项功能,主要特性包括:

  • 丰富的计算框架支持:通过CRD提供了批量计算任务的通用API,通过提供丰富的插件及作业生命周期高级管理,支持TensorFlow,MPI,Spark等计算框架容器化运行在Kubernetes上。
  • 高级调度:面向批量计算、高性能计算场景提供丰富的高级调度能力,包括成组调度,优先级抢占、装箱、资源预留、任务拓扑关系等。
  • 队列管理:支持分队列调度,提供队列优先级、多级队列等复杂任务调度能力。

项目开源地址:https://github.com/volcano-sh/volcano

安装插件

须知:

安装Volcano插件,本地集群暂不支持多可用区部署配置插件实例节点亲和策略

本地集群安装Volcano插件后,创建负载只能通过yaml设置为volcano调度。

  1. 登录UCS控制台,单击集群名称进入集群,单击左侧导航栏的“插件管理”,找到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插件配置参数说明

    插件

    功能

    参数说明

    用法演示

    resource_exporter_enable

    收集节点numa拓扑信息

    参数值:

    • true:表示可以查看当前节点的numa拓扑信息。
    • false:表示关闭当前节点的numa拓扑信息。

    -

    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

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

    说明:

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

    -

    -

    numaaware

    numa拓扑调度

    weight: 插件的权重

    -

    networkresource

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

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

    -

    nodelocalvolume

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

    -

    -

    nodeemptydirvolume

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

    -

    -

    nodeCSIscheduling

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

    -

    -

  6. 单击“安装”

在控制台中修改volcano-scheduler配置

Volcano允许用户在安装,升级,编辑时,编写Volcano调度器配置信息,并将配置内容同步到volcano-scheduler-configmap里。

当前小节介绍如何使用自定义配置,以便用户让volcano-scheduler能更适合自己的场景。

说明:

仅Volcano 1.7.1及以上版本支持该功能。在新版插件界面上合并了原plugins.eas_service和resource_exporter_enable等选项,以新选项default_scheduler_conf代替。

您可登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件管理”,在右侧找到Volcano,单击“安装”“升级”,并在“参数配置”中设置Volcano调度器配置参数。

  • 使用resource_exporter配置,示例如下:
    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "allocate, backfill",
            "tiers": [
                {
                    "plugins": [
                        {
                            "name": "priority"
                        },
                        {
                            "name": "gang"
                        },
                        {
                            "name": "conformance"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "drf"
                        },
                        {
                            "name": "predicates"
                        },
                        {
                            "name": "nodeorder"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "cce-gpu-topology-predicate"
                        },
                        {
                            "name": "cce-gpu-topology-priority"
                        },
                        {
                            "name": "cce-gpu"
                        },
                        {
                            "name": "numa-aware" # add this also enable resource_exporter
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }

    开启后可以同时使用volcano-scheduler的numa-aware插件功能和resource_exporter功能。

  • 使用eas_service配置,示例如下:
    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "allocate, backfill",
            "tiers": [
                {
                    "plugins": [
                        {
                            "name": "priority"
                        },
                        {
                            "name": "gang"
                        },
                        {
                            "name": "conformance"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "drf"
                        },
                        {
                            "name": "predicates"
                        },
                        {
                            "name": "nodeorder"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "cce-gpu-topology-predicate"
                        },
                        {
                            "name": "cce-gpu-topology-priority"
                        },
                        {
                            "name": "cce-gpu"
                        },
                        {
                            "name": "eas",
                            "custom": {
                                "availability_zone_id": "",
                                "driver_id": "",
                                "endpoint": "",
                                "flavor_id": "",
                                "network_type": "",
                                "network_virtual_subnet_id": "",
                                "pool_id": "",
                                "project_id": "",
                                "secret_name": "eas-service-secret"
                            }
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }
  • 使用ief配置,示例如下:
    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "allocate, backfill",
            "tiers": [
                {
                    "plugins": [
                        {
                            "name": "priority"
                        },
                        {
                            "name": "gang"
                        },
                        {
                            "name": "conformance"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "drf"
                        },
                        {
                            "name": "predicates"
                        },
                        {
                            "name": "nodeorder"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "cce-gpu-topology-predicate"
                        },
                        {
                            "name": "cce-gpu-topology-priority"
                        },
                        {
                            "name": "cce-gpu"
                        },
                        {
                            "name": "ief",
                            "enableBestNode": true
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }

保留原volcano-scheduler-configmap配置

假如在某场景下希望插件升级后时沿用原配置,可参考以下步骤:

  1. 查看原volcano-scheduler-configmap配置,并备份。

    示例如下:
    # kubectl edit cm volcano-scheduler-configmap -n kube-system
    apiVersion: v1
    data:
      default-scheduler.conf: |-
        actions: "enqueue, allocate, backfill"
        tiers:
        - plugins:
          - name: priority
          - name: gang
          - name: conformance
        - plugins:
          - name: drf
          - name: predicates
          - name: nodeorder
          - name: binpack
            arguments:
              binpack.cpu: 100
              binpack.weight: 10
              binpack.resources: nvidia.com/gpu
              binpack.resources.nvidia.com/gpu: 10000
        - plugins:
          - name: cce-gpu-topology-predicate
          - name: cce-gpu-topology-priority
          - name: cce-gpu
        - plugins:
          - name: nodelocalvolume
          - name: nodeemptydirvolume
          - name: nodeCSIscheduling
          - name: networkresource

  2. 在控制台“参数配置”中填写自定义修改的内容:

    {
        "ca_cert": "",
        "default_scheduler_conf": {
            "actions": "enqueue, allocate, backfill",
            "tiers": [
                {
                    "plugins": [
                        {
                            "name": "priority"
                        },
                        {
                            "name": "gang"
                        },
                        {
                            "name": "conformance"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "drf"
                        },
                        {
                            "name": "predicates"
                        },
                        {
                            "name": "nodeorder"
                        },
                        {
                            "name": "binpack",
                            "arguments": {
                                "binpack.cpu": 100,
                                "binpack.weight": 10,
                                "binpack.resources": "nvidia.com/gpu",
                                "binpack.resources.nvidia.com/gpu": 10000
                            }
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "cce-gpu-topology-predicate"
                        },
                        {
                            "name": "cce-gpu-topology-priority"
                        },
                        {
                            "name": "cce-gpu"
                        }
                    ]
                },
                {
                    "plugins": [
                        {
                            "name": "nodelocalvolume"
                        },
                        {
                            "name": "nodeemptydirvolume"
                        },
                        {
                            "name": "nodeCSIscheduling"
                        },
                        {
                            "name": "networkresource"
                        }
                    ]
                }
            ]
        },
        "server_cert": "",
        "server_key": ""
    }
    说明:

    使用该功能时会覆盖原volcano-scheduler-configmap中内容,所以升级时务必检查是否在volcano-scheduler-configmap做过修改。如果是,需要把修改内容同步到升级界面里。

Prometheus指标采集

volcano-scheduler通过端口8080暴露Prometheus metrics指标。您可以自建Prometheus采集器识别并通过http://{{volcano-schedulerPodIP}}:{{volcano-schedulerPodPort}}/metrics路径获取volcano-scheduler调度相关指标。

说明:

Prometheus指标暴露仅支持volcano插件1.8.5及以上版本。

表3 关键指标说明

指标名称

指标类型

描述

Labels

e2e_scheduling_latency_milliseconds

Histogram

端到端调度时延毫秒(调度算法+绑定)

-

e2e_job_scheduling_latency_milliseconds

Histogram

端到端作业调度时延(毫秒)

-

e2e_job_scheduling_duration

Gauge

端到端作业调度时长

labels=["job_name", "queue", "job_namespace"]

plugin_scheduling_latency_microseconds

Histogram

插件调度延迟(微秒)

labels=["plugin", "OnSession"]

action_scheduling_latency_microseconds

Histogram

动作调度时延(微秒)

labels=["action"]

task_scheduling_latency_milliseconds

Histogram

任务调度时延(毫秒)

-

schedule_attempts_total

Counter

尝试调度Pod的次数。“unschedulable”表示无法调度Pod,而“error”表示内部调度器问题

labels=["result"]

pod_preemption_victims

Gauge

选定的抢占受害者数量

-

total_preemption_attempts

Counter

集群中的抢占尝试总数

-

unschedule_task_count

Gauge

无法调度的任务数

labels=["job_id"]

unschedule_job_count

Gauge

无法调度的作业数

-

job_retry_counts

Counter

作业的重试次数

labels=["job_id"]

Volcano 1.0.0版本升级说明

Volcano 1.0.0版本与后续版本不兼容,不支持在控制台升级。如想使用新版本Volcano插件,需要先卸载1.0.0版本,然后再在控制台安装新版本。

执行如下命令可以卸载Volcano。

kubectl delete crd jobs.batch.volcano.sh

kubectl delete crd commands.bus.volcano.sh

版本记录

须知:

建议升级到跟集群配套的最新volcano版本。

表4 集群版本配套关系

集群版本

支持的插件版本

v1.25

1.7.1、1.7.2

v1.23

1.7.1、1.7.2

v1.21

1.7.1、1.7.2

v1.19.16

1.3.7、1.3.10、1.4.5、1.7.1、1.7.2

v1.19

1.3.7、1.3.10、1.4.5

v1.17(停止维护)

1.3.7、1.3.10、1.4.5

v1.15(停止维护)

1.3.7、1.3.10、1.4.5

表5 CCE插件版本记录

插件版本

支持的集群版本

更新特性

1.9.1

/v1.19.16.*|v1.21.*|v1.23.*|v1.25.*/

  • 修复networkresource插件计数pipeline pod占用subeni问题
  • 修复binpack插件对资源不足节点打分问题
  • 修复对结束状态未知的pod的资源的处理
  • 优化事件输出
  • 默认高可用部署

1.7.2

/v1.19.16.*|v1.21.*|v1.23.*|v1.25.*/

  • Volcano 支持 Kubernetes 1.25版本
  • 提升Volcano调度性能。

1.7.1

/v1.19.16.*|v1.21.*|v1.23.*|v1.25.*/

Volcano 支持 Kubernetes 1.25版本

1.6.5

/v1.19.*|v1.21.*|v1.23.*/

  • 支持作为CCE的默认调度器
  • 支持混部场景下统一调度

1.4.5

/v1.17.*|v1.19.*|v1.21.*/

  • volcano-scheduler的部署方式由statefulset调整为deployment,修复节点异常时Pod无法自动迁移的问题

1.4.2

/v1.15.*|v1.17.*|v1.19.*|v1.21.*/

  • 修复跨GPU分配失败问题
  • 适配更新后的EAS API

1.3.3

/v1.15.*|v1.17.*|v1.19.*|v1.21.*/

  • 修复GPU异常导致的调度器崩溃问题;修复特权Init容器准入失败问题

1.3.1

/v1.15.*|v1.17.*|v1.19.*/

  • 升级Volcano框架到最新版本
  • 支持Kubernetes 1.19版本
  • 添加numa-aware插件
  • 修复多队列场景下Deployment扩缩容的问题
  • 调整默认开启的算法插件

1.2.5

/v1.15.*|v1.17.*|v1.19.*/

  • 修复某些场景下OutOfcpu的问题
  • 修复queue设置部分capability情况下Pod无法调度问题
  • 支持volcano组件日志时间与系统时间保持一致
  • 修复队列间多抢占问题
  • 修复ioaware插件在某些极端场景下结果不符合预期的问题
  • 支持混合集群

1.2.3

/v1.15.*|v1.17.*|v1.19.*/

  • 修复因为精度不够引发的训练任务OOM的问题
  • 修复CCE1.15以上版本GPU调度的问题,暂不支持任务分发时的CCE版本滚动升级
  • 修复特定场景下队列状态不明的问题
  • 修复特定场景下作业挂载PVC panic的问题
  • 修复GPU作业无法配置小数的问题
  • 添加ioaware插件
  • 添加ring controller
提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容