Gödel Rescheduler 的目标是:
- 定义重新调度过程以标准化重新调度程序与其他组件(例如 Gödel 调度程序)之间的交互。
- 构建标准化的重新安排框架,确保可扩展性、易于与新的重新安排策略集成以及对其他重新安排场景的支持。
- 开发强大的错误处理和迁移约束机制以维持集群稳定性。
总体架构
Godel-Rescheduler 由两个核心模块组成:Policy Manager 和 Movement Manager。其中,Policy Manager 负责输出重调度决策,而 Movement Manager 则负责拆解并执行这些决策。整个框架的目标是通过重调度,使集群朝向全局最优状态发展。
Policy Manager 作为算法与策略控制中心,Policy Manager 负责配置重调度策略、迁移条件检测和执行相应的算法。它输出全局或局部最优的调度结果,并将决策传递给 Movement Manager。
-
Policy Controller 负责整体调度流程的控制,利用各子模块提供的功能,输出最优的调度决策。
-
Policy Configurator 负责读取并解析配置文件,定义重调度策略的触发条件、参数和作用范围。支持四种触发方式:周期执行、Signal 信号、HTTP 请求和 Cronjob。每个策略都可以根据需要配置不同的触发方式。
-
Detector 用于检测集群、机器和实例的状态,评估是否需要进行局部迁移或全局重调度。不同的策略可以通过定制化 Detector 实现不同的检测逻辑,如热点检测、负载均衡或碎片整理等。
-
Algorithm Provider 根据 Detector 提供的输入,算法插件为每个需要重调度的实例找到最适合的目标节点。为确保调度决策的有效性,算法会进行目标节点的校验,并与其他策略的决策进行冲突检查。
-
Movement Checker 校验一个迁移是否会对集群稳定性造成负面影响,特别是对目标节点的资源消耗、负载情况等进行验证。
-
Validator 在框架层面对每个移动决策进行最终校验,确保未经过校验的错误决策不会被执行。
Movement Manager 负责决策的执行和排序,并将新的调度结果上报,同时清除过期的推荐结果。
-
Movement Generator 算法基于有向图强连通分量分解,依据实例在节点间的转移关系和 PDB(PodDisruptionBudget)限制,生成优化的迁移批次。目标是尽可能减少迁移次数,同时保证集群稳定性。
-
Task Killer 负责按顺序执行每个移动决策,确保每个决策在保证稳定性的前提下逐步实施。
-
Movement Recycler 确保在新策略生成前,及时清除旧的调度决策,避免过期决策影响新的调度计划。
评论