全部产品
Search
文档中心

Container Service for Kubernetes:Aktifkan preemption

更新时间:Dec 17, 2025

Ketika sumber daya dalam kluster tidak mencukupi, task berprioritas tinggi mungkin gagal dijalankan. Setelah Anda mengaktifkan preemption, ACK Scheduler dapat menentukan dan menghentikan Pod berprioritas rendah melalui simulasi sumber daya, sehingga melepaskan sumber daya komputasi untuk menjalankan Pod berprioritas tinggi.

Kebijakan preempsi

Daftar berikut menjelaskan prosedur preemption:

  1. Tentukan prioritas task: Tambahkan parameter priorityClassName ke konfigurasi Pod untuk mendeklarasikan prioritas Pod tersebut.

    Komponen sistem (seperti kube-proxy dan etcd) biasanya dikaitkan dengan PriorityClass system-node-critical, yang memberikan prioritas tinggi. Sebagian besar komponen sistem dideploy sebagai DaemonSet, yang secara default tidak dihentikan.
  2. Simulasikan preemption saat sumber daya tidak mencukupi: Saat mendeteksi task pending yang gagal dijadwalkan karena kekurangan sumber daya, ACK Scheduler mensimulasikan apakah beberapa task berprioritas rendah dapat dihentikan untuk melepaskan sumber daya yang cukup bagi task berprioritas tinggi.

  3. Hentikan task berprioritas rendah secara aman: Setelah ACK Scheduler memicu logika preemption, kubelet menghentikan Pod berprioritas rendah dari node secara aman sesuai instruksi sistem, sehingga melepaskan sumber daya yang cukup untuk menyelesaikan penjadwalan task berprioritas tinggi.

  4. Jadwalkan ulang task berprioritas rendah: Pod berprioritas rendah yang dihentikan akan dibuat ulang oleh controller-nya, seperti Deployment, dan dijadwalkan ke node lain. Jika sumber daya dalam kluster masih tidak mencukupi, Pod tersebut tetap dalam status pending.

ACK Scheduler mendukung kebijakan preemption berikut secara default. Anda dapat mengelola dan mengonfigurasinya menggunakan parameter PreemptionAlgorithm.

Kebijakan

Deskripsi

Default

Kebijakan preemption default Kubernetes. Saat kebijakan ini digunakan, ACK Scheduler pertama-tama mencoba penjadwalan langsung. Ketika sumber daya tidak mencukupi, ACK Scheduler mensimulasikan preemption sumber daya untuk menentukan Pod berprioritas rendah yang harus dihentikan agar melepaskan sumber daya yang cukup untuk menjadwalkan Pod berprioritas tinggi. Untuk informasi lebih lanjut, lihat Pod priority and preemption.

ElasticQuota

Menjalankan preemption berdasarkan ElasticQuotaTree.

  1. Identifikasi daftar preemption: Berbeda dengan task biasa, ACK Scheduler menggabungkan semua Pod pending seluruh gang ke dalam daftar preemption. Seluruh gang hanya diproses jika semua Pod dalam daftar tersebut dapat dijadwalkan melalui preemption sumber daya. Jika satu Pod tidak dapat dijadwalkan, gang tersebut tidak diproses. Jika salah satu Pod dalam gang memiliki prioritas tinggi, seluruh gang dianggap berprioritas tinggi untuk preemption sumber daya.

  2. Buat daftar node yang layak: ACK Scheduler lebih lanjut menentukan node mana yang akan dipilih berdasarkan aturan berikut:

    • Jika beberapa Pod dalam gang memerlukan preemption, node yang sesuai dengan salah satu Pod ditambahkan ke kumpulan kandidat. Kemudian, ACK Scheduler mencoba membebaskan sumber daya untuk Pod lainnya.

    • Jika hanya satu Pod yang memerlukan preemption, ACK Scheduler menyaring node yang telah ditandai sebagai Unschedulable untuk secara akurat menemukan node dengan sumber daya yang tidak mencukupi atau tidak sesuai.

  3. Simulasikan preemption: ACK Scheduler mencoba mensimulasikan preemption dengan menyaring Pod yang memenuhi syarat untuk dihentikan dari node dalam daftar node yang layak sebelumnya berdasarkan kondisi berikut:

    Kemudian, ACK Scheduler melanjutkan berdasarkan ElasticQuotaTree yang dikonfigurasi dalam kluster dalam berbagai skenario:

    • Pod yang melakukan preemption termasuk dalam Quota:

      • Jika penggunaan Quota ≤ jaminan Min-nya: Quota belum memenuhi jaminan sumber daya minimumnya. Pod tersebut diizinkan untuk melakukan preemption terhadap Pod dari Quota lain yang saat ini menggunakan sumber daya di atas jaminan Min-nya.

      • Jika penggunaan Quota > jaminan Min-nya: Pod tersebut hanya diizinkan untuk melakukan preemption terhadap Pod berprioritas lebih rendah dalam Quota-nya sendiri (ini dikenal sebagai preemption intra-quota).

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

    Setelah menyaring Pod yang akan dihentikan, ACK Scheduler mensimulasikan penghapusan Pod tersebut dan penjadwalan Pod yang melakukan preemption. Jika hasil simulasi menunjukkan penjadwalan berhasil, Pod yang dihentikan akan diamankan dan dijadwalkan ulang ke node lain. Jika hasil simulasi menunjukkan penjadwalan gagal, preemption dihentikan.

Auto

Menyesuaikan kebijakan preemption berdasarkan konfigurasi kluster. Secara sederhana, ACK Scheduler memprioritaskan kebijakan ElasticQuota dan secara otomatis beralih ke kebijakan Default ketika kebijakan ElasticQuota tidak berlaku.

None

Menonaktifkan kemampuan preemption. Dalam hal ini, tidak ada perilaku preemption yang terjadi di kluster.

Saat kemampuan preemption diaktifkan, kebijakan preemption berlaku sesuai logika yang dijelaskan dalam gambar berikut.

image

Aktifkan preemption

Sebelum mengaktifkan preemption, kami menyarankan Anda membaca Pod priority and preemption untuk memahami istilah terkait.

Anda dapat menyesuaikan parameter scheduler dengan mengonfigurasi parameter preemptionAlgorithm untuk mengaktifkan preemption. Kebijakan preemption default adalah Auto.