Komponen ack-koordinator menyediakan fitur penjadwalan ulang hot spot berbasis beban yang mendeteksi perubahan beban node dalam kluster dan secara otomatis menjadwalkan ulang pod dari node yang melebihi ambang batas beban aman guna mencegah ketidakseimbangan beban yang parah. Topik ini menjelaskan cara menggunakan penjadwalan ulang hot spot berbasis beban beserta parameter konfigurasi lanjutannya.
Batasan
Hanya kluster Pro yang dikelola ACK yang didukung.
Komponen terkait harus memenuhi persyaratan versi berikut.
Component
Version requirements
ACK Scheduler
v1.22.15-ack-4.0 atau yang lebih baru, v1.24.6-ack-4.0 atau yang lebih baru
ack-koordinator
v1.1.1-ack.1 atau yang lebih baru
Helm
v3.0 atau yang lebih baru
K8s Spot Rescheduler hanya mengusir (evict) pod. Pod tersebut kemudian dijadwalkan ulang oleh ACK Scheduler. Kami menyarankan Anda menggunakan fitur penjadwalan ulang bersamaan dengan penjadwalan berbasis beban agar ACK Scheduler dapat menghindari penjadwalan ulang pod ke node hot spot.
Saat penjadwalan ulang, pod lama diusir sebelum pod baru dibuat. Pastikan aplikasi Anda memiliki cukup replika redundan agar pengusiran tidak memengaruhi ketersediaan aplikasi.
Penjadwalan ulang menggunakan API pengusiran standar Kubernetes eviction API untuk mengusir pod. Pastikan logika pod aplikasi Anda bersifat re-entrant sehingga layanan Anda tidak terganggu oleh restart setelah pengusiran.
Penagihan
Komponen ack-koordinator dapat diinstal dan digunakan secara gratis. Namun, biaya tambahan mungkin dikenakan dalam skenario berikut:
ack-koordinator adalah komponen yang dikelola sendiri dan mengonsumsi sumber daya node pekerja setelah instalasi. Anda dapat mengonfigurasi permintaan sumber daya untuk setiap modul saat menginstal komponen.
Secara default, ack-koordinator mengekspos metrik pemantauan untuk fitur seperti profiling sumber daya dan penjadwalan detail halus dalam format Prometheus. Jika Anda memilih opsi Enable Prometheus Monitoring for ACK-Koordinator saat mengonfigurasi komponen dan menggunakan layanan Alibaba Cloud Prometheus, metrik ini dianggap sebagai custom metrics dan dikenai biaya. Biaya tergantung pada faktor seperti ukuran kluster dan jumlah aplikasi. Sebelum mengaktifkan fitur ini, baca dengan cermat dokumentasi Billing of Prometheus instances untuk Alibaba Cloud Prometheus guna memahami kuota gratis dan kebijakan penagihan untuk custom metrics. Anda dapat memantau dan mengelola penggunaan sumber daya dengan querying usage data.
Pengantar penjadwalan ulang hot spot berbasis beban
Penjadwalan berbasis beban
Penjadwal ACK mendukung penjadwalan berbasis beban yang dapat menjadwalkan pod ke node dengan beban rendah. Karena lingkungan kluster, lalu lintas, dan permintaan terus berubah, pemanfaatan node juga berubah secara dinamis. Hal ini dapat mengganggu keseimbangan beban antar node dalam kluster bahkan menyebabkan ketidakseimbangan beban yang parah, yang berdampak pada kualitas waktu proses workload. Komponen ack-koordinator dapat mengidentifikasi perubahan beban node dan secara otomatis menjadwalkan ulang pod dari node yang melebihi ambang batas beban aman untuk mencegah ketidakseimbangan beban yang parah. Anda dapat menggabungkan penjadwalan berbasis beban dengan penjadwalan ulang hot spot guna mencapai keseimbangan beban optimal di antara node. Untuk informasi selengkapnya, lihat Use load-aware pod scheduling.
Cara kerja modul Koordinator Descheduler
Komponen ack-koordinator menyediakan modul Koordinator Descheduler. Dalam modul ini, plugin LowNodeLoad mendeteksi tingkat beban dan melakukan penjadwalan ulang hot spot berbasis beban. Berbeda dengan plugin LowNodeUtilization dari descheduler Kubernetes native yang membuat keputusan berdasarkan tingkat alokasi sumber daya, plugin LowNodeLoad membuat keputusan penjadwalan ulang berdasarkan pemanfaatan sumber daya aktual node.
Prosedur eksekusi
Modul Koordinator Descheduler berjalan secara berkala. Setiap siklus eksekusi terdiri dari tiga tahap berikut.

