• [技术干货] Volcano v1.10.0 版本正式发布!10大功能全面提升统一调度和细粒度资源管理能力
    北京时间2024年9月19日,Volcano社区v1.10.0版本[1]正式发布(Branch:release-1.10[2]),此次版本增加了以下新特性:新增队列优先级设置策略支持细粒度的GPU资源共享与回收支持Pod Scheduling Readiness调度支持Sidecar container调度增强vcctl命令行工具功能Volcano支持Kubernetes v1.30增强Volcano安全性优化Volcano性能提升GPU监控功能优化helm chart包安装升级流程▶ 新增队列优先级设置策略  在传统的大数据处理场景下,用户可以直接设置队列优先级来控制作业的调度顺序,为了更好的帮助用户从Hadoop/Yarn迁移到云原生平台,Volcano也支持了在队列层面直接设置优先级,降低大数据用户的迁移成本,提升用户体验和资源利用效率。队列是Volcano中的一种基本资源,不同队列有着优先级区分,在默认情况下,队列的优先级是由队列的share值决定的,share值是由队列中已分配的资源量除以队列的总容量计算得到的,不需要用户手动配置,share值越小,则代表队列中已分配的资源比例越小,即队列越不饱和,需要优先分配资源,因此队列的share越小,队列的优先级越高,在分配资源时会优先分配给share较小的队列,以保证资源分配的公平性。但是在生产环境尤其是大数据处理场景下,用户更希望可以直接设置队列的优先级,从而能更直观的知道不同队列的优先级顺序,由于share值是实时计算得到的,因此会根据队列分配资源的饱和程度而实时变化,为了更加直观的表示队列优先级同时支持用户自行配置,Volcano在share值的基础上为队列新增了priority字段,支持用户配置队列优先级,priority越高则表示队列优先级越高,会优先分配资源给高优先级的队列,并且在回收队列资源时会优先回收低优先级队列内的作业。队列优先级定义:type QueueSpec struct { ... // Priority define the priority of queue. Higher values are prioritized for scheduling and considered later during reclamation. // +optional Priority int32 `json:"priority,omitempty" protobuf:"bytes,10,opt,name=priority"` }同时为了兼容share值的使用方式,Volcano在计算队列优先级时也会考虑share值,默认情况下用户不设置队列优先级或者队列的优先级相等时,Volcano会再比较队列的share值,此时share越小队列优先级越高。用户可以根据实际场景选择设置不同的优先级策略,即priority和share两种方式。关于队列优先级设计文档,请参考:Queue Priority[3]▶ 支持细粒度的GPU资源共享与回收Volcano在v1.9版本发布了弹性队列容量capacity调度功能,用户可以直接为队列设置每一维度资源的容量,同时支持基于deserved的队列弹性容量调度,实现了更加细粒度的队列资源共享和回收机制。弹性队列容量capacity调度的设计文档请参考:Capacity scheduling Design[4]使用指导请参考:Capacity Plugin User Guide[5]为队列配置每一维度deserved使用样例:apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: demo-queue spec: reclaimable: true deserved: # set the deserved field. cpu: 64 memeory: 128Gi nvidia.com/a100: 40 nvidia.com/v100: 80在v1.10版本中,Volcano在弹性队列容量capacity的基础上,支持了上报不同型号的GPU资源,NVIDIA默认的Device Plugin在上报GPU资源时无法区分GPU型号,统一上报为nvidia.com/gpu,AI训推任务无法根据业务特点选择不同型号的GPU,比如A100、T4等型号的GPU,为了解决这一问题,以满足不同类型的AI任务需求,Volcano在Device Plugin层面支持上报不同型号的GPU资源到节点,配合capacity插件实现更加细粒度的GPU资源共享和回收。关于Device Plugin上报不同型号GPU的实现和使用指导,请参考:GPU Resource Naming[6]注意:capacity在v1.10.0版本中作为了默认的队列管理插件,capacity与proportion插件互相冲突,当升级到v1.10.0后,你需要再设置队列的deserved字段,以保证队列功能正常工作,具体的使用说明请参考:Capacity Plugin User Guide[7]capacity插件根据用户指定的队列deserved值来划分集群资源,而proportion插件则根据队列权重动态划分集群资源,用户可以根据实际场景选择使用capacity或者proportion插件进行队列管理。proportion插件的介绍请参考:proportion plugin[8]▶ 支持Pod Scheduling Readiness调度Pod 一旦创建就被认为已准备好进行调度,在 Kube-scheduler 中,它会尽力寻找合适的节点来放置所有Pending的 Pod。然而,在现实情况下,某些 Pod 可能会长时间处于“缺少必要资源”状态,这些 Pod 实际上以不必要的方式干扰调度程序(以及 Cluster AutoScaler 等下游组件)的决策和运行,造成资源浪费等问题。Pod Scheduling Readiness是 Kube-sheduler 的一项新增功能,在Kubernetes v.1.30版本GA,成为了一个稳定特性,它通过设置Pod的schedulingGates字段来控制Pod的调度时机。pod-scheduling-gates-diagram在前面的版本中,Volcano已集成了K8s默认调度器的所有算法,全面涵盖了Kube-scheduler的原生调度功能。因此,Volcano能够无缝替代Kube-scheduler,作为云原生平台下的统一调度器,支持微服务和AI/大数据工作负载的统一调度。在最新发布的v1.10版本中,Volcano更是引入了Pod Scheduling Readiness调度能力,进一步满足了用户在多样化场景下的调度需求。关于Pod Scheduling Readiness特性的文档,请参考:Pod Scheduling Readiness | Kubernetes[9]Volcano支持Pod Scheduling Readiness调度的设计文档,请参考:Proposal for Support of Pod Scheduling Readiness by ykcai-daniel · Pull Request #3581 · volcano-sh/volcano (github.com)[10]▶ 支持Sidecar container调度Sidecar container是一种相对于业务容器而言的辅助容器,通常用来辅助业务容器的运行,比如收集业务容器日志、监控、初始化网络等。在Kubernetes v1.28之前,Sidecar container只是一种概念,并没有单独的API来标识一个容器是否是Sidecar container,Sidecar容器和业务容器处于同等地位,有着相同的生命周期,Kubelet会并发启动所有Sidecar容器和业务容器,这样带来的问题是Sidecar容器可能会在业务容器启动之后才启动,并且在业务容器结束之前先结束,而我们期望的是Sidecar容器先于业务容器启动,并在业务容器结束之后再结束,这样就能保证Sidecar容器收集的日志,监控等信息是完整的。Kubernetes v1.28在API层面支持了Sidecar container,并对init container、Sidecar container、业务container做了统一的生命周期管理,同时调整了Pod的request/limit资源计算方式,该特性在v1.29成为Beta特性。该特性在设计阶段经历了漫长的讨论时间,特性本身并不复杂,主要的考虑点在于兼容旧的使用方式,如果定义一个除了init container、业务容器之外的新的容器类型,会对API有较大的破坏性,同时周边组件适配该特性的话会有较多的侵入式修改,带来很多额外开销,因此Kubernetes社区并没有引入新的容器类型来支持Sidecar container,而是直接复用了init container,通过设置init container的restartPolicy为Always来标识Sidecar container,完美的解决了API兼容性问题和Sidecar容器的生命周期问题。在调度层面,该特性的影响在于Pod申请的request资源计算方式有所变化,因为Sidecar container作为一种特殊的init container是持久运行的,需要将Sidecar container的request值累加到业务容器的request值上,因此需要重新计算init container、Sidecar container和业务容器的资源request值。Volcano调度器在新版本更改了Sidecar container的资源计算方式,支持了Sidecar container的调度,用户可以使用Volcano调度Sidecar container。关于Sidecar container的详细信息,请参考:Sidecar Containers | Kubernetes[11]▶ 增强vcctl命令行工具功能vcctl是操作Volcano内置CRD资源的一个命令行工具,可以方便的用来查看/删除/暂停/恢复vcjob资源,并支持查看/删除/开启/关闭/更新queue资源。Volcano在新版本对vcctl做了功能增强,新增以下功能:支持创建/删除/查看/描述jobflow和jobtemplate资源支持查询指定队列里的vcjob支持通过queue和vcjob过滤查询Podvcctl的详细指导文档,请参考:vcctl Command Line Enhancement[12]▶ Volcano支持Kubernetes v1.30Volcano版本紧跟Kubernetes社区版本节奏,对Kubernetes的每个大版本都进行支持,目前最新支持的版本为v1.30,并运行了完整的UT、E2E用例,保证功能和可靠性。如果您想参与Volcano适配Kubernetes新版本的开发工作,请参考:adapt-k8s-todo[13] 进行社区贡献。▶ 增强Volcano安全性Volcano一直都很重视开源软件供应链的安全,在license合规、安全漏洞披露和修复、仓库分支保护、CI检查等方面遵循OpenSSF定义的规范,Volcano近期在Github Action加入了新的workflow,它会在代码合入时运行OpenSSF安全性检查,并实时更新软件安全评分,持续提升软件安全性。同时Volcano对各个组件的RBAC权限进行了收缩,只保留必要的权限,避免了潜在的越权风险,提升了系统的安全性。相关PR参见:Added the scorecard github action and its badge by harshitasao · Pull Request #3655 · volcano-sh/volcano[14]Shrink permissions of vc scheduler & controller by Monokaix · Pull Request #3545 · volcano-sh/volcano (github.com)[15]Add pre-install&pre-upgrade hook for admission-init job by Monokaix · Pull Request #3504 · volcano-sh/volcano (github.com)[16]▶ 优化Volcano性能在大规模场景下,Volcano做了很多性能优化的工作,主要包括:优化vcjob更新策略,降低vcjob的更新和同步频次,降低API Server压力,提升提交任务的QPSvc controller新增controller gate开关,用户可以选择关闭不需要的controller,减低内存占用和CPU负载所有的controller使用共享的informer,减少内存占用▶ 提升GPU监控功能新版本的Volcano针对GPU监控指标做了优化和增强,修复了GPU监控不精确的问题,并在GPU的算力和显存监控指标上新增了节点信息,方便用户更加直观的查看每个节点上每一张GPU的算力、显存的总量和已分配量。详细PR参见:Update volcano-vgpu monitoring system by archlitchi · Pull Request #3620 · volcano-sh/volcano (github.com)[17]▶ 优化helm chart包安装升级流程Volcano针对helm chart的安装、升级流程进行了优化,并支持安装helm chart包设置更多自定义参数,主要包括:利用helm的hook机制,在安装成功Volcano之后,自动删除volcano-admission-init这一job,避免后续使用helm upgrade升级失败的问题,相关PR参见:Add pre-install&pre-upgrade hook for admission-init job by Monokaix · Pull Request #3504 · volcano-sh/volcano (github.com)[18]每次安装成功后更新Volcano admission需要的secret文件,避免在不指定helm包名情况下,重复安装卸载volcano导致volcano admission处理失败的问题,详细PR参见:Update volcano-admission secret when it already exists by Monokaix · Pull Request #3653 · volcano-sh/volcano (github.com)[19]支持为helm包中的资源对象设置通用label,相关PR参见:Add common labels for chart objects by Aakcht · Pull Request #3511 · volcano-sh/volcano (github.com)[20]支持通过helm为Volcano组件设置日志等级,相关PR参见:Expose volcano components (controller, scheduler, etc.) log level control to the helm chat values by chenshiwei-io · Pull Request #3656 · volcano-sh/volcano (github.com)[21]支持通过helm设置Volcano组件的镜像代理仓库,相关PR参见:add image registry for helm by calvin0327 · Pull Request #3436 · volcano-sh/volcano (github.com)[22]支持通过helm设置容器级别的securityContext,相关PR参加:feat: Add securityContext support at container level in helm chart templates by lekaf974 · Pull Request #3704 · volcano-sh/volcano (github.com)[23]致谢贡献者Volcano 1.10.0 版本包含了来自36位社区贡献者的上百次代码提交,在此对各位贡献者表示由衷的感谢:贡献者GitHub ID@googs1025@WulixuanS@SataQiu@guoqinwill@lowang-bh@shruti2522@lukasboettcher@wangyysde@bibibox@Wang-Kai@y-ykcir@lekaf974@yeahdongcn@Monokaix@Aakcht@yxxhero@babugeet@liuyuanchun11@MichaelXcc@william-wang@lengrongfu@xieyanker@lx1036@archlitchi@hwdef@wangyang0616@microyahoo@snappyyouth@harshitasao@chenshiwei-io@TaiPark@Aakcht@ykcai-daniel@lekaf974@JesseStutler@belo4ya参考资料[1] v1.10.0版本: cid:link_6[2] Branch:release-1.10: cid:link_7[3] Queue Priority: cid:link_3[4] Capacity scheduling Design: cid:link_2[5] Capacity Plugin User Guide: cid:link_1[6] GPU Resource Naming: cid:link_5[7] Capacity Plugin User Guide: cid:link_1[8] proportion plugin: https://volcano.sh/en/docs/plugins/#proportion[9] Pod Scheduling Readiness | Kubernetes: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-scheduling-readiness/[10] Proposal for Support of Pod Scheduling Readiness by ykcai-daniel · Pull Request #3581 · volcano-sh/volcano (github.com): cid:link_10[11] Sidecar Containers | Kubernetes: https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/[12] vcctl Command Line Enhancement: cid:link_0[13] adapt-k8s-todo: cid:link_4[14] Added the scorecard github action and its badge by harshitasao · Pull Request #3655 · volcano-sh/volcano: cid:link_11[15] Shrink permissions of vc scheduler & controller by Monokaix · Pull Request #3545 · volcano-sh/volcano (github.com): cid:link_12[16] Add pre-install&pre-upgrade hook for admission-init job by Monokaix · Pull Request #3504 · volcano-sh/volcano (github.com): cid:link_13[17] Update volcano-vgpu monitoring system by archlitchi · Pull Request #3620 · volcano-sh/volcano (github.com): cid:link_9[18] Add pre-install&pre-upgrade hook for admission-init job by Monokaix · Pull Request #3504 · volcano-sh/volcano (github.com): cid:link_13[19] Update volcano-admission secret when it already exists by Monokaix · Pull Request #3653 · volcano-sh/volcano (github.com): cid:link_14[20] Add common labels for chart objects by Aakcht · Pull Request #3511 · volcano-sh/volcano (github.com): cid:link_15[21] Expose volcano components (controller, scheduler, etc.) log level control to the helm chat values by chenshiwei-io · Pull Request #3656 · volcano-sh/volcano (github.com): cid:link_16[22] add image registry for helm by calvin0327 · Pull Request #3436 · volcano-sh/volcano (github.com): cid:link_17[23] feat: Add securityContext support at container level in helm chart templates by lekaf974 · Pull Request #3704 · volcano-sh/volcano (github.com): cid:link_18【更多Volcano干货推荐】Volcano云原生批量计算公开课Volcano云原生批量计算公开课Volcano云原生批量计算公开课由CNCF首个批量计算社区Volcano核心贡献者开发,通过理论学习+实践操作,帮助学习者由浅入深了解批量计算原理和生产场景应用,晋升批量计算达人!点击免费学习Volcano云原生批量计算公开课社区介绍:Volcano 是业界首个云原生批量计算引擎,也是 CNCF 首个和唯一的批量计算项目。项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene、Ray 等众多主流计算框架的支持,并构建起完善的上下游生态。Volcano官网:https://volcano.shGitHub: cid:link_19每周例会: https://zoom.us/j/91804791393
  • [活动公告] 【HUAWEI CONNECT 2024丨社区活动】玩转AI大数据,免费体验Volcano云原生批量调度引擎!
    因参与楼层不满足开奖条件,本活动不开奖。-------------------------------------------------------------------参加“玩转AI大数据,免费体验Volcano云原生批量调度引擎!”项目在本活动帖下回帖,提出你的问题与建议有机会获得开发者定制礼品【体验项目】玩转AI大数据,免费体验Volcano云原生批量调度引擎!【体验简介】Volcano为用户与开发者提供AI、大数据、基因、渲染等诸多高性能计算场景解决方案,了解Volcano技术栈,Get云原生AI等领域调度部署技能,为您的企业获取AI大数据场景调度方案!【体验形式】1、点击Volcano云原生批量计算公开课路径2、选择课程方向体验学习3、前往Volcano云原生批量计算社区实践部署,自定义调度方案【活动时间】2024年9月13-10月12日【参与方式】直接在此活动帖下方回帖,将体验完成的截图和您的问题/建议/感受一起回帖即可比如体验中遇到的问题,对产品的建议、对活动感受等等PS:不要少于30字哦~【获奖规则】可提前填写获奖信息收集表,后续如您中奖,我们会及时发货,谢谢。获奖信息收集表: cid:link_0【活动规则】1、本帖的回帖建议不少于30字,仅限于对“玩转AI大数据,免费体验Volcano云原生批量调度引擎!”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;实物奖品具体发放视出库情况而定; 3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [技术干货] Volcano 社区 v1.9.0 版本正式发布!全面增强队列能力与调度稳定性
    北京时间2024年5月21日,Volcano社区v1.9.0版本正式发布,此次版本增加了以下新特性:支持弹性队列容量capacity调度支持队列与节点间的亲和调度Volcano支持Kubernetes v1.29GPU共享支持节点打分调度增强scheduler metrics指标新增License合规性检查提升调度稳定性Volcano是业界首个云原生批量计算项目,于2019年6月在上海 KubeCon 正式开源,并在2020年4月成为 CNCF 官方项目。2022年4月,Volcano 正式晋级为CNCF 孵化项目。Volcano 社区开源以来,受到众多开发者、合作伙伴和用户的认可和支持。截至目前,累计有600+全球开发者参与社区贡献。支持弹性队列容量capacity调度Volcano现在使用proportion插件来进行队列管理,用户可以设置队列的guarantee、capability等字段来设置队列的预留资源和容量上限。并通过设置队列的weight值来实现集群内的资源共享,队列按照weight值按比例划分集群资源,但这种队列管理方式存在以下问题:队列划分的资源容量通过权重体现,不够直观。队列内的所有资源使用相同的比例进行划分,不能为队列的每一维资源单独设置容量。基于以上考虑,Volcano实现了新的队列弹性容量管理能力,它支持:用户可以直接为队列设置每一维度资源的容量,而不是设置weigh值来实现。基于deserved的队列弹性容量调度,支持队列的资源共享和回收。比如在AI大模型训练中分别为队列中不同的GPU型号如A100和V100,设置不同的资源容量。同时在集群资源空闲时,队列可以复用其他空闲队列的资源,并在需要时进行资源回收,直到回收到用户为队列设置的资源容量为止,即应得资源量deserved,从而实现弹性容量能力。使用改功能时需要设置队列的deserved字段,为每一维资源设置应得资源量。同时需要在调度配置中打开capacity插件,并关闭proportion插件。apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: demo-queue spec: reclaimable: true deserved: # set the deserved field. cpu: 64 memeory: 128Gi nvidia.com/a100: 40 nvidia.com/v100: 80队列弹性容量调度的完整使用例子,请参考:How to use capacity plugin[1]关于弹性队列容量设计文档,请参考Capacity scheduling Design[2]支持队列与节点间的亲和调度队列通常关联着公司内的部门,而不同部门通常需要使用不同的异构资源类型,比如大模型训练团队需要使用NIVDIA的Tesla GPU,而推荐团队需要使用AMD的GPU,当用户提交作业到队列时,需要根据队列的属性将作业自动调度到对应资源类型的节点上。为此Volcano实现了队列和节点的亲和调度能力,用户只需在队列的affinity字段设置需要亲和的节点标签,Volcano会自动将提交到当前队列的作业调度到队列关联的节点上,用户无需单独设置作业的亲和性,而只需统一设置队列的亲和性,提交到队列的作业都会根据队列与节点的亲和性将作业调度到对应的节点。该特性同时支持硬亲和、软亲和、反亲和调度,使用时需要为节点设置key为volcano.sh/nodegroup-name的标签,然后设置队列的affinity字段,指定硬亲和、软亲和和反亲和的标签值。例如如下的队列设置,表示提交到该队列的作业需要调度到标签值为groupname1和groupname2的节点,并优先调度到标签值为groupname2的节点,同时,作业不能调到到标签值为groupname3和groupname4的节点,当资源不足时则也可以调度到标签值为groupname3的节点上。apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: default spec: reclaimable: true weight: 1 affinity: # added field nodeGroupAffinity: requiredDuringSchedulingIgnoredDuringExecution: - <groupname1> - <groupname2> preferredDuringSchedulingIgnoredDuringExecution: - <groupname1> nodeGroupAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - <groupname3> - <gropuname4> preferredDuringSchedulingIgnoredDuringExecution: - <groupname3>该功能对应的调度插件名为nodegroup,完整使用例子请参考:How to use nodegroup plugin[3]详细设计文档请参考:The nodegroup design[4]GPU共享功能支持节点打分调度GPU共享是Volcano v1.8版本推出的GPU共享与隔离方案,提供GPU共享、设备显存控制能力,以提升AI训练推理场景下GPU资源利用率低的问题。v1.9在该功能基础上新增了对GPU节点打分的策略,从而可以在作业分配时选择最优的节点,进一步提升资源利用率,用户可以设置不同的打分策略。目前支持以下两种策略:Binpack:提供GPU卡粒度的binpack算法,优先把一个节点上的已经分配了资源的GPU卡占满,避免资源碎片和浪费。Spread:优先使用空闲的GPU卡而不是已经分配了资源的共享卡。详细使用文档请参考:How to use gpu sharing[5]Volcano支持Kubernetes v1.29Volcano版本紧跟Kubernetes社区版本节奏,对Kubernetes的每个大的基数版本都进行支持,目前最新支持的版本为v1.29,并运行了完整的UT、E2E用例,保证功能和可靠性。如果您想参与Volcano适配Kubernetes新版本的开发工作,请参考:https://github.com/volcano-sh/volcano/pull/3459 进行社区贡献。增强scheduler metrics指标Volcano使用了client-go客户端和Kubernetes交互,尽管客户端可以设置QPS来避免请求被限流,但是客户端实际使用的QPS到底达到了多少却很难观察到,为了实时观测到客户端请求的频率,Volcano新增了client-go客户端的metrics指标,用户可以通过访问metrics接口,查看GET、POST等请求在每秒钟的请求数量,从而确定每秒钟实际使用的QPS,以此决定是否需要调整客户端设置的QPS。同时client-go的相关指标还包括客户端证书轮转周期统计、每个请求的response size统计等。用户可以使用curl http://$volcano_scheduler_pod_ip:8080/metrics 来获取volcano scheduler的所有详细指标。详细PR见:[feat] Add rest client metrics by Monokaix · Pull Request #3274 · volcano-sh/volcano (github.com)[6]新增License合规性检查为了增强Volcano社区开源license合规治理规范,避免引入传染性开源协议,规避潜在风险,Volcano社区引入了开源license合规检查工具,所谓传染性协议指的是使用了该协议作为开源许可的软件在修改、使用、复制之后生成的衍生作品,也必须以该协议进行开源。开发者提交的PR会引入的三库如果包含了传染性开源协议比如GPL,LGPL等,CI门禁会进行拦截,开发者需要将三方库替换为松自由软件许可协议比如MIT、Apache 2.0,BSD等,以通过开源license合规检查。提升调度稳定性Volcano v1.9.0版本在抢占、调度失败重试、避免内存泄露、安全性增强等方面做了较多优化,具体内容包括:修复极端情况下deployment频繁扩缩容导致的pod无法调度的问题,详见PR:[cherry-pick for release-1.9]fix PodGroup being incorrectly deleted due to frequent creation and deletion of pods by guoqinwill · Pull Request #3376 · volcano-sh/volcano (github.com)[7]修复Pod抢占问题:详见PR:ignore PredicateFn err info for preempt & reclaim scheduler plugin by LivingCcj · Pull Request #3458 · volcano-sh/volcano (github.com)[8]优化Pod调度失败重试机制:详见PR:fix errTask channel memory leak by bibibox · Pull Request #3435 · volcano-sh/volcano (github.com)[9]metrics指标优化:详见PR:Fix queue metrics when there are no jobs in it by Monokaix · Pull Request #3463 · volcano-sh/volcano (github.com)[10]安全性增强:详见PR:Remove list secret in controller ClusterRole by lekaf974 · Pull Request #3449 · volcano-sh/volcano (github.com)[11]致谢贡献者Volcano 1.9.0 版本包含了来自多位社区贡献者的代码提交,在此对各位贡献者表示由衷的感谢:贡献者GitHub ID@daniel-hutao@wuyueandrew@googs1025@7sunarni @flyingfang@LivingCcj@guoqinwill@panoswoo@william-wang@lekaf974@yangqz@lowang-bh@loheagn@hwdef@archlitchi@Lily922@bibibox@Monokaix@belo4ya参考资料:[1] How to use capacity plugin: cid:link_1[2] Capacity scheduling Design: cid:link_3[3] How to use nodegroup plugin: cid:link_0[4] The nodegroup design: cid:link_4[5] How to use gpu sharing: cid:link_2[6] [feat] Add rest client metrics by Monokaix · Pull Request #3274 · volcano-sh/volcano (github.com): cid:link_8[7] [cherry-pick for release-1.9]fix PodGroup being incorrectly deleted due to frequent creation and deletion of pods by guoqinwill · Pull Request #3376 · volcano-sh/volcano (github.com): cid:link_9[8] ignore PredicateFn err info for preempt & reclaim scheduler plugin by LivingCcj · Pull Request #3458 · volcano-sh/volcano (github.com): cid:link_6[9] fix errTask channel memory leak by bibibox · Pull Request #3435 · volcano-sh/volcano (github.com): cid:link_7[10] Fix queue metrics when there are no jobs in it by Monokaix · Pull Request #3463 · volcano-sh/volcano (github.com): cid:link_10[11] Remove list secret in controller ClusterRole by lekaf974 · Pull Request #3449 · volcano-sh/volcano (github.com): cid:link_11
  • [热门活动] 聚焦AI大数据,Volcano社区开源之夏课题邀你挑战!
    📮滴,学生卡!您已收到来自Volcano社区的开源之夏邀请~Volcano是业界首个云原生批量计算社区,也是 CNCF 首个及唯一孵化级批量计算项目。Volcano主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。社区已吸引5.8万+全球开发者,并获得3.8k+Star 和800+ Fork,参与贡献企业包括华为、AWS、百度、腾讯、博云、京东、小红书、第四范式、bilibili等。🏷️社区地址:https://github.com/volcano-sh/volcano 目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到广泛应用,完成对 Spark、Flink、Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、Mxnet、KubeGene、Ray 等众多主流计算框架的支持,并构建起完善的上下游生态。Volcano社区已连续4年加入开源之夏,并在今年带来5项课题,欢迎高校同学选报,报名时间4月30日-6月4日。开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。▍Volcano社区开源之夏2024课题课题一:Volcano支持Pod Scheduling Readiness调度项目编号:243ba0503项目难度:基础/Basic项目社区导师:常旭征导师联系邮箱:cxz2536818783@gmail.com项目简述:Pod 一旦创建就被认为已准备好进行调度。在 kube-scheduler 中,它会尽职尽责地寻找节点来放置所有待处理的 Pod。然而,在现实情况下,某些 Pod 可能会长时间处于“缺少必要资源”状态。这些 Pod 实际上以不必要的方式干扰调度程序(以及 Cluster AutoScaler 等下游组件),造成资源浪费等问题。Pod Scheduling Readiness是 kube-sheduler 的一项稳定功能。它通过设置Pod的schedulingGates字段来控制Pod的调度时机。Volcano也应该支持该功能,以增强调度功能,避免无意义的调度,提升调度效率,进行调度准入等。参考:https://kubernetes.io/docs/concepts/scheduling-eviction/pod-scheduling-readiness/项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0503?list=org&navpage=org课题二:Volcano支持多集群AI任务调度中的队列容量管理能力项目编号:243ba0505项目难度:进阶/Advanced项目社区导师:王龙辉(lowang-bh)导师联系邮箱:lhui_wang@163.com项目简述:随着AI大模型的迅速发展,单个K8s集群由于资源和性能瓶颈,已越来越不能满足大模型AI作业训练的需求,越来越多的用户使用多集群来管理和运行AI作业,Volcano正在支持多集群AI作业的任务调度,这其中涉及到多集群的作业管理、多租户任务公平调度,队列管理等系列需求。多集群编排系统Karmada已逐渐成为业界标准,Volcano需要基于Karmada现有的能力,构建多集群场景下的AI作业调度能力,弥补Karmada调度方面缺失的队列管理等能力,以解决多集群场景下AI作业任务调度、队列管理、多租户配额管理问题。项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0505?list=org&navpage=org课题三:Volcano支持弹性层级队列管理项目编号:243ba0509项目难度:进阶/Advanced项目社区导师:李鑫导师联系邮箱:hwdefcom@outlook.com项目简述:在云原生AI任务调度场景下,公平调度和资源利用率是用户比较关注的问题,Volcano社区已经构建了弹性队列管理插件capacity,以支持细粒度的资源借入借出和队列管理,提升资源利用率,但在实际场景中,队列通常是层级的,对应公司团队的层级组织架构,为了更加符合实际的队列使用场景,进一步提升AI任务调度的资源利用率,Volcano需要在capacity的基础上支持层级队列管理能力。项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0509?list=org&navpage=org课题四:云原生批量计算项目Volcano UI & Monitor系统项目编号:243ba0574项目难度:基础/Basic项目社区导师:王雷博导师联系邮箱:wangleibo1@huawei.com项目简述:作为首个云原生批量计算项目Volcano,提供了丰富的功能和优异的性能,帮助用户提升AI和大数据的性能以及提升整体资源利用率,然而对于很多用户来说,Volcano因为缺少前端UI以及监控,整体的使用成本以及学习曲线较高,尤其是对于集群管理员,无法通过UI对队列、作业进行管理以及无法直观的查看资源的总量、余量以及作业的进度等。该项目将设计和实现一套Volcano项目的前端UI,该UI具体包含如下内容:1. 集群资源信息查看2. 队列管理2.1 查看队列 ( reservation, min, max, allocated resource, job数量等)2.2 配置队列(reservation,min, max)3. 工作负载3.1 查看Job状态3.2 配置Job的关键属性4. 配置调度器的调度策略项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0574?list=org&navpage=org课题五:Volcano 性能基准测试和压力测试项目难度:243ba0576项目难度:进阶/Advanced项目社区导师:汪洋导师联系邮箱:wysea1990@163.com项目简述:Volcano开源项目提供了丰富的作业管理、队列管理、调度策略等功能,目前缺少一套公开的性能测试和压力基准测试。如果有一份性能基准测试报告,它将会帮助大数据用户以及HPC用户快速评估是否可以将他们的业务从传统软件迁移到Kubernetes和Volcano系统。同时也有利于新研发算法的有效性评估。本课题目标是设计和实现一套性能测试的方法以及标准,然后进行充分的性能及压力测试,最终提供一份报告。项目链接:https://summer-ospp.ac.cn/org/prodetail/243ba0576?list=org&navpage=org▍如何报名开源之夏Volcano课题?报名对象本活动面向年满 18 周岁的高校在校学生。暑期即将毕业的学生,只要申请时学生证处在有效期内,就可以报名活动。中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。外籍学生参与活动时需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。4月30日-6月4日,符合条件的学生可以通过开源之夏官网(https://summer-ospp.ac.cn/)注册、与导师沟通项目并提交项目申请。▶ 与导师建立沟通对Volcano社区开源之夏课题感兴趣的同学,可以通过本文上方导师邮箱或社区宣讲等方式,提前联系导师沟通课题要求,了解与锁定适合自己的项目;▶ 准备项目申请材料提交申请1. 查看学生指南(https://summer-ospp.ac.cn/help/student/)中的【项目申请模板】,并根据要求准备相关材料。2.点击项目主页中的【加入备选】按钮,进入系统个人中心【我的项目】中点击【查看】按钮,上传简历及项目申请书;3. 对所有项目申请书进行优先级排序,若同时被多个项目选中,则根据提交的项目排序,优先中选优先级高的项目;4. 点击【排序并提交】按钮提交全部项目申请。▶ 学生可以收获什么?结识开源界小伙伴和技术大牛获得社区导师的专业指导,与开源项目开发者深度交流丰富项目实践经验,提升项目开发技能为学习方向提供参考,为职业发展积累人脉通过结项考核的学生将获得结项奖金和结项证书(基础难度税前8000元RMB,进阶难度税前12000元RMB),更有机会获选优秀学生▍Volcano社区技术交流与联系添加社区小助手k8s2222回复Volcano开源之夏进入技术交流群
  • [行业前沿] 【云原生批量调度引擎Volcano案例】 ING国际银行基于Volcano的大数据分析平台应用实践
    在 KubeCon + CloudNativeCon North America 2022 ,ING集团发表了《Efficient Scheduling Of High Performance Batch Computing For Analytics Workloads With Volcano - Krzysztof Adamski & Tinco Boekestijn, ING》主题演讲,重点介绍了云原生批量计算项目Volcano如何在数据管理平台中为大数据分析作业提供高性能调度工作。详情参见:KubeCon + CloudNativeCon North America ▎ING背景介绍ING集团(荷兰语:Internationale Nederlanden Groep),亦名荷兰国际集团,是一个国际金融服务私营企业,成立于1991年,由荷兰最大的保险公司Nationale-Nederlanden,与荷兰的第三大银行NMB PostBank Group合并而成。ING集团的服务遍及全球40多个国家,核心业务是银行、保险及资产管理等。ING集团的全球职员大约56,000人,顾客5320万人,包括自然人、家庭,企业、政府及其他等,例如基金组织。务背▎业务背景介绍在银行行业有许多法规和限制,如:监管要求在全球范围内各不相同、数据孤岛-全局和本地限制、数据安全、合规创新等,想要快速引入新技术不是一件容易的事情,为此,ING布局符合自身产业的DAP平台(Data Analytics Platform),为全球50%的ING员工提供安全的、自助的端到端分析能力,帮助员工在数据平台之上构建并解决业务问题。2013年开始我们有了数据平台的概念,2018年通过引入云原生技术打造新一代基础设施平台,从那时起,平台需求有了稳定的增长,采用率也在持续提升,目前数据索引平台上的项目已超过400个。我们所构建的平台目标是在高度安全的自助服务平台中完成所有分析需求,并且具备以下特点:开源工具模型强大的计算能力严格的安全和合规措施所有的分析集中在同一个平台满足全球和本地需求▎挑战与方案目前我们在由传统的Hadoop平台向Kubernetes过渡,但是对于作业管理和多框架支持方面还存在一些挑战,如下:1.Job的管理a.Pod级调度,无法感知上层应用b.缺乏细粒度的生命周期管理c.缺乏任务依赖关系,作业依赖关系2.调度a.缺少基于作业的调度,如:排序、优先级、抢占、公平调度、资源预定等b.缺少足够的高级调度算法,如:CPU拓扑、任务拓扑、IO-Awareness,回填等c.缺少对作业、队列、命名空间之间资源共享机制的支持3.多框架支持a.对Tensorflow、Pytorch等框架的支持不足b.对每个框架部署(资源规划、共享)等管理比较复杂利用Kubernetes来管理应用服务(无状态应用、甚至是有状态应用)是非常方便的,但是对于批量计算任务的调度管理不如yarn友好,同样yarn也存在一些限制,比如对新框架的支持不够完善,比如TensorFlow、Pytorch等,为此,我们也在寻找新的解决方案。▍Kubernetes + Hadoop在我们之前的集群管理上,会把Hadoop和Kubernetes的调度分开,基本上所有的spark作业都会运行在Hadoop集群中,其他的一些任务和算法会运行在Kubernetes集群,我们的目标是希望所有的任务全部运行在Kubernetes集群,这样管理起来会更简单。Kubernetes和YARN共同工作时,由于Kubernetes和Hadoop资源是静态划分的,在正常办公时间,Hadoop应用和Kubernetes各自使用自身分配资源,即便spark任务压力大也无法借用更多资源。夜晚时间,集群中仅有批处理任务,Kubernetes资源全部空闲,却无法分配给Hadoop进行有效利用,对于调度平台来讲,这不是一种最佳的资源分配方式。▍Kubernetes with Volcano使用Kubernetes管理整个集群,通过Volcano进行spark任务调度,此时不需要再对资源做静态划分,集群资源可根据Pod、Batch、Interactive任务的优先级、资源压力等进行动态调整,集群整体资源利用率得到极大提升。比如在正常办公时间内,常规服务应用资源空闲的情况下,Batch和Interactive应用资源需求增多时,可以暂时借用常规服务的资源;在假期和夜晚休息时,Batch业务可以使用集群所有资源进行数据计算,集群资源利用率得到极大提升。比如在正常办公时间内,常规服务应用资源空闲的情况下,Batch和Interactive应用资源需求增多时,可以暂时借用常规服务的资源;在假期和夜晚休息时,Batch业务可以使用集群所有资源进行数据计算,集群资源利用率得到极大提升。Volcano是专为Kubernetes而生的批处理调度引擎,其提供了以下能力:加权优先级的作业队列如果集群具有备用容量,可提交超过队列资源限制的任务当更多的pod被调度时,具备抢占能力丰富可配置的工作负载调度策略     5.兼容YARN的调度能力Volcano的引入,补齐了Kubernetes平台对批处理作业的调度管理能力,并且自Apache Spark 3.3版本以来,Volcano被作为Spark on Kubernetes的默认batch调度器,安装使用更方便。业务常用特性▍冗余与局部亲和Volcano保留Kubernetes中pod级别的亲和性反亲和性策略配置,并增加了task级别的亲和性和反亲和性策略。▍DRF(Dominant Resource Fairness)调度DRF调度算法的全称是Dominant Resource Fairness,是基于容器组Domaint Resource的调度算法。volcano-scheduler观察每个Job请求的主导资源,并将其作为对集群资源使用的一种度量,根据Job的主导资源,计算Job的share值,在调度的过程中,具有较低share值的Job将具有更高的调度优先级。比如集群资源总量为CPU:18C,Memory:72GB,两个用户分别是User1和User2,每个User分配1个队列,在提交作业时会根据主导资源计算job的调度优先级。User1: CPU share值为 6/18=0.33,Memory share值为 24 / 72 = 0.33,最终share值为0.33User2:CPU share值为 12/18=0.67,Memory share值为 24 / 72 = 0.33,最终share值为0.67DRF策略在任务调度时,优先分配share值较低的Job,即User1所申请的资源。集群内队列资源可以通过配置权重值进行划分,但是当本队列提交任务超出队列分配的资源,并且其他队列存在资源空闲时,可以进行队列间资源共享。即User2在使用完本队列CPU资源后,可以使用User1队列内的空闲CPU资源。当User1队列提交新任务需要CPU资源时,将会触发抢占动作,回收User1被其他队列借用的资源。▍避免资源匮乏在使用过程中,需要避免批量计算任务与自有服务出现资源抢占与冲突的问题。比如:我们集群中有两个可用节点,集群中需要部署一个统一的服务层对外提供服务,比如Presto,或者类似Alluxio的缓存服务。但是在批量计算调度时,集群的资源空间有可能全部被占用,我们将无法完成自有服务的部署或升级,为此我们增加了空间可用系数相关配置,为集群预留一些备用空间,用于自有服务的部署使用。▍DRF 仪表盘我们根据Volcano的监控数据做了一个drf调度的仪表盘,在不同层次显示更细粒度的调度信息。在业务集群中,我们有一个队列存放交互式用户的任务,另有队列存放平台运行的所有重大项目的计算任务,我们可以为重大项目队列提供一定的资源倾斜,但是此时对交互式用户的任务将不会太友好。目前我们正在考虑增加集群高峰时段展示的功能,为用户提供更多的集群使用状态和压力等信息,在自助服务平台用户视角来看,用户按照集群的繁忙程度选择自己任务的开始时间,这样可以避免后台复杂的配置就可以获得高性能的运算体验。总结Volcano对批处理任务调度做了很好的抽象,使我们在Kubernetes平台能够获得更高的调度性能,后面我们也会将开发的功能逐步回合社区,比如:DRF Dashboard、在每个节点添加空闲空间、自动队列管理、更多的Prometheus监控指标、Grafana仪表盘更新、kube-state-metrics更新和集群角色限制等。Volcano社区技术交流地址Volcano官网:https://volcano.shGitHub : cid:link_0每周例会: https://zoom.us/j/91804791393添加社区小助手k8s2222回复“Volcano”进入技术交流群
  • [行业前沿] 华为云云原生动态
    华为云海外首发CCI Serverless容器服务,释放数字生产力在MWC23 巴展期间,华为新产品解决方案发布会在2月27日下午成功举行。在发布会上,华为云全球Marketing与销售服务总裁石冀琳表示:我们希望通过“一切皆服务”的战略,为客户、伙伴和开发者提供稳定、可靠、安全、可持续的云服务。在本次发布会上,华为云海外首发CCI Serverless容器服务正式上线。基于serverless容器架构CCI,客户无需创建和管理服务器节点,即可直接运行容器应用,按需获取、智能运维,让客户只需专注应用开发,无需关注底层资源。具备业务领先的弹性能力,助力客户轻松应对超10倍的突发流量浪涌。CCI Serverless容器具备优势如下:• 聚焦应用免运维1. Serverless无服务器容器使用全新体验2. 客户无需管理服务器或集群• 极致计算性能1. 瑶光统一资源池,提供多种X86、AXD、鲲鹏等类型算力资源2. 全面升级资源拓扑管理能力,保障容器极致算力性能• 智能统筹弹性1. 30秒发放1000容器,满足极速弹性要求2. 支持跨云、跨集群、跨IDC对接的灵活弹性,全场景助力客户业务应对峰值流量    Serverless容器构筑极致性能、高效运维、丰富算力等差异化竞争力,打造大规模高性能云原生Serverless容器资源底座。Source : 华为官网新闻报道KubeEdge 社区 v1.13.0 版本发布,稳定性、安全性大幅提升KubeEdge社区v.1.13.0版本发布。作为2023年最新版本,v.1.13.0性能在稳定性、安全性等方面进大幅提升,其中重大更新如下:• 运行性能提升:对CloudCore 内存使用减少 40%,优化List-watch dynamicController处理,增加云端和边缘之间的list-watch同步机制,增加dynamicController watch gc机制。• 安全性能提升:成为CNCF首个达到软件供应链SLSA L3等级的项目;同时删除边缘节点配置文件 edgecore.yaml 中的 token 字段,消除边缘信息泄露的风险• 对Kuberbetes支持升级至v.1.23.15: 将vendered kubernetes版本升级到v1.23.15,用户现在可以在云端和边缘使用新版本的特性。• 基于 DMI 的 Modbus 映射器:提供基于DMI的Modbus Device Mapper,用于接入Modbus协议设备。• EdgeMes​​h:向边缘隧道模块添加了可配置字段 TunnelLimitConfigedge-tunnel模块的隧道流用于管理隧道的数据流状态。用户可以获得稳定、可配置的隧道流,保证用户应用流量转发的可靠性。KubeEdge云原生边缘计算社区于2022年完成多项关键突破,相继发布《KubeEdge单集群10万边缘节点报告》,《云原生边缘计算威胁模型及安全防护技术白皮书》,并于KubeEdge Summit 2022正式开源分布式协同AI基准测试平台Ianvs。目前项目已完成EdgeMesh高可用架构,KubeEdge on openEuler支持,KubeEdge on openHarmony支持,下一代云原生边缘设备管理框架DMI也将带来更全面的的性能支持与更优的用户体验。欢迎大家测试体验。cid:link_1CNCF持续重视软件供应链安全, KubeEdge成为首个达到SLSA L3等级的项目软件供应链安全持续受到高度关注,CNCF 和OSTIF (Open Source Technology Improvement Fund,开放源码技术改进基金)在过去几年中一直合作,为CNCF 的毕业和孵化项目进行安全审计,保障开源生态系统具有更好的安全性。最新的 OSTIF 报告公布了 2022 年下半年至 2023 年初开展的独立安全审计结果。获得审计通过的项目包含KubeEdge、Argo、Istio、Envoy、CloudEvents等12个项目:审计工作通过创建良好的指导性政策和项目成熟度模型,以及可重复的审计执行流程,以确定风险、威胁媒介并实施工具来改善项目的安全状况。提升项包含:在本次公布的社区中,KubeEdge社区早在2022年7月份,通过完成整个KubeEdge项目的第三方安全审计[2] ,发布《云原生边缘计算安全威胁分析和防护白皮书》,并根据安全威胁模型和安全审计的建议,对KubeEdge软件供应链进行持续安全加固,为本次SLSA L3等级的达成做了充分的准备。在2023年1月18日,社区发布v1.13.0版本,该版本达到SLSA[1] L3等级标准(包括二进制和容器镜像构件),KubeEdge 成为CNCF社区首个达到SLSA L3等级的项目。以下表格展示了KubeEdge在Source、Build、Provenance、Common中的达标情况(Y表示KubeEdge已达标,空格表示SLSA在该等级下未要求):RequirementL1L2L3L4SourceVersion controlledYYYVerified historyYYRetained indefinitelyYYTwo-person reviewedYBuildScripted buildYYYYBuild serviceYYYBuild as codeYYEphemeral environmentYYIsolatedYYParameterlessYHermeticYProvenanceAvailableYYYTo-doAuthenticatedYYTo-doService generatedYYTo-doNon-falsifiableYTo-doDependencies completeTo-doCommonSecurityYAccessYSuperusersY为什么达到SLSA L3等级对开源项目至关重要软件供应链完整性攻击(对软件包的未经授权的修改)在过去三年中呈上升趋势。SLSA在KubeEdge项目软件供应链安全中发挥着重要作用,基于sigstore社区提供的能力,从源码到发布产物,对软件供应链端到端的整个流程进行签名和校验,确保KubeEdge软件供应链安全。自v1.13.0版本开始, KubeEdge 可以端到端的从源码构建到发布流程进行安全加固,保障用户获取到的二进制或容器镜像产物不被恶意篡改。基于SLSA安全框架,可以潜在地加强软件构件的完整性。SLSA提供端到端的指导原则,可以作为软件的一组防御措施,并防止对组成软件产品的软件包的篡改或任何类型的未经授权的修改。采用SLSA框架可以保护项目软件免受常见的供应链攻击。参考资料[1]  SLSA官网:https://slsa.dev/[2]   KubeEdge项目第三方安全审计:cid:link_0Karmada v1.5 新增多调度组助力成本优化Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。在最新发布的1.5版本中,Karmada 提供了多调度组的能力,利用该能力,用户可以实现将业务优先调度到成本更低的集群,或者在主集群故障时,优先迁移业务到指定的备份集群。本版本其他新增特性:• 提供了多调度器支持能力,默认调度器可以与第三方自定义调度器协同工作,提供更强的定制能力。• 集群差异化配置策略(OverridePolicy/ClusterOverridePolicy)将按照隐式的优先级进行应用。• 内置资源解释器支持聚合StatefulSet/CronJob 状态。Karmada v1.5版本API兼容v1.4版本API,v1.4版本的用户仍然可以平滑升级到v1.5版本Volcano 社区 v1.7.0 版本正式发布,提升云原生调度能力,强化AI、大数据场景适用度北京时间2023年1月9日,Volcano社区v1.7.0版本正式发布。Volcano是业界首个云原生批量计算项目,项目于2019年6月在上海的KubeCon大会上正式宣布开源,并于2020年4月成为CNCF官方项目。2022年4月,Volcano正式晋级为CNCF孵化项目。Volcano社区开源以来,受到众多开发者、合作伙伴和用户的认可和支持。截止目前,累计有490+全球开发者向项目贡献了代码。Volcano v1.7.0版本在主流计算框架支持、通用服务调度能力、队列资源可观测性等方面进行了增强,新增特性列表如下:• Pytorch Job插件功能强化• Ray on Volcano• 增强Volcano对Kubernetes通用服务的调度能力• 支持Volcano的多架构镜像• 优化队列状态信息等本次版本发布后,Volcano可以更好的适用AI、大数据场景,为使用者提供更简洁易用的Ray、Pytorch等工作负载的云原生调度能力。Volcano云原生批量计算项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。社区已吸引2.6万+全球开发者,并获得2.8k Star和670+ Fork,参与贡献企业包括华为、AWS、百度、腾讯、京东、小红书等。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对Spark、Flink、Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、mxnet、KubeGene、Ray等众多主流计算框架的支持,并构建起完善的上下游生态。ING国际银行基于Volcano开展大数据分析作业,获得Kubernetes更高调度性能在 KubeCon North America 2022, ING荷兰国际集团(International Netherlands Groups)发表了《Efficient Scheduling Of High Performance Batch Computing For Analytics Workloads With Volcano - Krzysztof Adamski & Tinco Boekestijn, ING》主题演讲,重点介绍了云原生批量计算项目Volcano如何在数据管理平台中为大数据分析作业提供高性能调度工作。ING荷兰国际集团(International Netherlands Groups)是一个国际金融服务私营企业,成立于1991年,由荷兰最大的保险公司Nationale-Nederlanden,与荷兰的第三大银行NMB PostBank Group合并而成。ING集团的服务遍及全球40多个国家,核心业务是银行、保险及资产管理等。ING集团的全球职员大约56,000人,顾客5320万人,包括自然人、家庭,企业、政府及其他等,例如基金组织。在银行行业有许多法规和限制,ING布局符合自身产业的DAP平台(Data Analytics Platform),为全球50%的ING员工提供安全的、自助的端到端分析能力,帮助员工在数据平台之上构建并解决业务问题。在本次以Volcano为案例的演讲中,ING 重点指出Volcano对批处理任务调度做了很好的抽象,使其在Kubernetes平台能够获得更高的调度性能,后面ING也会将开发的功能逐步回合社区,比如:DRF Dashboard、在每个节点添加空闲空间、自动队列管理、更多的Prometheus监控指标、Grafana仪表盘更新、kube-state-metrics更新和集群角色限制等。Volcano 2019年由华为云捐献给云原生计算基金会(CNCF),也是 CNCF 首个和唯一的容器批量计算项目,帮助用户将 AI、大数据、HPC等计算密集型的业务从传统的系统快速迁移到云原生平台,加速整个云原生落地的进程。Kurator v0.2.0 发布!助力企业分布式云原生应用升级Kurator是华为云开源的分布式云原生平台,帮助用户构建属于自己的分布式云原生基础设施,助力企业数字化转型。Kurator v0.1 版本通过一键集成 Karmada,Volcano,Istio,Prometheus 等主流开源项目,提供了分布式云原生的统一多集群管理,统一的调度,统一的流量治理以及统一的应用监控能力。在最新发布的 v0.2.0 中,Kurator 新增两大类关键特性,增强了可观测性并新增了集群生命周期管理,具体包括以下重大更新。• 基于Thanos的多集群监控及指标持久化存储• 基于Pixie实时的K8s应用监控• 支持本地数据中心集群生命周期管理• 支持AWS云上自建集群生命周期管理Kurator由此开始提供分布式云原生基础设施的管理。这意味着,从此Kurator可以依托基础设施、Kubernetes集群,更好的管理各种云原生中间件,为用户提供开箱即用的分布式云原生能力。Kurator,一键构建分布式云原Kurator于2022年6月在华为伙伴暨开发者大会上开源,是业界首个开源分布式云原生平台。通过集成业界主流开源技术栈以及良好云原生舰队管理性能,Kurator为用户提供一站式、开箱即用的分布式云原生能力,打造分布式云原生技术底座,助力企业业务跨云跨边、分布式化升级。Istio宣布2023年指导委员会席位,华为占两席2月6日,Istio社区宣布2023年指导委员会(Steering Committee)席位。Istio 指导委员会[1],由 9 个贡献席位(根据企业对项目的贡献按比例分配)和 4 个选举产生的社区席位组成。每年 2 月,社区都会根据年度商定的指标[4],查看哪些公司对 Istio 的贡献最大并进行公布。华为云已连续三年获得Istio委员会席位(Steering Committee成员2名,全球仅8家公司13人);Maintainer 2名,Member 10+名。过去几年,华为云Pull Request 位于全球TOP 3,Contributions TOP 3(1.9w+)。由华为云技术团队撰写并出版的《云原生服务网络Istio:原理、实践、架构与源码解析》一书,是业内最有影响力的服务网络书籍之一。目前,华为云应用服务网格(ASM)也已服务于互联网、汽车、制造、物流、政府等多个行业的近千家客户,满足不同行业客户的业务诉求。华为云将在此过程中积累的丰富经验,转化为代码贡献给Istio社区,极大地推动了Istio技术的成熟和社区的快速发展。同时,华为云还大力投入服务网格的技术布道,通过社区论坛、技术会议、视频直播、专业书籍等各种方式,推动服务网格技术传播和普及。添加小助手微信k8s2222,进入云原生交流群
  • [技术干货] 【云原生 免费课程】从0到1学云原生,云原生开发者养成路径!
    ​63个云原生课程视频,基本上包含了整个云原生学习周期里这些都是你得花心思掌握的。内容比较细,基本上满足实操需求,涉及到容器技术、K8s、监控、运维、存储,以及比较前沿的 istio 等等……适用人群:高校学生、企业中的个人开发者以及互联网从业人员。>>>戳我查看云原生开发者学习路径 在线课程添加小助手微信k8s2222,进入云原生技术交流群 
  • [技术干货] 云原生批量计算引擎 Volcano社区v1.8.0版本正式发布
    北京时间2023年8月17日,Volcano 社区 v1.8.0 版本正式发布,此次版本增加了以下新特性:支持vGPU调度及隔离支持vGPU和用户自定义资源的抢占能力新增JobFlow工作流编排引擎节点负载感知调度与重调度支持多样化的监控系统优化Volcano对通用服务调度的能力优化Volcano charts包的发布与归档Volcano是业界首个云原生批量计算项目,于2019年6月在上海 KubeCon 正式开源,并在2020年4月成为 CNCF 官方项目。2022年4月,Volcano 正式晋级为CNCF 孵化项目。Volcano 社区开源以来,受到众多开发者、合作伙伴和用户的认可和支持。截至目前,累计有590+全球开发者参与社区贡献。▍支持vGPU调度及隔离自 ChatGPT 爆火之后,AI大模型的研发层出不穷,不同种类的AI大模型也相继推出,由于其庞大的训练任务需要大量算力,以 GPU 为核心的算力供给已成为大模型产业发展的关键基础设施。在实际使用场景中,用户对于 GPU 资源的使用存在资源利用率低,资源分配不灵活等痛点问题,必须采购大量冗余的异构算力才能满足业务需求,而异构算力本身成本高昂,为企业的发展带来了很大的负担。从 1.8版本开始,Volcano 为可共享设备(GPU、NPU、FPGA...)提供一个抽象的通用框架,开发者可以基于该框架自定义多种类型的共享设备;当前,Volcano 已基于该框架实现 GPU 虚拟化特性,支持 GPU 设备复用、资源隔离等能力,详情如下:GPU共享:每个任务可以申请使用一个 GPU 卡的部分资源,GPU 卡可以在多个任务之间共享。设备显存控制:GPU 可以按照设备显存分配(比如:3000M)或者按比例分配(比如:50%),实现 GPU 虚拟化资源隔离能力。关于 vGPU 的更多信息,请参考:如何使用 vGPU 功能:https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_vgpu.md如何增加新的异构算力共享策略:https://github.com/volcano-sh/volcano/blob/master/docs/design/device-sharing.md▍支持vGPU和用户自定义资源的抢占能力当前 Volcano 支持 CPU、Memory 等基础资源抢占功能,对于 GPU 资源和用户基于 Volcano 框架二次开发调度插件,并自主管理的资源(如:NPU、网络资源等)尚不能很好的支持抢占能力。在1.8版本中,Volcano 对节点过滤相关处理( PredicateFn 回调函数)进行重构,返回结果中增加 Status 类型,用于标识在调度、抢占等场景下,当前节点是否满足作业下发条件。GPU 抢占功能已基于优化后的框架实现发布,用户基于Volcano 进行二次开发的调度插件可以结合业务场景适配升级。关于支持扩展资源抢占的更多信息,请参考:https://github.com/volcano-sh/volcano/pull/2916▍新增JobFlow工作流编排引擎工作流编排引擎广泛应用于高性能计算、AI 生物医药、图片处理、美颜、游戏AGI、科学计算等场景,帮助用户简化多个任务并行与依赖关系的管理,大幅度提升整体计算效率。JobFlow 是一种轻量化的任务流编排引擎,专注于 Volcano 的作业编排,为Volcano 提供作业探针、作业完成依赖,作业失败率容忍等多样化作业依赖类型,并支持复杂的流程控制原语,具体能力如下:支持大规模作业管理以及复杂任务流编排支持实时查询到所有关联作业的运行情况以及任务进度支持作业自动运行、定时启动释放人力成本支持不同任务可以设置多种动作策略,当任务满足特定条件时即可触发对应动作,如超时重试、节点故障漂移等JobFlow 任务运行演示如下:关于 JobFlow 的更多信息,请参考:https://github.com/volcano-sh/volcano/blob/master/docs/design/jobflow/README.md▍节点负载感知调度与重调度支持多样化的监控系统Kubernetes 集群状态随着任务的创建和结束实时变化,在某些场景(如:增加、删除节点,Pod、Node 的亲和性改变,作业生命周期动态变化等),出现集群节点间资源利用率不均衡,节点性能瓶颈掉线等问题,此时基于真实负载的调度与重调度可以帮助我们解决上述问题。Volcano 1.8版本之前,真实负载调度与重调度的指标获取仅支持 Prometheus,从1.8版本开始,Volcano 优化监控指标获取框架,新增 ElasticSearch 监控系统支持,并支持以较小适配工作量平滑对接更多类型监控系统。关于支持多种监控系统的更多信息,请参考:基于节点负载感知调度:https://github.com/volcano-sh/volcano/blob/master/docs/design/usage-based-scheduling.md重调度:https://github.com/volcano-sh/volcano/blob/master/docs/design/rescheduling.md▍优化Volcano对微服务调度的能力增加Kubernetes默认调度器插件开关 Volcano 是一个统一的融合调度系统,不仅支持 AI、BigData 等计算类作业,也支持微服务工作负载,兼容 Kubernetes 默认调度器的 PodTopologySpread、VolumeZone、VolumeLimits、NodeAffinity、PodAffinity等调度插件,Kubernetes 默认调度插件能力在 Volcano 中默认开启。自 Volcano 1.8 版本开始,Kubernetes 默认调度插件可以通过配置文件的方式自由选择打开和关闭,默认全部打开,如果选择关闭部分插件,比如:关闭PodTopologySpread 和 VolumeZone插件,可以在 predicate 插件中将对应的值设置为 false,配置如下:actions: "allocate, backfill, preempt" tiers: - plugins: - name: priority - name: gang - name: conformance - plugins: - name: drf - name: predicates arguments: predicate.VolumeZoneEnable: false predicate.PodTopologySpreadEnable: false - name: proportion - name: nodeorder更多信息,请参考:https://github.com/volcano-sh/volcano/issues/2748增强ClusterAutoscaler兼容性在 Kubernetes 平台中,Volcano 除了作为批量计算业务的调度器之外,也被越来越多的用作通用服务的调度器。Node 水平伸缩(ClusterAutoscaler)是Kubernetes 的核心功能之一,在面对用户业务量激增和节省运行成本方面发挥重要作用。Volcano 优化作业调度等相关逻辑,增强与 ClusterAutoscaler 的兼容互动能力,主要为以下两个方面:调度阶段进入 pipeline 状态的 pod 及时触发扩容候选节点分梯度打分,减少集群 terminating pod 对调度负载的影响,避免pod 进入无效 pipeline 状态,从而导致集群误扩容更多信息,请参考:https://github.com/volcano-sh/volcano/issues/3000https://github.com/volcano-sh/volcano/issues/2782精细化管理Node资源,增强韧性当节点中由于某种原因比如 device-plugin 上报信息异常,出现节点的某种资源总量小于已分配资源量时,Volcano 认为该节点数据不一致,会隔离节点,停止向该节点调度任何新的工作负载。在1.8版本中,对于节点资源进行精细化管理,比如:当节点的 GPU 总资源容量小于已分配资源量时,申请 GPU 资源的 pod 禁止再调度至该节点,申请非 GPU 资源的作业,将仍然允许正常向该节点调度。更多信息,请参考:https://github.com/volcano-sh/volcano/issues/2999▍优化Volcano charts包的发布与归档随着 Volcano 在用户越来越多的生产环境和云环境中使用,简洁标准的安装动作至关重要。自1.8版本开始,Volcano 优化 charts 包发布归档动作,标准化安装使用流程,并完成历史版本(v1.6、v1.7)向新 helm 仓库的迁移,使用方式如下:● 添加 Volcano charts 仓地址helm repo add volcano-sh https://volcano-sh.github.io/helm-chart● 查询所有可安装的 Volcano 版本helm search repo volcano -l● 安装最新版 Volcanohelm install volcano volcano-sh/volcano -n volcano-system --create-namespace● 安装指定版本 Volcano,比如:1.7.0helm install volcano volcano-sh/volcano -n volcano-system --create-namespace --version 1.7.0关于 Volcano charts 包的更多信息,请参考:https://github.com/volcano-sh/helm-charts▍致谢贡献者Volcano 1.8.0 版本包含了来自 31 位贡献者的数百次代码提交,在此对各位贡献者表示由衷的感谢:贡献者GitHub ID@shaobo76@william-wang@gengwg@kingeasternsun@Aakcht@waiterQ@Shoothzj@hwdef@halegreen@wulixuan@Monokaix@medicharlachiranjeevi@WulixuanS@rayoluo@lowang-bh@gj199575@noyoshi@Tongruizhe@jinzhejz@Cdayz@Mufengzhe@renwenlong-github@wangyang0616@jiamin13579@zbbkeepgoing@zhoumingcheng@z2Zhang@jiangkaihua@archlitchi@lixin963@xiao-jay@Yanping-io参考链接Release note: v1.8.0:https://github.com/volcano-sh/volcano/releases/tag/v1.8.0Branch:release-1.8:https://github.com/volcano-sh/volcano/tree/release-1.8深入Volcano了解Volcano 云原生批量计算项目主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。社区已吸引5.8万+全球开发者,并获得3.2k Star 和730+ Fork,参与贡献企业包括华为、AWS、百度、腾讯、京东、小红书、博云、第四范式等。目前,Volcano在人工智能、大数据、基因测序等海量数据计算和分析场景已得到快速应用,已完成对 Spark、Flink、Tensorflow、PyTorch、Argo、MindSpore、Paddlepaddle 、Kubeflow、MPI、Horovod、mxnet、KubeGene、Ray 等众多主流计算框架的支持,并构建起完善的上下游生态。Volcano社区技术交流地址Volcano官网:https://volcano.shGitHub: https://github.com/volcano-sh/volcano每周例会: https://zoom.us/j/91804791393添加社区小助手回复“Volcano”进入技术交流群
  • [热门活动] 一种基于云原生批量计算平台Volcano的工作流编排引擎JobFlow-华为云汪洋&博云梁兵-GOTC全球开源技术峰会
    大会介绍:5月27日-28日,GOTC 全球开源技术峰会((Global Open-source Technology Conference)在上海张江科学会堂成功举办。 GOTC是由上海浦东软件园、开放原子开源基金会、Linux 基金会亚太区和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。 本届大会以“Open Source, Into the Future”为主题,国际开源大咖、专家学者和产业代表齐聚一堂,超 1500 人现场参会, 540 万+人次线上直播观看,全网曝光量达3 亿+( 数据来源:CNCF),共同探讨开源未来,助力开源发展。议题分享:一种基于云原生批量计算平台Volcano的工作流编排引擎JobFlow讲师介绍:华为云高级软件工程师汪洋、博云PaaS产品线平台架构师梁兵议题简介:华为云高级软件工程师汪洋,博云PaaS产品线平台架构师梁兵联合分享了《一种基于云原生批量计算平台Volcano的工作流编排引擎JobFlow》。工作流编排引擎广泛应用于高性能计算、AI生物医药、图片处理、美颜、游戏AGI、科学计算等场景,帮助用户简洁化管理多个任务的并行与依赖关系,大幅度提升整体计算效率。Volcano通过JobFlow提供一种轻量化的工作流编排能力,专注于对多作业场景下的调度管理,实时查看作业及其任务的完成进度、执行状态,只要资源允许的场景下,自动下发后任务,大大提升了资源利用率、减少了人工成本和作业执行时间。点击视频观看本次分享精彩回放,添加小助手微信k8s2222回复Volcano,进入技术交流群video
  • [热门活动] 携程:基于Karmada的大规模多云容器平台实践,使能应用跨集群弹性伸缩—GOTC全球开源技术峰会
    大会介绍:5月27日-28日,GOTC 全球开源技术峰会((Global Open-source Technology Conference)在上海张江科学会堂成功举办。 GOTC是由上海浦东软件园、开放原子开源基金会、Linux 基金会亚太区和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。 本届大会以“Open Source, Into the Future”为主题,国际开源大咖、专家学者和产业代表齐聚一堂,超 1500 人现场参会, 540 万+人次线上直播观看,全网曝光量达3 亿+( 数据来源:CNCF),共同探讨开源未来,助力开源发展。议题分享:基于Karmada的大规模多云容器平台实践,使能应用跨集群弹性伸缩讲师介绍:携程资深云原生研发工程师李静雪议题简介:携程资深云原生研发工程师李静雪分享了携程基于Karmada的多集群HPA探索与实践。Karmada 是CNCF首个多云多集群容器编排项目。结合了华为云多云容器平台MCP以及Kubernetes Federation核心实践, Karmada提供了包括Kubernetes原生API支持、多层级高可用部署、多集群自动故障迁移、多集群应用自动伸缩、多集群服务发现、多调度组及自定义调度器等关键特性,并且提供原生Kubernetes平滑演进路径,让用户像使用单个集群一样轻松管理跨云多集群,让基于Karmada的多云方案无缝融入云原生技术生态。点击视频观看本次分享精彩回放,添加小助手微信k8s2222回复Karmada,进入技术交流群video
  • [热门活动] 华为云云原生团队王泽锋:不同角度谈开源及开源人才培养
    大会介绍:5月27日-28日,GOTC 全球开源技术峰会((Global Open-source Technology Conference)在上海张江科学会堂成功举办。 GOTC是由上海浦东软件园、开放原子开源基金会、Linux 基金会亚太区和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。 本届大会以“Open Source, Into the Future”为主题,国际开源大咖、专家学者和产业代表齐聚一堂,超 1500 人现场参会, 540 万+人次线上直播观看,全网曝光量达3 亿+( 数据来源:CNCF),共同探讨开源未来,助力开源发展。议题分享:不同角度谈开源及开源人才培养讲师介绍:华为云云原生开源负责人王泽锋议题简介:在“Linux 基金会开源教育及人才培养峰会”分会场,各界大咖从不同角度深入探讨了国内开源教育和人才培养的重要性和挑战。此外,基于华为云在 LFOSSU x 华为云云原生人才培养计划,华为云云原生王者之路训练营,Volcano云原生批量计算公开课,KubeEdge云原生边缘计算公开课等行业人才培养领域的杰出贡献,华为获评“2022年度优秀开源人才培养企业“称号。点击视频观看本次分享精彩回放,添加小助手微信k8s2222回复KubeEdge,进入技术交流群video
  • [热门活动] Istio Ambient Mesh Present and Future-华为云云原生团队徐中虎-GOTC全球开源技术峰会
    大会介绍:5月27日-28日,GOTC 全球开源技术峰会((Global Open-source Technology Conference)在上海张江科学会堂成功举办。 GOTC是由上海浦东软件园、开放原子开源基金会、Linux 基金会亚太区和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。 本届大会以“Open Source, Into the Future”为主题,国际开源大咖、专家学者和产业代表齐聚一堂,超 1500 人现场参会, 540 万+人次线上直播观看,全网曝光量达3 亿+( 数据来源:CNCF),共同探讨开源未来,助力开源发展。议题分享:Istio Ambient Mesh Present and Future讲师介绍:华为云云原生团队开源技术专家徐中虎议题简介:在“Cloud Native Summit”云原生分会场,华为云云原生团队开源技术专家, Google Open Source Peer Bonus获得者徐中虎介绍了当前 Istio 社区最热门的新技术Ambient Mesh, 并从功能、安全、资源开销等多方面与Sidecar模式对比,以辨证的角度分析Ambient Mesh对一些典型场景会非常有力,但它的发展距离生产可用,还有一段挺长的距离。点击视频观看本次分享精彩回放,添加小助手微信k8s2222回复Istio,进入技术交流群video