分类 kube-batch 中的文章

kube-batch 修改默认的配置

在kube-batch V0.4及以上版本中,kube-batch默认的配置 只包含两个 Action(allocate, backfill)。 具体可以参考: https://github.com/kubernetes-sigs/kube-batch/blob/6e560929dcafec91b2b9a24f246a20b4569b39a8/pkg/scheduler/util.go 在自己的需求中,我们可能需要定义自己的配置。 思路: 查看util.go中的代码发现,Kube-batch在发现用户指定配置文件后,会自动地读取该文件的内容,而不……

阅读全文

kube-batch 从代码中找出gang scheduler这个过程

从之前的分析中,已经知道了kube-batch的启动过程。kube-batch总共有4个过程。这里我们从Allocate开始。 目录: 一: 流程解释 二:代码说明 一: 流程解释 在allocate.go中:找到Execute函数。首先用文字解释一下整个的过程: (1)将kube-batch的……

阅读全文

kube-batch如何实现gang-scheduler

gang scheduler介绍:一个job,可能有多个tasks,这些tasks要不全部执行,要不一个都不执行。 上面说到 kube-batch自定义了一个podGroup,调度时以podGroup为单位的。现在说一下调度podGroup的整个过程。 本文分为四个部分: 一:介绍kube-ba……

阅读全文

kube-batch--启动过程

追踪整个代码跳过过程 1 2 3 4 cmd/kube-batch/main.go:39main-> cmd/kube-batch/main.go:53app.Runcmd/kube-batch/app/server.go:60Run-> cmd/kube-batch/app/server.go:86sched.Runcmd/kube-batch/app/server.go:86sched.Run-> pkg/scheduler/scheduler.go:59cmd/kube-batch/app/server.go:59sched.Run-> pkg/scheduler/scheduler.runOnce:84 cmd/kube-batch/app/server.go:59 行代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 func(pc*Scheduler)Run(stopCh<-chanstruct{}){varerrerror// Start cache for policy. gopc.cache.Run(stopCh)pc.cache.WaitForCacheSync(stopCh)// Load configuration of scheduler schedConf:=defaultSchedulerConfiflen(pc.schedulerConf)!=0{ifschedConf,err=readSchedulerConf(pc.schedulerConf);err!=nil{glog.Errorf("Failed to read scheduler configuration '%s', using default configuration: %v",pc.schedulerConf,err)schedConf=defaultSchedulerConf}}pc.actions,pc.plugins,err=loadSchedulerConf(schedConf)iferr!=nil{panic(err)}// 这里又开始周期性调用 runOnce了。开始调用 gowait.Until(pc.runOnce,pc.schedulePeriod,stopCh)} cmd/kube-batch/app/server.go:84 行代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 func(pc*Scheduler)runOnce(){glog.V(4).Infof("Start scheduling ...")scheduleStartTime:=time.Now()deferglog.V(4).Infof("End scheduling ...")defermetrics.UpdateE2eDuration(metrics.Duration(scheduleStartTime))ssn:=framework.OpenSession(pc.cache,pc.plugins)deferframework.CloseSession(ssn)for_,action:=rangepc.actions{actionStartTime:=time.Now()action.Execute(ssn)metrics.UpdateActionDuration(action.Name(),metrics.Duration(actionStartTime))}} 这里主要 defer 是延迟函数,就是返回值之前执行。所以上面……

阅读全文

kube-batch--简介

1.背景介绍 K8s本身的调度器具有一些缺陷: (1) 默认的调度器是以 pod 为粒度的,对机器学习任务很不利。 (2)默认的调度器无法提供队列调度的功能 2.kube-batch介绍 Kube-batch 目前是 Kubernetes SIGs 旗下的一个孵化项目,是一个运行在 Kubernetes 上面向机器学习 / 大数据 /HPC 的批调度器(batch scheduler)……

阅读全文