Slide 44
Slide 44 text
Kueueはcontroller-runtime(v0.11.1)によって実装されてる
func main() {
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), options) # managerを⽣成
if err != nil {
setupLog.Error(err, "unable to start manager")
os.Exit(1)
}
queues := queue.NewManager(mgr.GetClient()) // ClusterQueueを処理するQueueManagerを⽣成
cCache := cache.New(mgr.GetClient()) // 計算⽤のリソース使⽤量を管理するCacheManagerを⽣成
if failedCtrl, err := core.SetupControllers(mgr, queues, cCache); err != nil { // 各種Controllerを登録
setupLog.Error(err, "Unable to create controller", "controller", failedCtrl)
}
if err = job.NewReconciler(mgr.GetScheme(), // Job Controllerを登録
mgr.GetClient(),
mgr.GetEventRecorderFor(constants.JobControllerName),
job.WithManageJobsWithoutQueueName(config.ManageJobsWithoutQueueName),
).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Job")
os.Exit(1)
}
ctx := ctrl.SetupSignalHandler()
go func() { // Queueのクリーンアップ処理を⾏うgo routineを起動
queues.CleanUpOnContext(ctx)
}()
sched := scheduler.New(queues, cCache, mgr.GetClient(), // スケジューラーを⽣成〜起動
mgr.GetEventRecorderFor(constants.ManagerName))
go func() {
sched.Start(ctx)
}()
...
}
https://github.com/kubernetes-sigs/kueue/blob/v0.1.0/main.go