K8s Scheduler
目录
文章简介:梳理 k8s scheduler 工作原理
code
pkg/scheduler/scheduler.go#scheduleOne
真正的执行逻辑
组件
scheduler
调度会 binding 到 apiserver,异步的等待 pods 启动pkg/scheduler/scheduler.go#bind
默认 pod 调度算法:pkg/scheduler/core/generic_scheduler.go#genericScheduler
如何调度
“Computing predicates”
“Computing predicates”:调用 findNodesThatFit()方法;
predicates.FitPredicate implement: NoDiskConflict
“Prioritizing”
“Prioritizing”:调用 PrioritizeNodes()方法;
“Selecting host”
“Selecting host”:调用 selectHost()方法。
List-Watch
Informer
抢占调度
pkg/scheduler/scheduler.go#preempt
总结
kube-scheduler 工作流程
对给定的 pod,先列举所有可调度的 nodes,根据资源是否充足初步过滤;使用优先级算法对 nodes 进行计算排序;最终选择分数最高的一个 node
总的工作流程图:
referenced from here