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:
Tentukan prioritas task: Tambahkan parameter
priorityClassNameke 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.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.
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.
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.
|
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.
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.