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

Elastic Container Instance:最大 Pending 期間のカスタム設定

最終更新日:Jun 22, 2026

Pending の Elastic Container Instance (ECI) Pod は課金対象です。異常な Pod が長時間 Pending のまま迅速に処理されない場合、不要なコストが発生することがあります。デフォルトでは、ECI インスタンスの最大 Pending 期間は 4 時間です。ビジネス要件に基づいて、最大 Pending 期間をカスタマイズできます。この期間を超えた ECI インスタンスはシステムによって自動的に終了され、異常な Pod による不要なコストの発生が回避されます。

概要

各 ECI インスタンスは 1 つの Pod に対応します。ECI Pod を作成すると、対応する ECI インスタンスが Scheduling から Pending に移行した後に課金が開始されます。Pending フェーズ中に、イメージのプル失敗やボリュームのマウント失敗などの問題が発生した場合、ECI インスタンスは Pending のままとなり、課金が継続されます。デフォルトでは、ECI インスタンスの Pending 期間が 4 時間を超えると、システムが自動的にインスタンスを終了し、課金を停止します。特定の時間要件がある場合は、最大 Pending 期間をカスタマイズできます。

重要

ECI インスタンスが Scheduling、Pending、または Restarting の状態にあるとき、対応する Pod のステータス (PodStatus.Phase) は常に Pending になります。カスタマイズ可能な Pending 期間は、ECI インスタンスが Pending の状態にある時間のみを指します。Scheduling または Restarting の状態にある時間は含まれません。詳細については、「ECI Pod のライフサイクル」をご参照ください。

設定

Pod のメタデータに k8s.aliyun.com/eci-max-pending-minute アノテーションを追加することで、対応する ECI インスタンスの最大 Pending 期間をカスタマイズできます。

  • 値は 10 から 1,440 分 (1 日) までの整数でなければなりません。

    重要

    ビジネス要件に基づいて、合理的な最大 Pending 期間を設定してください。イメージが大きく、イメージキャッシュが利用できない場合、イメージのプルにかなりの時間がかかることがあります。最大 Pending 期間が短すぎると、イメージのプルが完了する前に Pod が終了してしまう可能性があります。

  • このアノテーションが追加されていない場合、デフォルトの最大 Pending 期間は 4 時間です。

  • このアノテーションは、実行中の init コンテナを持つ ECI Pod には適用されません。

最大 Pending 期間を超えると、システムは対応するイベントを報告します。ECI インスタンスのステータスは Failed に変わり、Pod のステータス (PodStatus.Phase) は restartPolicy によって決定されます。

  • restartPolicyAlways または OnFailure に設定されている場合、PodStatus.PhasePending になります。

  • restartPolicyNever に設定されている場合、PodStatus.PhaseFailed になります。

設定例

  1. 指定された最大 Pending 期間で ECI Pod を作成します。

    kubectl create -f pending-test.yaml

    次の pending-test.yaml ファイルのサンプルは、イメージのプル失敗により Pod が Pending 状態でスタックする状況をシミュレートします。

    apiVersion: v1
    kind: Pod
    metadata:
      name: pending-test
      labels:
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-max-pending-minute: "10"    # 最大 Pending 期間を 10 分に設定します。
    spec:
      containers:
      - image: test****-registry.example.com/eci_test/nginx:1.0  # プライベートイメージを使用して、イメージのプル失敗を再現します。実際のイメージに置き換えてください。
        name: test-container
      restartPolicy: Never  # 再起動ポリシーを Never に設定します。
  2. ECI Pod のステータスを確認します。

    kubectl get pod <pod-name> -o=jsonpath='{.status.phase}'

    出力例:

    :~$ kubectl get pod
    NAME            READY   STATUS             RESTARTS   AGE
    pending-test    0/1     ImagePullBackOff   0          25s
    :~$ kubectl get pod pending-test -o=jsonpath='{.status.phase}'
    Pending
  3. 指定された最大 Pending 期間が経過した後、ECI Pod のステータスとイベントを確認します。

    • restartPolicyNever に設定されているため、タイムアウト後に Pod は Failed になります。

      kubectl get pod <pod-name> -o=jsonpath='{.status.phase}'

      出力例:

      :~$ kubectl get pod
      NAME             READY   STATUS                              RESTARTS   AGE
      pending-test     0/1     ContainerInstanceStartingFailed     0          15m
      :~$ kubectl get pod pending-test -o=jsonpath='{.status.phase}'
      Failed
    • Pod のイベントを確認します。

      kubectl get events --field-selector involvedObject.name=<pod-name>

      出力例:

      Warning   Failed           pod/pending-test   Error: ErrImagePull
      Normal    BackOff          pod/pending-test   Back-off pulling image "test xxx om/eci_test/nginx:1.0"
      Warning   Failed           pod/pending-test   Error: ImagePullBackOff
      Warning   StartingFailed   pod/pending-test   [eci.containergroup]eci starting failed: The Eci pod stuck in Pending exceed eci-max-pending-minute 10, will be released.
    説明

    Elastic Container Instance コンソールを使用して、ECI インスタンスが Failed の状態にあるかを確認することもできます。インスタンスの詳細ページで、イベント タブを開いてイベントを表示します。