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.
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).
PentingTetapkan 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
restartPolicydiatur keAlwaysatauOnFailure,PodStatus.PhaseadalahPending. -
Jika
restartPolicydiatur keNever,PodStatus.PhaseadalahFailed.
Contoh konfigurasi
-
Buat pod ECI dengan durasi Pending maksimum yang ditentukan.
kubectl create -f pending-test.yamlFile 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. -
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 -
Tunggu hingga durasi Pending maksimum yang ditentukan berakhir, lalu periksa status dan event pod ECI.
-
Karena
restartPolicydiatur keNever, pod memasuki statusFailedsetelah 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.
CatatanAnda 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.
-