网站建设的售后服务,网站开发类书籍,网站建设ppt介绍,塘厦镇网站建设文章目录 前言Kube-Scheduler 的代码结构Kube-Scheduler 的核心逻辑1. 调度框架1.1 阶段划分1.2 阶段执行 2. 调度算法2.1 优先级函数2.2 优选函数 3. 调度器插件3.1 预选插件3.2 优选插件3.3 绑定插件 4. 节点选择4.1 候选节点选择4.2 节点权重计算 5. 调度事件处理5.1 调度事… 文章目录 前言Kube-Scheduler 的代码结构Kube-Scheduler 的核心逻辑1. 调度框架1.1 阶段划分1.2 阶段执行 2. 调度算法2.1 优先级函数2.2 优选函数 3. 调度器插件3.1 预选插件3.2 优选插件3.3 绑定插件 4. 节点选择4.1 候选节点选择4.2 节点权重计算 5. 调度事件处理5.1 调度事件处理逻辑5.2 事件队列 二次开发扩展点1. 调度器插件的自定义1.1 自定义预选插件1.2 自定义优选插件1.3 自定义绑定插件 2. 调度算法的自定义2.1 优先级函数的扩展2.2 优选函数的扩展 3. 调度器的扩展3.1 调度器阶段的扩展3.2 调度器事件处理的扩展 结语 前言
Kubernetes 源代码存放在 GitHub 上你可以通过以下链接获取Kubernetes GitHub 仓库。Kube-Scheduler 相关的代码位于 pkg/scheduler 和 cmd/kube-scheduler 等目录中。
pkg/scheduler: 包含了 Kube-Scheduler 的核心逻辑如调度算法、预选和绑定等。cmd/kube-scheduler: 包含 Kube-Scheduler 的入口文件以及启动 Kube-Scheduler 所需的配置和参数。
Kube-Scheduler 的代码结构
在 pkg/scheduler 目录下Kube-Scheduler 的代码结构主要分为以下几个模块
algorithm: 包含调度算法的实现如优先级函数等。framework: 包含调度框架的实现定义了调度器的各个阶段。plugins: 包含各种调度器插件的实现如预选插件和绑定插件。stages: 包含调度器各个阶段的具体实现如预选阶段、优选阶段等。
Kube-Scheduler 的核心逻辑
1. 调度框架
1.1 阶段划分
代码位置 pkg/scheduler/framework/framework.go主要功能 定义了调度器的各个阶段包括预选、优选等。
1.2 阶段执行
代码位置 pkg/scheduler/scheduler.go主要功能 调度器在执行时按照预定义的阶段顺序依次调用每个阶段的处理逻辑。
2. 调度算法
2.1 优先级函数
代码位置 pkg/scheduler/algorithm/priorities.go主要功能 定义了调度器中用于计算优先级的各种函数影响 Pod 的调度顺序。
2.2 优选函数
代码位置 pkg/scheduler/algorithm/predicates.go主要功能 定义了调度器中用于筛选可行节点的各种函数影响 Pod 的可调度性。
3. 调度器插件
3.1 预选插件
代码位置 pkg/scheduler/plugins/主要功能 预选插件影响节点的可用性决定哪些节点可以继续参与调度。
3.2 优选插件
代码位置 pkg/scheduler/plugins/主要功能 优选插件通过给节点打分影响节点的优选顺序最终决定 Pod 被调度到哪个节点。
3.3 绑定插件
代码位置 pkg/scheduler/plugins/主要功能 绑定插件负责确定 Pod 被绑定到哪个节点上。
4. 节点选择
4.1 候选节点选择
代码位置 pkg/scheduler/algorithm/predicates.go主要功能 调度器在节点选择阶段根据预选和优选函数选择候选节点。
4.2 节点权重计算
代码位置 pkg/scheduler/algorithm/priorities.go主要功能 调度器通过计算节点的权重最终确定 Pod 被调度到哪个节点。
5. 调度事件处理
5.1 调度事件处理逻辑
代码位置 pkg/scheduler/scheduler.go主要功能 调度器根据调度事件的类型执行相应的事件处理逻辑。
5.2 事件队列
代码位置 pkg/scheduler/factory/factory.go主要功能 调度器使用事件队列来异步处理调度事件确保调度逻辑是非阻塞的。
二次开发扩展点
1. 调度器插件的自定义
1.1 自定义预选插件
代码位置 pkg/scheduler/plugins/主要功能 你可以编写自定义的预选插件以实现对节点可用性的自定义判断逻辑。
1.2 自定义优选插件
代码位置 pkg/scheduler/plugins/主要功能 你可以编写自定义的优选插件以实现对节点优选顺序的自定义调整。
1.3 自定义绑定插件
代码位置 pkg/scheduler/plugins/主要功能 你可以编写自定义的绑定插件以实现对 Pod 绑定到节点的自定义策略。
2. 调度算法的自定义
2.1 优先级函数的扩展
代码位置 pkg/scheduler/algorithm/priorities.go主要功能 你可以编写自定义的优先级函数以实现对 Pod 调度优先级的自定义计算。
2.2 优选函数的扩展
代码位置 pkg/scheduler/algorithm/predicates.go主要功能 你可以编写自定义的优选函数以实现对节点的可调度性的自定义判断。
3. 调度器的扩展
3.1 调度器阶段的扩展
代码位置 pkg/scheduler/framework/framework.go主要功能 你可以扩展调度器的各个阶段以实现对调度流程的自定义控制。
3.2 调度器事件处理的扩展
代码位置 pkg/scheduler/scheduler.go主要功能 你可以扩展调度器的事件处理逻辑以实现对调度事件的自定义响应。
结语
以上是 Kubernetes Kube-Scheduler 部分的一个简要走读。为了深入理解和学习建议直接查阅 Kubernetes 源代码并深入阅读相关文档。希望这个指导对你进行 Kubernetes Kube-Scheduler 的源代码走读提供了帮助。