36|kube-scheduler调度器源码剖析(上)

kube-scheduler 调度模型
- 深入了解
- 翻译
- 解释
- 总结

1. kube-scheduler的调度原理主要分为Policy、Informer和调度流水线三大部分,其中调度流水线包括Scheduler Thread、Wait Thread和Bind Thread阶段,每个阶段都有不同的功能和作用。 2. 调度框架是面向Kubernetes调度器的一种插件架构,通过调度框架可以灵活支持业务多样性的调度需求,同时最小化对kube-scheduler的调度实现,调度框架定义了一些扩展点,每次调度一个Pod的尝试都分为调度周期和绑定周期。 3. 调度扩展点包括过滤器和评分,过滤器用于选择符合Pod Spec描述的Nodes,评分用于从经过过滤后的Nodes进行打分和排序,调度扩展点功能描述清晰明了。 4. 调度插件分为in-tree和out-of-tree两种,in-tree插件是作为Kubernetes核心组件的一部分直接编译和交付的,而out-of-tree插件是作为独立项目开发和维护的,具有更大的灵活性和独立部署能力。 5. out-of-tree插件可以单独进行版本升级或兼容,相比之下,in-tree插件需要与Kubernetes版本保持同步,这显示了out-of-tree插件在版本管理上的灵活性和独立性。 6. 调度插件的选择和使用对于Kubernetes集群的性能和灵活性具有重要影响,开发者需要根据实际需求和版本管理考虑选择in-tree或out-of-tree插件。 7. 调度插件的灵活性和独立部署能力为Kubernetes集群的调度器提供了更多的定制化和扩展性,有助于满足不同业务场景下的调度需求。 8. `kube-scheduler`在调度时,会选定并使用一个调度策略,支持自定义调度策略,包括Scheduler Extender、Multiple schedulers和Scheduling Framework。 9. 调度策略的设置是在`scheduler.New`函数中进行,根据配置文件中的字段设置默认的调度策略,构建Extender调度策略,并创建调度策略保存在Map类型的变量中。 10. 调度器在对 Pod 进行调度时,需要首先初始化并加载`kube-scheduler`调度插件,并根据配置初始化调度策略。
《Kubernetes 源码剖析与实战》,新⼈⾸单¥68