赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 弹性容器实例 ECI
  4. 实践教程
  5. 使用抢占式ECI实例运行Job任务

使用抢占式ECI实例运行Job任务

  • 实践教程
  • 发布于 2025-04-15
  • 0 次阅读
文档编辑
文档编辑

ECI支持抢占式实例,对于短时间运行的Job任务,以及部分扩展性和容错率高的无状态应用(例如可弹性伸缩的Web站点服务),使用抢占式实例可以有效地节约实例使用成本。本文以Job任务为例,演示如何创建抢占式实例类型的ECI Pod来运行Job任务。

背景信息

使用抢占式实例前,请了解以下相关信息:

  • 计费方式

    抢占式实例的市场价格随供需变化而浮动,您需要在创建抢占式实例时指定出价模式,当指定实例规格的实时市场价格低于出价且库存充足时,就能成功创建抢占式实例。创建成功后,在保护期(默认1小时)内按照成交时的市场价格计费。超过保护期后,按照实时的市场价格计费。

  • 回收机制

    超过保护期后,系统每隔5分钟将自动检测一次实例规格的市场价格和库存。如果某一时刻的市场价格高于出价或实例规格库存不足,抢占式实例会被释放。在释放前约5分钟,ECI会通过Kubernetes Events事件通知的方式告知您。在此期间,您可以做一定的处理来确保业务不受实例释放所影响(如切断该实例的业务入口流量)。

  • 创建方式

    支持指定ECS规格,或者指定vCPU和内存来创建抢占式ECI实例。

  • 配置方法

    您可以在Pod metadata中添加k8s.aliyun.com/eci-spot-strategy的Annotation来创建抢占式实例。该Annotation用于设置抢占式实例的出价策略,

    取值如下:

    • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。

    • SpotWithPriceLimit:自定义设置抢占实例价格上限。如果选择该策略,需添加k8s.aliyun.com/eci-spot-price-limit的Annotation来设置抢占式实例的每小时价格上限。

更多信息,请参见创建抢占式实例。

操作步骤

在Kubernetes中,Job负责批量处理短暂的一次性任务。使用抢占式实例运行Job任务的配置示例如下:

  1. 准备Job的配置文件,命名为spot_job.yaml。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      template:
        metadata:
          annotations:
            k8s.aliyun.com/eci-use-specs: ecs.c5.large,2-4Gi # 指定多个规格,提升实例创建成功率
            k8s.aliyun.com/eci-spot-strategy: SpotAsPriceGo    # 系统自动出价,跟随当前市场实际价格
        spec:
          containers:
          - name: pi
            image: registry-vpc.cn-beijing.aliyuncs.com/ostest/perl
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
          restartPolicy: Never
  2. 创建Job。

    kubectl create -f spot_job.yaml
  3. 查看Pod运行情况。

    kubectl get pod
    • 如果Job任务正在运行,对应Pod状态为Running。

      NAME       READY   STATUS      RESTARTS   AGE
      pi-frmr8   1/1     Running     0          35s
    • 如果Job任务正常运行完成,对应Pod状态会变更为Completed。

      NAME       READY   STATUS      RESTARTS   AGE
      pi-frmr8   0/1     Completed   0          2h
    • 如果Job任务还未运行完成,对应Pod由于抢占式实例的回收机制被释放了,Kubernetes中的Job Controller会自动创建新的Pod来继续运行任务。

      此时仍会保留旧的Pod,该Pod状态会变更为BidFailed。

      说明

      抢占式实例创建成功后,在保护期内可以正常运行。超出保护期后,如果市场价格高于出价或者资源库存不足,抢占式实例会被释放。抢占式实例在释放前约5分钟,会产生预释放事件(SpotToBeReleased),您可以查看事件信息获取。更多信息,请参见释放说明。

      NAME       READY   STATUS      RESTARTS   AGE
      pi-frmr8   1/1     BidFailed   0          4h53m
      pi-kp5zx   1/1     Running     0          3h45m
相关文章

通过ACK Serverless集群运行Job任务 2025-04-15 17:15

在ACK Serverless集群中,您可以按需按量创建Pod。当Pod结束后停止收费,无需为Job任务预留计算资源,从而摆脱集群计算力不足和扩容的烦扰,同时结合抢占式实例可以降低Job任务的计算成本。本文主要为您介绍如何通过ACK Serverless按需创建Job任务。

使用抢占式ECI实例运行Job任务 2025-04-15 17:15

ECI支持抢占式实例,对于短时间运行的Job任务,以及部分扩展性和容错率高的无状态应用(例如可弹性伸缩的Web站点服务),使用抢占式实例可以有效地节约实例使用成本。本文以Job任务为例,演示如何创建抢占式实例类型的ECI Pod来运行Job任务。 背景信息

在ACK Serverless集群中部署Jenkins并完成应用构建和部署 2025-04-15 17:15

本文介绍如何在阿里云ACK Serverless集群中部署Jenkins并通过简单的应用示例演示其构建和部署的过程。 前提条件

使用ECI运行TensorFlow任务 2025-04-15 17:15

您可以将AI训练任务所需的软件环境容器化,然后在ECI上执行训练任务,在解决环境搭建复杂问题的同时,可以只为运行时间付费,从而降低成本,提升效率。本文以一个Github上基于GPU的TensorFlow训练任务为例,介绍如何基于ACK Serverless集群,使用ECI来运行训练任务。

使用ECI搭建WordPress应用 2025-04-15 17:15

ECI支持使用Cloud Shell来管理。本文以搭建WordPress应用为例,介绍如何使用Cloud Shell来创建ACK Serverless集群,并快速创建ECI实例来部署容器应用。

使用ECI运行Spark作业 2025-04-15 17:15

在Kubernetes集群中使用ECI来运行Spark作业具有弹性伸缩、自动化部署、高可用性等优势,可以提高Spark作业的运行效率和稳定性。本文介绍如何在ACK Serverless集群中安装Spark Operator,使用ECI来运行Spark作业。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号