资源调度概述

更新时间: 2023-12-08 15:24:03

ACS兼容Kubernetes原生调度能力,支持不同类型的工作负载混合调度,并提供弹性资源、异构资源等精细化调度能力。本文介绍ACS兼容的Kubernetes原生调度能力和任务调度能力。

兼容的Kubernetes原生调度能力

ACS兼容Kubernetes原生调度能力,但在Serverless场景下使用拓扑约束、Pod间亲和与反亲和时,有以下需要注意的事项。

功能

描述

参考文档

Pod拓扑分布约束

您可以使用拓扑分布约束(Topology Spread Constraints)控制Pod在集群内故障域之间的分布,有助于实现高可用或者节省成本。目前ACS支持可用区(Zone)拓扑域。

可用区打散及亲和调度

Pod间亲和与反亲和

Pod间亲和与反亲和基于已经在节点上运行的Pod的标签来约束Pod可以调度到的节点,而不是基于节点上的标签。目前ACS支持可用区(Zone)拓扑域。

可用区打散及亲和调度

任务调度

ACS为批量计算的任务提供Gang scheduling和Capacity Scheduling调度能力。

功能

描述

参考文档

Gang scheduling

All-or-Nothing作业要求所有的任务在同一时间被调度,如果只是部分任务启动的话,启动的任务将持续等待剩余的任务被调度。在极端情况下,所有作业都处于挂起状态,从而导致死锁。

为了解决这个问题,ACS提供Gang Scheduling功能,保障同一个作业下的所有Pod能够同时启动,防止因部分Pod的异常而导致整个作业阻塞。

使用Gang Scheduling

Capacity Scheduling

ACS通过Kubernetes原生的ResourceQuota机制限制和控制命名空间中的资源使用。通过ResourceQuota,可以限制和监控命名空间中各种资源的使用情况,如CPU、内存、存储、副本数和服务数。这样,就可以防止某个命名空间中的资源被其他应用程序过度占用,从而保证应用程序的稳定性和可靠性。

使用Capacity Scheduling