All Products
Search
Document Center

Elastic Container Instance:Tetapkan durasi Pending maksimum kustom

Last Updated:Jun 21, 2026

Pod Elastic Container Instance (ECI) yang berada dalam status Pending dikenai biaya. Jika pod abnormal tetap dalam status Pending dalam jangka waktu lama dan tidak segera ditangani, Anda dapat mengalami biaya tambahan yang tidak perlu. Secara default, durasi Pending maksimum untuk instans ECI adalah 4 jam. Anda dapat menetapkan durasi Pending maksimum sesuai kebutuhan bisnis Anda. Sistem secara otomatis menghentikan instans ECI yang melebihi durasi tersebut, sehingga menghindari biaya tidak perlu akibat pod abnormal.

Ikhtisar

Setiap instans ECI berkorespondensi dengan satu pod. Saat Anda membuat pod ECI, penagihan dimulai setelah instans ECI terkait berpindah dari status Scheduling ke status Pending. Selama fase Pending, jika terjadi masalah seperti kegagalan pull image atau kegagalan mount volume, instans ECI akan tetap dalam status Pending dan terus dikenai biaya. Secara default, sistem secara otomatis menghentikan instans ECI dan menghentikan penagihan jika durasi Pending-nya melebihi 4 jam. Jika Anda memiliki kebutuhan waktu tertentu, Anda dapat menyesuaikan durasi Pending maksimum.

Penting

Saat instans ECI berada dalam status Scheduling, Pending, atau Restarting, status pod terkait (PodStatus.Phase) selalu Pending. Durasi Pending yang dapat disesuaikan hanya mencakup waktu yang dihabiskan instans ECI dalam status Pending. Waktu yang dihabiskan dalam status Scheduling atau Restarting tidak termasuk. Untuk informasi lebih lanjut, lihat siklus hidup pod ECI.

Konfigurasi

Anda dapat menambahkan anotasi k8s.aliyun.com/eci-max-pending-minute ke metadata pod untuk menyesuaikan durasi Pending maksimum instans ECI terkait.

  • Nilainya harus berupa bilangan bulat antara 10 hingga 1.440 menit (1 hari).

    Penting

    Tetapkan durasi Pending maksimum yang wajar sesuai kebutuhan bisnis Anda. Jika ukuran image besar dan tidak tersedia cache gambar, proses pull image dapat memakan waktu cukup lama. Jika durasi Pending maksimum terlalu singkat, pod mungkin dihentikan sebelum proses pull image selesai.

  • Jika anotasi ini tidak ditambahkan, durasi Pending maksimum default adalah 4 jam.

  • Anotasi ini tidak berlaku untuk pod ECI yang memiliki init container yang sedang berjalan.

Setelah durasi Pending maksimum terlampaui, sistem melaporkan event terkait. Status instans ECI berubah menjadi Failed, dan status pod (PodStatus.Phase) ditentukan oleh restartPolicy.

  • Jika restartPolicy diatur ke Always atau OnFailure, PodStatus.Phase adalah Pending.

  • Jika restartPolicy diatur ke Never, PodStatus.Phase adalah Failed.

Contoh konfigurasi

  1. Buat pod ECI dengan durasi Pending maksimum yang ditentukan.

    kubectl create -f pending-test.yaml

    File pending-test.yaml berikut mensimulasikan pod yang terjebak dalam status Pending karena kegagalan pull image.

    apiVersion: v1
    kind: Pod
    metadata:
      name: pending-test
      labels:
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-max-pending-minute: "10"    # Tetapkan durasi Pending maksimum menjadi 10 menit.
    spec:
      containers:
      - image: test****-registry.example.com/eci_test/nginx:1.0  # Gunakan image privat untuk mensimulasikan kegagalan pull image. Ganti image ini dengan image aktual Anda.
        name: test-container
      restartPolicy: Never  # Tetapkan kebijakan restart ke Never.
  2. Periksa status pod ECI.

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

    Contoh output:

    :~$ 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. Tunggu hingga durasi Pending maksimum yang ditentukan berakhir, lalu periksa status dan event pod ECI.

    • Karena restartPolicy diatur ke Never, pod memasuki status Failed setelah timeout.

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

      Contoh output:

      :~$ 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
    • Periksa event pod.

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

      Contoh output:

      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.
    Catatan

    Anda juga dapat menggunakan Konsol Elastic Container Instance untuk memeriksa apakah instans ECI berada dalam status Failed. Di halaman detail instans, buka tab Events untuk melihat event.