全部產品
Search
文件中心

Container Service for Kubernetes:基於ECI運行Job任務

更新時間:Jul 18, 2025

ECI支援秒級啟動,按需擴容。對於短時間啟動並執行Job任務,使用ECI來運行可以避免資源閑置浪費,在滿足業務需求的同時有效降低資源使用成本,提升叢集的彈效能力和資源使用率。

使用情境

Kubernetes叢集的節點資源配置不足會導致Pod無法及時運行,購買過多的節點又會導致資源的閑置浪費。如果您的業務有明顯的波峰穀特徵,推薦您使用ECI作為彈性資源集區。ECI支援秒級啟動,按需擴容,能夠很好地提升叢集的彈效能力。使用ECI來應對突發流量和運行Job任務,您無需提前預估業務流量或預留閑置資源,在滿足業務需求的同時能夠有效降低使用和營運成本。

Kuberntes叢集

前提條件

叢集中已安裝ack-virtual-node組件。具體操作,請參見部署ack-virtual-node組件

操作樣本

  1. 建立一個Namespace用於測試,並為其添加alibabacloud.com/eci=true標籤。

    說明

    為Namespace添加此標籤後,該Namespace下的Pod均將調度到虛擬節點,以ECI運行。本文以該方式為例進行說明,更多關於ECI調度的資訊,請參見調度Pod至虛擬節點

    kubectl create ns vk
    kubectl label namespace vk alibabacloud.com/eci=true
  2. 在測試的Namespace下建立Job。

    1. 修改以下YAML,儲存為job.yaml檔案。

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: pi
        namespace: vk     # 指定添加了特定Label的Namespace,將Pod調度到ECI
      spec:
        template:
          spec:
            containers:
            - name: pi
              image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5.32  
              command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
              resources:
                requests:
                  cpu: 16
                  memory: 32Gi
            restartPolicy: Never
        backoffLimit: 4
    2. 建立Job。

      kubectl -n vk apply -f job.yaml
  3. 查看Job對應Pod的運行情況。

    kubectl -n vk get pod -o wide

    預期返回如下,可以看到Job已經運行結束(狀態為Completed),所在節點為虛擬節點(節點首碼為virtual-kubelet)。

    NAME       READY   STATUS      RESTARTS   AGE   IP              NODE                            NOMINATED NODE   READINESS GATES
    pi-zw2lc   0/1     Completed   0          15m   192.168.XX.XX   virtual-kubelet-cn-shanghai-b   <none>           <none>
  4. 查看Job對應Pod的詳細資料。

    kubectl -n vk describe pod <pod-name>

    在返回的Events中,從StopCharge事件可以看到對應的ECI Pod已經運行結束,停止計費。

    說明

    ECI Pod按需收費,當Pod執行完成後會停止計費。更多資訊,請參見ECI執行個體計費ECI Pod生命週期

    Events:
      Type     Reason            Age   From        Message
      ----     ------            ----  ----        -------
      Warning  ImageCacheMissed  16m   EciService  [eci.imagecache]Missed image cache.
      Normal   Pulling           16m   kubelet     Pulling image "registry.cn--shanghai.aliyuncs.com/eci_open/perl:5.32"
      Normal   Pulled            15m   kubelet     Successfully pulled image "registry.cn-shanghai.aliyuncs.com/eci_open/perl:5.32" in 12.951s (12.951s including waiting). Image size: 336066994 bytes.
      Normal   Created           15m   kubelet     Created container: pi
      Normal   Started           15m   kubelet     Started container pi
      Normal   StopCharge        15m   EciService  [eci.containergroup]The charge of current ECI instance has been stopped, but the related resources are still being cleaned.

    因此,基於ECI運行Job任務可以節省計算成本,減輕叢集營運負擔,您無需關心叢集的計算資源是否充足,也無需關心節點的擴容和縮容問題。

相關文檔

您也可以結合使用搶佔式ECI執行個體來節約執行個體使用成本,請參見使用搶佔式ECI執行個體運行Job任務