全部产品
Search
文档中心

Elastic Container Instance:Tentukan durasi pending maksimum untuk pod berbasis Elastic Container Instance

更新时间:Jun 29, 2025

Anda akan dikenakan biaya untuk pod berbasis Elastic Container Instance (pod) yang berada dalam status Pending. Jika Anda tidak menangani pod abnormal yang tetap berada dalam status Pending untuk jangka waktu lama, Anda mungkin dikenakan biaya tambahan yang tidak perlu. Secara default, durasi pending maksimum untuk sebuah pod adalah 4 jam. Anda dapat menentukan durasi pending maksimum sesuai dengan kebutuhan bisnis Anda. Sistem secara otomatis menghentikan pod setelah melewati batas waktu, membantu Anda mencegah masalah yang disebabkan oleh kegagalan menangani pod abnormal secara tepat waktu.

Deskripsi fitur

Setiap instance kontainer elastis setara dengan satu pod. Saat Anda membuat pod, Anda akan dikenakan biaya untuk pod tersebut setelah memasuki status Pending dari status Penjadwalan. Selama fase Pending, jika terjadi kesalahan seperti image gagal ditarik atau volume gagal dipasang, pod tetap berada dalam status Pending dan terus ditagih. Anda harus menyelesaikan masalah tersebut secara tepat waktu untuk menghindari biaya tambahan yang tidak perlu. Secara default, sistem secara otomatis menghentikan pod yang tetap berada dalam status Pending selama lebih dari 4 jam dan menghentikan penagihan untuk pod tersebut. Anda dapat menentukan durasi pending maksimum untuk pod.

Penting

Saat instance kontainer elastis berada dalam status Penjadwalan, Pending, atau Restarting, status pod yang ditunjukkan oleh parameter PodStatus.Phase adalah Pending. Namun, durasi pending maksimum yang dapat Anda tentukan hanya merujuk pada durasi saat instance kontainer elastis berada dalam status Pending, tidak termasuk durasi saat instance berada dalam status Penjadwalan dan Restarting. Untuk informasi lebih lanjut, lihat Siklus Hidup Pod.

Deskripsi konfigurasi

Anda dapat menambahkan anotasi k8s.aliyun.com/eci-max-pending-minute ke metadata dalam file konfigurasi pod untuk menentukan durasi pending maksimum pod. Perhatikan batasan berikut untuk anotasi:

  • Nilai anotasi k8s.aliyun.com/eci-max-pending-minute harus berupa bilangan bulat dari 10 hingga 1.440. Satuan: menit. 1.440 menit sama dengan 24 jam.

    Penting

    Tentukan durasi pending maksimum berdasarkan kebutuhan bisnis Anda. Saat Anda membuat pod, waktu yang lebih lama diperlukan untuk menarik image jika image besar dan tidak ada cache image yang tersedia. Dalam hal ini, jika durasi pending maksimum yang Anda tentukan terlalu pendek, pod mungkin gagal dibuat.

  • Jika Anda tidak menambahkan anotasi ke metadata pod, durasi pending maksimum default adalah 4 jam.

  • Jika Anda mengonfigurasi init container untuk pod dan init container sedang berjalan, anotasi tidak berlaku untuk pod tersebut.

Setelah durasi pending maksimum berakhir, sistem melaporkan event yang sesuai. Dalam hal ini, status instance kontainer elastis berubah menjadi Failed, dan status pod yang ditunjukkan oleh parameter PodStatus.Phase ditentukan berdasarkan nilai parameter restartPolicy.

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

  • Jika parameter restartPolicy diatur ke Never, nilai parameter PodStatus.Phase adalah Pending.

Contoh konfigurasi

  1. Buat pod dengan durasi pending maksimum yang dikonfigurasi.

    kubectl create -f pending-test.yaml

    Kode sampel berikut memberikan contoh isi file pending-test.yaml, yang digunakan untuk mensimulasikan pod dalam status Pending karena kegagalan penarikan image.

    apiVersion: v1
    kind: Pod
    metadata:
      name: pending-test
      labels:
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-max-pending-minute: "10"    # Mengatur durasi pending maksimum menjadi 10 menit.
    spec:
      containers:
      - image: test****-registry.example.com/eci_test/nginx:1.0  # Menentukan image pribadi yang ingin Anda tarik. Ganti image dengan image sebenarnya.
        name: test-container
      restartPolicy: Never  # Mengatur kebijakan restart kontainer menjadi Never, yang menentukan bahwa kontainer tidak akan dimulai ulang secara otomatis.
  2. Periksa status pod.

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

    Contoh keluaran perintah:

    pending时长1.png

  3. Tunggu selama 10 menit. Setelah durasi pending maksimum berakhir, periksa status dan informasi event pod.

    • Parameter restartPolicy diatur ke Never. Dalam hal ini, pod memasuki status Failed setelah durasi pending maksimum berakhir.

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

      Contoh keluaran perintah:

      pending时长2.png

    • Lihat informasi event pod.

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

      Contoh keluaran perintah:

      pending时长3.png

    Catatan

    Anda juga dapat memeriksa apakah pod berada dalam status Failed di Konsol Elastic Container Instance dan melihat informasi event di tab Events pada halaman detail instance.