ACK memperluas penjadwalan Kubernetes dengan kebijakan penjadwalan pekerjaan (job), penjadwalan berbasis topologi, penjadwalan berbasis QoS, dan descheduling.
Sebelum memulai
-
Pilih kebijakan penjadwalan berdasarkan peran dan skenario bisnis Anda:
-
Insinyur O&M berfokus pada biaya kluster dan pemanfaatan sumber daya secara maksimal, memastikan ketersediaan tinggi kluster, menyeimbangkan beban node, serta menghindari titik kegagalan tunggal (SPOF).
-
Pengembang aplikasi membutuhkan penerapan dan manajemen aplikasi yang sederhana serta sumber daya yang memadai—seperti CPU, GPU, dan memori—untuk mendukung kinerja aplikasi.
-
-
Untuk menggunakan kebijakan penjadwalan ACK secara efektif, pelajari Kubernetes Scheduler, Node labels, Node-pressure Eviction, dan Pod topology spread constraints.
ACK scheduler menggunakan kebijakan default yang sama dengan penjadwal Kubernetes open source, yang terdiri dari plugin Filter dan Score.
Kebijakan penjadwalan native Kubernetes
Kebijakan penjadwalan native Kubernetes terbagi menjadi dua kategori: penjadwalan node dan penjadwalan antar-pod.
-
Kebijakan penjadwalan node: menjadwalkan pod ke node yang sesuai dengan karakteristik dan kondisi sumber daya tertentu.
-
Kebijakan penjadwalan antar-pod: mengontrol distribusi pod untuk mengoptimalkan penerapan dan memastikan ketersediaan tinggi aplikasi.
|
Kebijakan |
Deskripsi |
Skenario |
|
Beri label node dengan pasangan kunci-nilai, lalu gunakan nodeSelector untuk menjadwalkan pod ke node yang sesuai. Contohnya, jadwalkan pod ke node tertentu atau jadwalkan pod ke kelompok node tertentu. |
Metode pemilihan node dasar yang tidak mendukung fitur penjadwalan lebih kompleks, seperti aturan penjadwalan soft. |
|
|
Lebih fleksibel dan detail halus daripada nodeSelector. Misalnya, aturan penjadwalan ketat |
Jadwalkan pod ke node dengan karakteristik tertentu, seperti wilayah, tipe perangkat, dan perangkat keras. Aturan anti-afinitas menyebarkan pod di berbagai node. |
|
|
Taint terdiri atas kunci, nilai, dan efek (efek umum: |
|
|
|
Label pod menentukan penjadwalan pod ke node. Mendukung aturan afinitas |
|
Kebijakan penjadwalan ACK
ACK memperluas penjadwalan Kubernetes untuk kebutuhan seperti scale-out terurut dengan scale-in terbalik dan penjadwalan berbasis beban berdasarkan penggunaan sumber daya node aktual.
Konfigurasikan penjadwalan sumber daya berbasis prioritas
-
Peran yang dituju: Insinyur O&M kluster.
-
Deskripsi: Untuk kluster dengan tipe instans campuran—seperti Instance ECS dan instance kontainer elastis—serta metode penagihan seperti subscription, pay-as-you-go, dan instans preemptible, konfigurasikan penjadwalan sumber daya berbasis prioritas untuk menentukan urutan pemilihan node saat penjadwalan pod dan membalikkannya saat scale-in.
|
Kebijakan |
Deskripsi |
Skenario |
Referensi |
|
Penjadwalan sumber daya berbasis prioritas kustom |
Tentukan nilai Scale-in membalik urutan ini: instance kontainer elastis terlebih dahulu, lalu Instance ECS pay-as-you-go, kemudian Instance ECS subscription. |
|
Penjadwalan pekerjaan
-
Peran yang dituju: Insinyur O&M kluster.
-
Deskripsi: Penjadwal default tidak cocok untuk penjadwalan pekerjaan batch. ACK mendukung gang scheduling dan capacity scheduling untuk pekerjaan batch.
|
Kebijakan |
Deskripsi |
Skenario |
Referensi |
|
Gang Scheduling |
Semua pod terkait dijadwalkan bersama atau tidak sama sekali, mencegah proses abnormal menghambat grup. |
|
|
|
Capacity Scheduling |
Reservasi sumber daya untuk namespace atau kelompok pengguna tertentu, serta tingkatkan pemanfaatan melalui berbagi sumber daya saat sumber daya kluster terbatas. |
Pada kluster multi-tenant, siklus hidup dan pola penggunaan sumber daya yang bervariasi menyebabkan pemanfaatan rendah. Berbagi dan mereklaim sumber daya meningkatkan pemanfaatan keseluruhan. |
Penjadwalan sadar topologi
-
Peran yang dituju: Insinyur O&M kluster.
-
Deskripsi: Workload pembelajaran mesin dan data besar memerlukan komunikasi intensif antar-pod, tetapi penjadwal default mendistribusikan pod secara merata di seluruh kluster, sehingga memperpanjang waktu penyelesaian pekerjaan. Mekanisme afinitas native tidak dapat mencoba ulang di berbagai domain topologi.
|
Deskripsi |
Skenario |
Referensi |
|
Penjadwal menggunakan label gang scheduling untuk memastikan semua permintaan sumber daya pod terpenuhi secara bersamaan. Penjadwalan berbasis topologi melakukan iterasi melalui domain topologi untuk menemukan satu domain yang memenuhi semua persyaratan pod. Asosiasikan kelompok node dengan deployment sets untuk menjadwalkan pod ke Instance ECS dalam deployment set berlatensi rendah yang sama guna meningkatkan kinerja pekerjaan. |
Pada pekerjaan pembelajaran mesin atau data besar, pod memerlukan komunikasi sering. Penjadwal melakukan iterasi melalui domain topologi untuk menemukan satu domain yang memenuhi semua persyaratan pod, sehingga mengurangi waktu penyelesaian pekerjaan. |
Penjadwalan berbasis beban
-
Peran yang dituju: Insinyur O&M kluster dan pengembang aplikasi.
-
Deskripsi: Penjadwal native menetapkan pod berdasarkan alokasi sumber daya, bukan penggunaan aktual. Karena beban node berubah secara dinamis seiring trafik dan workload, penjadwal native tidak dapat mendeteksi beban sumber daya secara real-time.
|
Deskripsi |
Skenario |
Referensi |
|
Penjadwal ACK memantau riwayat beban node dan memperkirakan penggunaan sumber daya pod baru untuk menjadwalkan pod ke node dengan beban lebih rendah, mencegah crash akibat node kelebihan beban. |
Aplikasi yang sensitif terhadap beban, latensi akses, atau QoS sumber daya. |
Gunakan load-aware hotspot descheduling untuk mencegah ketidakseimbangan beban node.
Penjadwalan berbasis QoS
-
Peran yang dituju: Insinyur O&M kluster dan pengembang aplikasi.
-
Deskripsi: Kelas QoS Kubernetes (Guaranteed, Burstable, BestEffort) menentukan prioritas eviksi pod saat sumber daya node tidak mencukupi. ACK menambahkan penjadwalan berbasis SLO untuk meningkatkan kinerja aplikasi sensitif latensi sekaligus memastikan akses sumber daya bagi pekerjaan prioritas lebih rendah.
|
Kebijakan |
Deskripsi |
Skenario |
Referensi |
|
CPU Burst |
Sistem operasi dapat melakukan throttle penggunaan CPU kontainer dalam satu siklus (CPU throttling). CPU Burst memungkinkan kontainer menganggur mengakumulasi time slice CPU dan melebihi batas CPU selama lonjakan permintaan, sehingga meningkatkan kinerja dan mengurangi latensi. |
|
|
|
Penjadwalan CPU berbasis topologi |
Patok pod sensitif CPU ke core CPU tertentu untuk menghindari degradasi kinerja akibat context switching sering dan akses memori lintas-NUMA. |
|
|
|
Penjadwalan GPU berbasis topologi |
Saat beberapa pod intensif GPU berjalan bersamaan, mereka dapat bersaing untuk sumber daya GPU dan berganti-ganti antar GPU atau node NUMA, sehingga menurunkan kinerja. Penjadwalan GPU berbasis topologi menetapkan workload ke GPU tertentu, mengurangi akses memori lintas-NUMA dan meningkatkan kinerja. |
|
|
|
Overcommitment sumber daya dinamis |
Reklaim sumber daya yang dialokasikan tetapi tidak digunakan oleh pod dan jadwalkan ke pekerjaan prioritas rendah untuk overcommitment. Gunakan kebijakan QoS single-node berikut secara bersamaan untuk mencegah aplikasi saling memengaruhi:
|
Tingkatkan pemanfaatan sumber daya kluster melalui colocation. Skenario khas meliputi pelatihan dan inferensi model ML, pemrosesan batch dan analisis data besar, layanan online, serta backup offline. |
|
|
Ubah parameter sumber daya pod secara dinamis |
Pada Kubernetes 1.27 atau lebih awal, mengubah parameter kontainer memerlukan penghapusan dan pembuatan ulang pod. ACK memungkinkan Anda mengubah batas CPU, memori, dan IOPS disk tanpa me-restart pod. |
Penyesuaian sementara sumber daya CPU atau memori. |
Descheduling
-
Peran yang dituju: Insinyur O&M kluster dan pengembang aplikasi.
-
Deskripsi: Seiring perubahan kondisi kluster, pod yang sedang berjalan mungkin perlu dimigrasi ke node yang lebih sesuai.
|
Kebijakan |
Deskripsi |
Skenario |
Referensi |
|
Descheduling |
Jadwalkan ulang pod yang salah tempat ke node optimal saat hotspot terbentuk akibat penggunaan sumber daya tidak merata atau perubahan atribut node, memastikan ketersediaan tinggi dan efisiensi workload. |
|
|
|
Bekerja dengan load-aware hotspot descheduling |
Kombinasikan penjadwalan berbasis beban dan descheduling hotspot untuk memantau beban node dan secara otomatis menyeimbangkan ulang node yang melebihi ambang batas beban. |
Penagihan
Penjadwalan ACK dikenai biaya untuk manajemen kluster dan sumber daya cloud berdasarkan aturan penagihan. Biaya tambahan komponen penjadwalan:
-
Penjadwal ACK default (kube-scheduler) gratis untuk diinstal dan digunakan.
-
Penjadwalan dan descheduling sumber daya ACK berbasis ack-koordinator. ack-koordinator gratis untuk diinstal dan digunakan, tetapi dapat dikenai biaya tambahan dalam skenario tertentu. Lihat ack-koordinator (FKA ack-slo-manager).
FAQ
Untuk masalah penjadwalan, lihat Scheduling FAQ.
Referensi
-
Untuk pengenalan dan catatan rilis kube-scheduler dan ack-koordinator, lihat Container Service for Kubernetes:kube-scheduler dan ack-koordinator (FKA ack-slo-manager).
-
Untuk menyesuaikan perilaku kube-scheduler, lihat Sesuaikan parameter penjadwal.
-
Untuk praktik terbaik penjadwalan, seperti arsitektur colocation, lihat Praktik terbaik untuk penjadwalan sumber daya.
-
Aktifkan cost insights untuk melihat penggunaan sumber daya, alokasi biaya, dan rekomendasi penghematan untuk kluster ACK.
-
Untuk penjadwalan GPU dan isolasi memori, lihat GPU sharing.
-
Untuk penjadwalan node virtual, lihat Jadwalkan pod ke node virtual.