scheduleOne
kube-scheduler源码分析(三)之 scheduleOne
scheduler
├── algorithm # 主要包含调度的算法
│ ├── predicates # 预选的策略
│ ├── priorities # 优选的策略
│ ├── scheduler_interface.go # ScheduleAlgorithm、SchedulerExtender接口定义
│ ├── types.go # 使用到的type的定义
├── algorithmprovider
│ ├── defaults
│ │ ├── defaults.go # 默认算法的初始化操作,包括预选和优选策略
├── cache # scheduler调度使用到的cache
│ ├── cache.go # schedulerCache
│ ├── interface.go
│ ├── node_info.go
│ ├── node_tree.go
├── core # 调度逻辑的核心代码
│ ├── equivalence
│ │ ├── eqivalence.go # 存储相同pod的调度结果缓存,主要给预选策略使用
│ ├── extender.go
│ ├── generic_scheduler.go # genericScheduler,主要包含默认调度器的调度逻辑
│ ├── scheduling_queue.go # 调度使用到的队列,主要用来存储需要被调度的pod
├── factory
│ ├── factory.go # 主要包括NewConfigFactory、NewPodInformer,监听pod事件来更新调度队列
├── metrics
│ └── metrics.go # 主要给prometheus使用
├── scheduler.go # pkg部分的Run入口(核心代码),主要包含Run、scheduleOne、schedule、preempt等函数
└── volumebinder
└── volume_binder.go # volume bind3. config.NextPod
3.1. getNextPod
4. Scheduler.schedule
4.1. ScheduleAlgorithm
5.1. podPassesBasicChecks
5.2. findNodesThatFit
5.3. PrioritizeNodes
5.4. selectHost
5.4.1. findMaxScores
6. Scheduler.preempt
7. Scheduler.assume
8. Scheduler.bind
9. 总结
最后更新于