すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ECI での Job の実行

最終更新日:Sep 16, 2026

数秒で起動し、完了時に課金が停止する Elastic Container Instance (ECI) Pod でバッチワークロードを実行します。

Job が完了すると課金が停止するため、バッチワークロードでは事前プロビジョニングされたノードやアイドル状態のコンピュートリソースのコストを回避できます。これにより、ECI は需要が変動するワークロードに最適です。

Kubernetes cluster

前提条件

以下を確認してください。

スケジューリングの仕組み

Pod を ECI で実行するには、Pod またはその名前空間に alibabacloud.com/eci=true という label を付けます。仮想ノード (virtual-kubelet) は Pod をインターセプトし、通常のクラスターノードではなく ECI にスケジューリングします。

この例では、名前空間レベルの label を使用して、名前空間内のすべての Pod を仮想ノードにスケジューリングします。その他の方法については、「仮想ノードへの Pod のスケジューリング」をご参照ください。

手順

ステップ 1:名前空間の作成と ECI label の追加

kubectl create ns vk
kubectl label namespace vk alibabacloud.com/eci=true

vk 名前空間内のすべての Pod は、仮想ノード上で ECI Pod として実行されます。

ステップ 2:Job の作成

  1. 以下の YAML を job.yaml として保存してください。この Job は 16 CPU コアと 32 GB のメモリを使用して、円周率を 2,000 桁まで計算します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
      namespace: vk     # この名前空間内の 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. YAML ファイルを適用してください。

    kubectl -n vk apply -f job.yaml

ステップ 3:Job 完了の確認

Pod のステータスを確認してください。

kubectl -n vk get pod -o wide

Completed ステータスと virtual-kubelet で始まるノード名により、Pod が仮想ノードで実行されたことが確認できます。

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:課金停止の確認

Pod イベントを確認してください。

kubectl -n vk describe pod <pod-name>

Events セクションに StopCharge イベントがあることで、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 Pod は実際のリソース使用量に基づいて課金され、完了時に課金が停止します。詳細については、「ECI の課金」および「ECI Pod のライフサイクル」をご参照ください。

次のステップ

コストをさらに削減するには、プリエンプティブル ECI Pod を使用できます。詳細については、「プリエンプティブル ECI を使用した Job の実行」をご参照ください。