Pengumpulan data: Mendapatkan informasi tentang node dan workload dalam kluster serta data pemanfaatan sumber daya terkaitnya.
Eksekusi plugin kebijakan.
Langkah-langkah berikut menggunakan plugin LowNodeLoad sebagai contoh.
Mengidentifikasi node hot spot. Untuk informasi lebih lanjut tentang klasifikasi node, lihat LowNodeLoad load threshold parameters.
Menelusuri semua node hot spot, mengidentifikasi pod yang dapat dimigrasikan, dan mengurutkan pod tersebut. Untuk informasi lebih lanjut tentang cara penilaian dan pengurutan pod, lihat Pod scoring policy.
Menelusuri semua pod yang akan dimigrasikan dan memeriksa apakah pod tersebut memenuhi persyaratan migrasi berdasarkan kendala seperti ukuran kluster, pemanfaatan sumber daya, dan rasio replika. Untuk informasi lebih lanjut, lihat Load-aware hot spot descheduling policies.
Jika sebuah pod memenuhi kondisi, pod tersebut diklasifikasikan sebagai replika yang akan dimigrasikan. Jika tidak, proses melanjutkan penelusuran pod dan node hot spot lainnya.
Pengusiran dan migrasi pod: Mengusir pod yang memenuhi persyaratan migrasi. Untuk informasi lebih lanjut, lihat API-initiated Eviction.
LowNodeLoad Load Threshold Parameters
Plugin LowNodeLoad memiliki dua parameter penting.
highThresholds: Ambang beban tinggi. Pod pada node yang bebannya lebih tinggi dari ambang ini akan dijadwalkan ulang, sedangkan pod pada node yang bebannya lebih rendah dari ambang ini tidak akan dijadwalkan ulang. Kami merekomendasikan Anda juga mengaktifkan fitur penjadwalan sadar beban penjadwal. Untuk informasi lebih lanjut, lihat Scheduling policies. Untuk informasi lebih lanjut tentang cara menggunakan fitur-fitur ini bersama-sama, lihat How do I use load-aware scheduling and load-based hot spot descheduling together?.lowThresholds: Ambang batas beban idle.
Jika tingkat beban semua node lebih tinggi dari lowThresholds, tingkat beban keseluruhan kluster dianggap tinggi. Dalam kasus ini, Koordinator Descheduler tidak akan melakukan penjadwalan ulang meskipun tingkat beban beberapa node lebih tinggi dari highThresholds.
Sebagai contoh, pada gambar berikut, lowThresholds diatur ke 45% dan highThresholds diatur ke 70%. Node diklasifikasikan berdasarkan kriteria berikut. Demikian pula, jika nilai lowThresholds dan highThresholds berubah, kriteria klasifikasi node juga berubah sesuai.
Secara default, data pemanfaatan sumber daya diperbarui setiap menit dengan granularitas berupa nilai rata-rata selama 5 menit terakhir.
Idle Node: Node dengan pemanfaatan sumber daya di bawah 45%.
Normal Node: Node dengan pemanfaatan sumber daya lebih besar atau sama dengan 45% dan kurang dari atau sama dengan 70%. Tingkat beban ini merupakan rentang yang diinginkan.
Hot Spot Node: Node dengan pemanfaatan sumber daya di atas 70%. Beberapa pod pada node hot spot diusir untuk menurunkan tingkat bebannya menjadi 70% atau kurang.
Kebijakan penjadwalan ulang hot spot berbasis beban
Policy Name | Description |
Hotspot check retry policy | Untuk memastikan akurasi deteksi hot spot dan menghindari migrasi aplikasi yang sering disebabkan oleh gangguan data pemantauan, Koordinator Descheduler mendukung konfigurasi ulang percobaan untuk pemeriksaan hot spot. Sebuah node diidentifikasi sebagai hot spot hanya jika melebihi ambang batas secara berturut-turut beberapa kali. |
Node sorting policy | Di antara node hot spot yang diidentifikasi, Koordinator Descheduler memulai penjadwalan ulang pada node secara menurun berdasarkan penggunaan sumber daya. Selama pengurutan node, penggunaan sumber daya memori dan CPU dibandingkan secara berurutan. Node dengan penggunaan sumber daya lebih tinggi diprioritaskan. |
Pod scoring policy | Untuk setiap node hot spot, Koordinator Descheduler memberi skor dan mengurutkan pod di atasnya, lalu memulai operasi pengusiran untuk memindahkannya ke node idle. Urutan perbandingan adalah sebagai berikut:
Catatan Jika Anda memiliki persyaratan untuk urutan pengusiran pod, konfigurasikan prioritas atau kelas QoS yang berbeda untuk pod Anda. |
Filter policy | Modul Koordinator Descheduler mendukung beberapa parameter filter untuk pod dan node guna memfasilitasi kontrol grayscale selama penggunaan.
|
Pre-check policy | Modul Koordinator Descheduler menyediakan fitur pemeriksaan awal sebelum migrasi pod untuk memastikan setiap migrasi seaman mungkin.
|
Migration throttling policy | Untuk memastikan ketersediaan tinggi aplikasi selama migrasi pod, Koordinator Descheduler menyediakan beberapa fitur untuk mengontrol migrasi pod. Anda dapat menentukan jumlah maksimum pod yang dapat dimigrasikan secara bersamaan per node, namespace, atau workload. Koordinator Descheduler juga memungkinkan Anda menentukan jendela waktu migrasi pod untuk mencegah pod yang termasuk dalam workload yang sama dimigrasikan terlalu sering. Koordinator Descheduler juga kompatibel dengan mekanisme PDB (Pod Disruption Budgets) Kubernetes open source, yang memungkinkan Anda mengonfigurasi kebijakan manajemen lebih detail halus untuk memastikan ketersediaan tinggi workload Anda. |
Observability policy | Anda dapat mengamati proses migrasi penjadwalan ulang melalui event dan melihat alasan spesifik serta status saat ini dari migrasi tersebut dalam detailnya. Berikut adalah contohnya. |
Langkah 1: Aktifkan penjadwalan ulang di ack-koordinator
Jika komponen ack-koordinator belum diinstal di kluster, instal komponen tersebut dan pilih Enable Descheduling For Ack-koordinator pada halaman konfigurasi komponen. Untuk informasi lebih lanjut, lihat Install the ack-koordinator component.
Jika komponen ack-koordinator sudah diinstal di kluster Anda, pada halaman konfigurasi komponen, pilih Enable Descheduling For Ack-koordinator. Untuk prosedurnya, lihat Modify the ack-koordinator component.
Langkah 2: Aktifkan plugin penjadwalan ulang hot spot berbasis beban
Buat file `koord-descheduler-config.yaml` menggunakan konten YAML berikut.
File `koord-descheduler-config.yaml` adalah objek ConfigMap yang digunakan untuk mengaktifkan plugin penjadwalan ulang LowNodeLoad.
Jalankan perintah berikut untuk menerapkan konfigurasi ke kluster.
kubectl apply -f koord-descheduler-config.yamlJalankan perintah berikut untuk me-restart modul Koordinator Descheduler.
Setelah Anda me-restart modul Koordinator Descheduler, Koordinator Descheduler menggunakan konfigurasi yang paling baru dimodifikasi.
kubectl -n kube-system scale deploy ack-koord-descheduler --replicas 0 deployment.apps/ack-koord-descheduler scaled kubectl -n kube-system scale deploy ack-koord-descheduler --replicas 1 deployment.apps/ack-koord-descheduler scaled
Langkah 3 (Opsional): Aktifkan plugin load balancing penjadwal
Untuk mengaktifkan Plugin penyeimbang beban penjadwal demi keseimbangan beban optimal antar node, lihat Langkah 1: Aktifkan penjadwalan sadar beban.
Langkah 4: Verifikasi fitur penjadwalan ulang
Contoh berikut menggunakan kluster yang memiliki tiga node, masing-masing dengan 104 core dan memori 396 GiB.
Buat file `stress-demo.yaml` menggunakan konten YAML berikut.
Buat pod uji stres.
kubectl create -f stress-demo.yaml deployment.apps/stress-demo createdAmati status pod hingga berjalan.
kubectl get pod -o wideOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES stress-demo-588f9646cf-s**** 1/1 Running 0 82s 10.XX.XX.53 cn-beijing.10.XX.XX.53 <none> <none>Output menunjukkan bahwa pod
stress-demo-588f9646cf-s****dijadwalkan ke nodecn-beijing.10.XX.XX.53.Tingkatkan tingkat beban node
cn-beijing.10.XX.XX.53lalu periksa beban setiap node.kubectl top nodeOutput yang diharapkan:
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% cn-beijing.10.XX.XX.215 17611m 17% 24358Mi 6% cn-beijing.10.XX.XX.53 63472m 63% 11969Mi 3%Output menunjukkan bahwa beban node
cn-beijing.10.XX.XX.53tinggi pada 63%, yang melebihi ambang batas hot spot yang dikonfigurasi sebesar 50%. Beban nodecn-beijing.10.XX.XX.215rendah pada 17%, yang berada di bawah ambang batas idle yang dikonfigurasi sebesar 20%.Aktifkan penjadwalan ulang hot spot berbasis beban. Untuk informasi selengkapnya, lihat Langkah 2: Mengaktifkan Plugin penjadwalan ulang hot spot berbasis beban.
Amati perubahan pod.
Tunggu descheduler memeriksa node hot spot dan melakukan pengusiran serta migrasi.
CatatanSecara default, sebuah node diidentifikasi sebagai hot spot jika melebihi ambang batas hot spot selama lima pemeriksaan berturut-turut, yang membutuhkan waktu 10 menit.
kubectl get pod -wOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES stress-demo-588f9646cf-s**** 1/1 Terminating 0 59s 10.XX.XX.53 cn-beijing.10.XX.XX.53 <none> <none> stress-demo-588f9646cf-7**** 1/1 ContainerCreating 0 10s 10.XX.XX.215 cn-beijing.10.XX.XX.215 <none> <none>Amati event.
kubectl get event | grep stress-demo-588f9646cf-s****Output yang diharapkan:
2m14s Normal Evicting podmigrationjob/00fe88bd-8d4c-428d-b2a8-d15bcdeb**** Pod "default/stress-demo-588f9646cf-s****" evicted from node "cn-beijing.10.XX.XX.53" by the reason "node is overutilized, cpu usage(68.53%)>threshold(50.00%)" 101s Normal EvictComplete podmigrationjob/00fe88bd-8d4c-428d-b2a8-d15bcdeb**** Pod "default/stress-demo-588f9646cf-s****" has been evicted 2m14s Normal Descheduled pod/stress-demo-588f9646cf-s**** Pod evicted from node "cn-beijing.10.XX.XX.53" by the reason "node is overutilized, cpu usage(68.53%)>threshold(50.00%)" 2m14s Normal Killing pod/stress-demo-588f9646cf-s**** Stopping container stressOutput yang diharapkan adalah catatan migrasi, yang menunjukkan bahwa hasilnya sesuai harapan. Pod pada node hot spot dijadwalkan ulang ke node lain.
Konfigurasi lanjutan
Parameter konfigurasi lanjutan modul Koordinator Descheduler
Semua konfigurasi parameter untuk Koordinator Descheduler disediakan dalam ConfigMap. Berikut ini menunjukkan format parameter konfigurasi lanjutan untuk penjadwalan ulang hot spot berbasis beban.
Konfigurasi sistem Koordinator Descheduler
Parameter | Type | Value | Description | Example |
dryRun | boolean |
| Saklar mode read-only. Jika diaktifkan, tidak ada migrasi pod yang dimulai. | false |
deschedulingInterval | time.Duration | >0s | Interval eksekusi penjadwalan ulang. Saat menggunakan fitur penjadwalan ulang hot spot berbasis beban, pastikan nilai parameter ini tidak lebih besar dari nilai parameter | 120s |
Konfigurasi kontrol pengusiran dan migrasi
Parameter | Type | Value | Description | Example |
maxMigratingPerNode | int64 | ≥0 (default: 2) | Jumlah maksimum pod yang dapat dalam status migrasi pada setiap node. 0 berarti tidak ada batas. | 2 |
maxMigratingPerNamespace | int64 | ≥0 (default: unlimited) | Jumlah maksimum pod yang dapat dalam status migrasi di setiap namespace. 0 berarti tidak ada batas. | 1 |
maxMigratingPerWorkload | intOrString | ≥0 (default: 10%) | Jumlah maksimum atau persentase pod yang dapat dalam status migrasi di setiap workload, seperti deployment. 0 berarti tidak ada batas. Jika workload hanya memiliki satu replika, workload tersebut tidak dijadwalkan ulang. | 1 atau 10% |
maxUnavailablePerWorkload | intOrString | ≥0 (default: 10%), dan kurang dari jumlah total replika untuk workload | Jumlah maksimum atau persentase replika yang tidak tersedia untuk setiap workload, seperti deployment. 0 berarti tidak ada batas. | 1 atau 10% |
evictLocalStoragePods | boolean |
| Menentukan apakah pod yang dikonfigurasi dengan HostPath atau EmptyDir diizinkan dijadwalkan ulang. Untuk alasan keamanan, ini dinonaktifkan secara default. | false |
objectLimiters.workload | A struct in the following data format: |
| Throttling untuk migrasi pod di tingkat workload.
| Ini menunjukkan bahwa maksimal satu replika dapat dimigrasikan untuk satu workload dalam 5 menit. |
Konfigurasi plugin LowNodeLoad
| Type | Value | Description | Example |
| map[string]float64 Catatan Mendukung dimensi CPU dan memori. Nilainya dalam persentase. | [0,100] | Ambang batas beban hotspot. Hanya Pod pada node yang melebihi ambang batas ini yang berpartisipasi dalam penjadwalan ulang. Pod pada node di bawah ambang batas ini tidak dijadwalkan ulang. Kami menyarankan Anda juga mengaktifkan fitur penjadwalan berbasis beban dari penjadwal. Untuk informasi selengkapnya, lihat Deskripsi Kebijakan. Untuk informasi tentang cara menggunakan kedua fitur ini dalam kombinasi, lihat Bagaimana cara menggunakan kombinasi penjadwalan berbasis beban dan penjadwalan ulang hotspot berbasis beban?. Jika tingkat beban semua node lebih tinggi dari | |
| map[string]float64 Catatan Mendukung dimensi CPU dan memori. Nilainya dalam persentase. | [0,100] | Ambang batas beban idle. Jika tingkat penggunaan semua node lebih tinggi dari | |
| int64 | >0 (default: 5) | Jumlah ulang percobaan untuk pemeriksaan hot spot. Sebuah node diidentifikasi sebagai hot spot hanya jika melebihi highThresholds selama beberapa siklus eksekusi berturut-turut. Penghitung direset setelah node hot spot diusir. | 5 |
| *metav1.Duration | Untuk informasi lebih lanjut tentang format Duration, lihat Duration. (Nilai default: 5m) | Durasi cache untuk pemeriksaan hot spot. Saat menggunakan fitur penjadwalan ulang hot spot berbasis beban, pastikan nilai parameter ini tidak kurang dari nilai |
|
|
| Namespace dalam kluster | Namespace yang dapat di-deschedule. Jika parameter ini dibiarkan kosong, semua Pod dapat di-deschedule. Kebijakan include dan exclude didukung. Kedua kebijakan ini saling eksklusif.
| |
| metav1.LabelSelector | Untuk informasi lebih lanjut tentang format LabelSelector, lihat Labels and Selectors | Memilih node target menggunakan LabelSelector. | Anda dapat mengonfigurasi parameter ini dengan dua cara: satu untuk menentukan satu kelompok node tunggal dan lainnya untuk menentukan beberapa kelompok node.
|
| Daftar yang terdiri dari objek PodSelector. Anda dapat mengonfigurasi beberapa kelompok pod. Format data PodSelector adalah sebagai berikut: | Untuk informasi lebih lanjut tentang format LabelSelector, lihat Labels and Selectors | Memilih pod yang diaktifkan penjadwalan ulangnya menggunakan LabelSelector. | |
FAQ
Apa yang harus saya lakukan jika pemanfaatan node mencapai ambang batas tetapi pod pada node tersebut tidak diusir?
Masalah ini dapat terjadi karena alasan berikut. Anda dapat merujuk ke solusi yang sesuai untuk mengatasi masalah tersebut.
Cause classification | Cause description | Solution |
Component configuration not in effect | The enabled scope is not specified. | Konfigurasi descheduler mencakup cakupan yang diaktifkan untuk pod dan node. Periksa apakah namespace dan node yang sesuai diaktifkan. |
Descheduler tidak direstart setelah konfigurasinya dimodifikasi. | Setelah Anda memodifikasi konfigurasi descheduler, Anda harus me-restart-nya agar modifikasi tersebut berlaku. Untuk informasi lebih lanjut tentang cara me-restart descheduler, lihat Step 2: Enable the load-based hot spot descheduling plug-in. | |
Improper component configuration | Interval eksekusi komponen descheduler lebih lama dari durasi cache plugin LowNodeLoad. Akibatnya, deteksi node hot spot menjadi tidak valid. | Nilai parameter |
Node status does not meet conditions | Rata-rata pemanfaatan node berada di bawah ambang batas untuk waktu yang lama. | Descheduler terus memantau pemanfaatan untuk periode tertentu dan menghitung rata-rata terhalus dari data pemantauan. Oleh karena itu, penjadwalan ulang hanya dipicu ketika pemanfaatan node terus-menerus melebihi ambang batas. Secara default, periode ini sekitar 10 menit. Namun, pemanfaatan yang dikembalikan oleh |
Insufficient remaining capacity in the cluster. | Sebelum mengusir pod, descheduler memeriksa node lain dalam kluster untuk memastikan kapasitas yang cukup untuk migrasi. Misalnya, jika pod yang memerlukan 8 core dan 16 GiB memori dipilih untuk diusir, tetapi kapasitas tersedia semua node lain dalam kluster berada di bawah nilai ini, descheduler tidak akan memigrasikan pod tersebut demi alasan keamanan. Dalam kasus ini, pertimbangkan untuk menambahkan node guna memastikan kapasitas kluster yang cukup. | |
Workload property constraints | Workload adalah edisi single-replica. | Untuk memastikan ketersediaan tinggi aplikasi single-replica, pod ini tidak dijadwalkan ulang secara default. Jika Anda mengevaluasi aplikasi single-replica tersebut dan ingin pod dijadwalkan ulang, tambahkan anotasi Catatan Konfigurasi anotasi ini tidak didukung di v1.3.0-ack1.6, v1.3.0-ack1.7, atau v1.3.0-ack1.8. Untuk meningkatkan komponen ke versi terbaru, lihat Install and manage the component. |
Pod menentukan HostPath atau EmptyDir. | Secara default, pod yang dikonfigurasi dengan `emptyDir` atau `hostPath` dikecualikan dari penjadwalan ulang untuk memastikan keamanan data. Jika Anda ingin menjadwalkan ulang pod ini, lihat pengaturan `evictLocalStoragePods`. Untuk informasi lebih lanjut, lihat Eviction and migration control configuration. | |
Jumlah replika yang tidak tersedia atau sedang dimigrasikan terlalu tinggi. | Ketika jumlah replika yang tidak tersedia atau sedang dimigrasikan dari workload, seperti deployment atau StatefulSet, melebihi batas yang dikonfigurasi (maxUnavailablePerWorkload atau maxMigratingPerWorkload), descheduler tidak memulai pengusiran. Misalnya, jika maxUnavailablePerWorkload dan maxMigratingPerWorkload diatur ke 20%, jumlah replika yang diinginkan untuk deployment adalah 10, dan dua pod sedang diusir atau dilepas, descheduler tidak akan mengusir pod lagi. Tunggu hingga pengusiran atau pelepasan pod selesai, atau tingkatkan nilai kedua konfigurasi ini. | |
Konfigurasi batasan jumlah replika salah. | Jika jumlah total replika workload kurang dari atau sama dengan nilai maxMigratingPerWorkload atau maxUnavailablePerWorkload, descheduler tidak menjadwalkan ulang workload tersebut demi alasan keamanan. Untuk mengatasi hal ini, kurangi nilai kedua konfigurasi ini atau ubah menjadi persentase. |
Mengapa descheduler sering restart?
Descheduler mungkin sering restart jika ConfigMap-nya tidak valid atau tidak ada. Untuk informasi lebih lanjut, lihat Advanced configuration. Periksa konten dan format ConfigMap, modifikasi ConfigMap, lalu restart descheduler. Untuk informasi lebih lanjut tentang cara me-restart descheduler, lihat Step 2: Enable the load-based hot spot descheduling plug-in.
Bagaimana cara menggunakan penjadwalan berbasis beban dan penjadwalan ulang hot spot berbasis beban secara bersamaan?
Setelah Anda mengaktifkan penjadwalan ulang hot spot berbasis beban, Pod pada node hot spot dievakuasi. Penjadwal ACK memilih node yang sesuai untuk Pod yang dibuat oleh controller lapisan atas, seperti Deployment. Untuk mencapai keseimbangan beban optimal, kami merekomendasikan Anda mengaktifkan penjadwalan sadar beban pada saat yang bersamaan. Untuk informasi lebih lanjut, lihat Gunakan penjadwalan sadar beban.
Kami merekomendasikan Anda untuk mengatur parameter loadAwareThreshold untuk penjadwalan berbasis beban ke nilai yang sama dengan parameter highThresholds dari K8s Spot Rescheduler. Untuk informasi selengkapnya, lihat Kebijakan Penjadwalan. Ketika beban node melebihi highThresholds, K8s Spot Rescheduler akan mengevakuasi pod pada node tersebut. Penjadwal kemudian menggunakan loadAwareThreshold untuk mencegah pod baru dijadwalkan ke node hot spot. Jika Anda tidak mengatur parameter ke nilai yang sama, pod yang dievakuasi mungkin akan dijadwalkan ulang ke node hot spot. Masalah ini lebih mungkin terjadi jika sebuah pod memiliki cakupan yang ditentukan untuk node yang dapat dijadwalkan, tetapi hanya sejumlah kecil node yang tersedia dan pemanfaatan sumber daya node-node tersebut serupa.
Apa algoritma pemanfaatan yang dirujuk oleh penjadwalan ulang?
Descheduler terus memantau penggunaan sumber daya untuk periode tertentu dan menghitung nilai rata-rata. Sebuah node dijadwalkan ulang hanya jika rata-rata penggunaan sumber dayanya tetap di atas ambang batas untuk periode tertentu, yaitu 10 menit secara default. Untuk memori, perhitungan penggunaan descheduler mengecualikan page cache karena sistem operasi dapat mereklaim sumber daya ini. Sebaliknya, nilai penggunaan yang dikembalikan oleh perintah kubectl top node mencakup page cache. Anda dapat menggunakan Managed Service for Prometheus untuk melihat penggunaan memori aktual.