Caelus是一套 Kubernetes 解决方案,通过运行额外的批处理作业来重新利用节点的闲置资源,这些资源来自于在线作业的利用率不足,尤其是在低流量时期。为了使批处理作业与在线作业兼容,caelus 动态地管理多种资源隔离机制,同时检查各种指标的异常情况。如果检测到干扰,批处理作业将被限制甚至终止。
特性:
-
收集各种指标,包括节点资源、cgroup 资源和在线作业延迟
-
批处理作业可以在 YARN 或 Kubernetes 上运行
-
预测节点的总资源使用情况,包括在线作业和内核模块,例如slab
-
动态管理CPU、内存、磁盘空间等多种资源隔离机制
-
动态检查各种指标的异常,例如CPU使用率或在线作业延迟
-
当检测到资源压力或延迟峰值时限制甚至终止批处理作业
-
支持 Prometheus 指标
-
支持报警
Caelus为了适应各种的混部场景,遵循了几个关键原则,主要包括:
- 不改变业务使用方式,便于业务迁移到Caelus混部平台。比如大数据任务仍然可以使用原有的方式提交job,如果原来是Yarn,Caelus实现了Yarn on k8s。如果大数据已经是on k8s的方式,也可以更方便的使用统一调度;
- 对基础生态零入侵。不论是对hadoop,还是对k8s,都是零入侵的实现,因此保证了对多种版本的兼容性,以及后续的可扩展性;
- 非耦合、可扩展的架构。在实现时,充分兼顾了未来的可扩展性,大多功能都是以插件的形式实现。