其他
给 K8s 装上大数据调度引擎:伏羲架构升级 K8s 统一调度
引言
Aliware
始于混部,终于统一调度
Aliware
基于资源静态划分的混部
混部的进阶:规模化混部
基于 K8s 的统一调度
1、核心挑战
以 APIServer 为中心的消息同步机制(List-Watch),更适用于调度频度较低的在线服务场景,对于以 MaxCompute 为代表的大数据计算场景(每秒 10 万次的调度频度),无法提供极致的性能保障; 默认的调度器无法提供灵活的多租户队列管理功能; 默认的调度器采取的是静态资源配额管理,不能做到“削峰填谷”,不利于实现集群资源的高利用率; Scheduler 整体上是中心式调度,扩展空间有限,缺乏分布式协同调度能力。
新增组件和功能尽量以插件的形式,减少对 K8s 体系的破坏 支持在线离线多种业务形态的混部,在保留 K8s 原生 Pod 语义的同时,针对离线高频调度的特性,扩展了 task 链路协议。既做到了调度上统一,也同时兼顾了在线离线运行时不同的特点。
设计上支持 sharding 作为所有 master 的后续规模扩展手段
2、统一的调度算法和流程
3、统一的资源分类和作业优先级
4、统一的多租 Quota 机制
MaxCompute 迁移统一调度
Aliware
也要性能极致
1、task 链路通信协议优化
2、task 链路调度性能优化
当 UniRequest 初次进入调度系统,在执行完请求查找资源的逻辑后,如果仍未满足,则将请求插入到 Mach->UniRequest 的 Queue 中,Queue 按 Quota 组聚合(Quota 组内有序) 当机器有资源变化时,触发 Mach->UniRequest 流程,从某个 Quota 组队列中查找合适的 UniRequest(在寻找过程中执行 Filter 逻辑)
同一台机器同一时刻只触发一个 Queue 的调度,同一个 Queue 同一时刻只能被一台机器触发调度
飞行中更换引擎
1、协议改造
2、热升级系统
结语
Aliware
招贤纳士
Aliware