All Products
Search
Document Center

Container Service for Kubernetes:Aktifkan preemption

Last Updated:Aug 21, 2026

Saat sumber daya kluster terbatas, task berprioritas tinggi mungkin gagal dijalankan karena sumber daya tidak mencukupi. Setelah preemption diaktifkan, ACK Scheduler mensimulasikan ketersediaan sumber daya dan menghentikan tugas Pod berprioritas rendah untuk membebaskan sumber daya komputasi sehingga task berprioritas tinggi dapat segera dimulai.

Sebelum Anda mulai

Baca Pod priority and preemption untuk memahami PriorityClass, priorityClassName, dan cara prioritas Pod memengaruhi urutan penjadwalan serta penghentian tugas.

Cara kerja preemption

Saat preemption diaktifkan, ACK Scheduler mengikuti prosedur berikut:

  1. Tentukan prioritas task: Tambahkan priorityClassName ke konfigurasi Pod.

    Komponen sistem seperti kube-proxy dan etcd biasanya menggunakan PriorityClass system-node-critical. Sebagian besar dijalankan sebagai DaemonSet dan secara default tidak dihentikan tugasnya.
  2. Simulasikan preemption: Saat ACK Scheduler mendeteksi Pod yang tertunda dan tidak dapat dijadwalkan, ia mensimulasikan apakah menghentikan tugas Pod berprioritas rendah akan membebaskan sumber daya yang cukup.

  3. Hentikan tugas Pod berprioritas rendah secara aman: Setelah ACK Scheduler memicu preemption, kubelet menghentikan tugas Pod yang telah diidentifikasi, sehingga melepaskan sumber daya untuk Pod berprioritas tinggi.

  4. Jadwalkan ulang Pod yang dihentikan tugasnya: Controller seperti Deployment membuat ulang Pod yang dihentikan tugasnya dan menjadwalkannya ke node lain. Jika sumber daya tetap tidak mencukupi, Pod tersebut tetap dalam status tertunda.

Kebijakan preemption

ACK Scheduler mendukung kebijakan preemption berikut, yang dapat dikonfigurasi menggunakan parameter PreemptionAlgorithm.

Kebijakan

Deskripsi

Default

Kebijakan preemption Kubernetes default. Mencoba penjadwalan langsung terlebih dahulu, lalu mensimulasikan penghentian tugas Pod berprioritas rendah saat sumber daya tidak mencukupi. Lihat Pod priority and preemption.

ElasticQuota

Menjalankan preemption berdasarkan ElasticQuotaTree. Lihat Detail kebijakan ElasticQuota.

Auto

Memprioritaskan ElasticQuota dan menggunakan kembali kebijakan Default jika ElasticQuota tidak berlaku.

None

Menonaktifkan preemption.

Gambar berikut menunjukkan cara kebijakan tersebut diterapkan.

image

Detail kebijakan ElasticQuota

Saat kebijakan ElasticQuota aktif, ACK Scheduler menjalankan preemption dalam tiga langkah:

  1. Identifikasi daftar preemption: Berbeda dengan task biasa, ACK Scheduler menggabungkan semua Pod yang tertunda dalam satu gang menjadi satu daftar preemption. Gang hanya diproses jika semua Pod-nya dapat dijadwalkan melalui preemption. Jika salah satu Pod memiliki prioritas tinggi, seluruh gang dianggap berprioritas tinggi.

  2. Identifikasi node yang layak: ACK Scheduler menentukan node kandidat:

    • Jika beberapa Pod dalam gang memerlukan preemption, setiap node yang cocok dengan satu Pod ditambahkan ke kumpulan kandidat. ACK Scheduler kemudian membebaskan sumber daya untuk Pod sisanya.

    • Jika hanya satu Pod yang memerlukan preemption, ACK Scheduler menyaring node Unschedulable untuk mengidentifikasi node dengan sumber daya yang tidak mencukupi atau tidak sesuai.

  3. Simulasikan preemption: ACK Scheduler menyaring Pod yang memenuhi syarat preemption dari node yang layak. Sebuah Pod memenuhi syarat jika kedua kondisi berikut terpenuhi:

    • Pod tersebut tidak sedang di-preempt oleh Pod atau task lain.

    • Pod tersebut dapat dihentikan tugasnya sesuai dengan PodDisruptionBudgets (PDBs) yang relevan.

    ACK Scheduler kemudian menerapkan aturan ElasticQuotaTree:

    • Jika Pod yang melakukan preemption termasuk dalam suatu Quota:

      • Jika penggunaan Quota saat ini berada pada atau di bawah jaminan Min-nya: Pod tersebut dapat melakukan preemption terhadap Pod dari Quota lain yang menggunakan sumber daya di atas jaminan Min-nya.

      • Jika penggunaan Quota saat ini melebihi jaminan Min-nya: Pod tersebut hanya dapat melakukan preemption terhadap Pod berprioritas lebih rendah dalam Quota-nya sendiri (preemption intra-quota).

    • Jika Pod yang melakukan preemption tidak termasuk dalam Quota mana pun: Preemption tidak diizinkan.

    Setelah mengidentifikasi Pod yang akan di-preempt, ACK Scheduler mensimulasikan penghapusannya dan menjadwalkan ulang Pod yang melakukan preemption. Jika simulasi berhasil, Pod tersebut dihentikan tugasnya dan dijadwalkan ulang. Jika gagal, preemption dihentikan.

Aktifkan preemption

Sesuaikan parameter scheduler dan atur preemptionAlgorithm ke Default, ElasticQuota, Auto, atau None. Nilai default-nya adalah Auto.

Langkah selanjutnya