任务型实例概述

更新时间: 2024-01-22 18:20:55

容器计算服务ACS提供任务型实例,对大数据计算和批处理类型的工作负载来说具备可观的性价比。本文介绍ACS任务型实例的特点、适用场景、限制要求和使用方法。

价格优势

与通用型、独享型实例相比,使用任务型实例可以节省相当可观的资源成本。ACS在公测期间提供一定数量的免费测试资源,您可以在公测结束后详细对比各实例类型的价格情况。关于三种实例的具体差异,请参见ACS Pod实例概述

弹性算力

任务型实例使用的vCPU与宿主机节点的物理CPU并不是严格绑定的,实例进程在运行过程中会被随机调度到任何空闲的vCPU超线程上,不同类型实例的vCPU会分时共享物理CPU资源,在宿主机节点低负载时,任务型实例可以获得较好的算力性能,在高负载时可能会出现CPU算力受限的情况。

image

通常来说,在相同规格的情况下,受操作系统调度算法影响,任务型实例整体生命周期内的CPU算力基准低于通用型实例。下图展示了一个视频转码应用,在通用型和任务型实例类型下的运行时间情况对比。您可以结合应用自身的测试情况,具体评估应用对资源的需求量。同时,因为存在算力受限的概率性事件,不推荐将延迟敏感型服务通过任务型实例部署。

说明

不同应用类型对算力的敏感程度存在差异。在评估资源需求量时,建议采用的最佳实践是:将任务型应用提交到集群持续运行一段时间,根据任务的整体吞吐量评估应用对资源的需求。

image

运行时长

ACS对任务型实例的运行时长有限制。在公测期间,单个实例的最大运行时长为24小时。若任务型实例创建24小时后仍在运行,会因过期释放而被强制驱逐,在被释放前,您将收到相关的通知信息,您可以基于此通知对实例做优雅退出或保存中间结果等操作。对于任务型实例,ACS默认将提前10分钟发送驱逐决议通知。更多信息,请参见驱逐通知说明

说明

到期的时间点表示ACS发起实例释放的时间,从发起释放到释放完成会有数秒到数分钟不等的延迟,在此期间实例可能仍处于运行状态,并参与到计量计费。

下图举例了任务型实例在运行期间可能遇到的几种情况。

  • Pod A:实例在24小时内运行结束,释放资源。

  • Pod B:实例在24小时后仍在运行,收到过期通知后,主动释放资源并重新申请,在中断处重试继续运行,结束后释放资源。

  • Pod C:实例在24小时后仍在运行,收到过期通知后未处理,但应用具备自动的断点重试能力(如大数据计算框架),被强制驱逐后会自动在中断处重试继续运行,结束后释放资源。

  • Pod D:实例在24小时后仍在运行,收到过期通知后未处理,应用自身也不具备重试能力,在被强制释放后会失败退出。

image

建议您为应用合理规划单个实例承载的计算任务,控制单个实例的运行时间过长,并具备自动重试能力,避免24小时后被过期释放,导致应用失败退出。

若您的任务型实例需要常驻持续运行(例如承担了计算作业的托管能力),由于24小时后实例必然会到期释放,因此需要您关注到ACS发送的通知信息,提前主动对实例发起优雅退出及重试申请等操作,避免被直接释放导致应用失败退出。

适用场景

类型

说明

推荐场景

任务型实例适用于关注整体吞吐的计算型应用,其通常具备这些特点:无状态、容错能力强、并行度高、中间结果定期存档、中断后可以快速重试。典型场景如下:

  • 大数据计算

  • 科学计算

  • 音视频和图像编解码任务

  • 批处理任务

不推荐场景

对实例算力稳定性要求高的应用,通常对响应延迟比较敏感,这些应用更适合使用通用型或独享型实例,典型场景如下:

  • Web应用

  • 微服务应用

  • 网关系统

  • 中间件应用

使用任务型实例

准备工作

  • 参考适用场景,选择合适的应用类型,以便更好地发挥任务型实例的价值。

  • 为应用合理规划单个实例承载的计算任务,避免单个实例的运行时间过长,导致24小时后被过期释放。

  • 对于实例运行时间较长的情况(如大于1小时),应定期将中间结果保存到持久化存储中,如独立的云盘、OSS以及RDS等,以便实例被释放后可以快速重试。

  • 让应用感知算力压制或过期释放等通知事件,以便其可以优雅退出并快速重试,您可以创建对应的事件通知并主动释放实例,从而确认应用是否可以有效地处理这些事件。

步骤一:创建任务型实例

方式一:通过ACS控制台创建

以任务(Job)为例,按以下步骤操作:

  1. 登录容器计算服务管理控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群名称,在左侧导航栏,选择工作负载 > 任务

  3. 任务页面,单击使用镜像创建,然后在工作负载区域,选择工作负载任务(Job)实例类型选择任务型,配置其他信息进行创建。具体操作,请参见创建任务工作负载Job

方式二:通过kubectl命令创建

您可以通过Pod上的alibabacloud.com/instance-type标签指定实例的类型为best-effort。更多信息,请参见实例类型定义

步骤二:订阅实例通知事件

在任务型实例运行期间,您需要关注通知:实例运行时间达到最大值(24小时),即将因过期而释放。

通知采用的是K8s标准的Event格式,对应被触发的Pod对象,您可以参考K8s社区官方文档获取Event信息,也可结合ACS提供的事件中心,获得更丰富的监控和告警能力。具体格式,请参见驱逐通知说明

步骤三:处理实例通知事件

在收到过期释放通知事件后,请您关注应用的副本数量和可用性,及时完成扩容等操作,以避免服务受损。

阿里云首页 容器计算服务 相关技术圈