Komponen ack-koordinator menyediakan modul descheduler bernama Koordinator Descheduler, yang dapat menjadwalkan ulang pod sesuai dengan aturan eviksi dari satu node ke node lain. Koordinator Descheduler dikembangkan berdasarkan Kerangka Penjadwalan Ulang (Descheduling Framework) dari Kubernetes Descheduler. Komponen ini kompatibel dengan semua kebijakan penjadwalan ulang dari Kubernetes Descheduler dan mengoptimalkan proses penjadwalan ulang pod.
Sebelum Anda memulai
Topik ini ditujukan untuk pengguna Kubernetes Descheduler dan menjelaskan korelasi antara Koordinator Descheduler dan Kubernetes Descheduler untuk membantu Anda bermigrasi ke Koordinator Descheduler. Sebelum membaca topik ini, disarankan untuk mempelajari fitur, atribut antarmuka, dan kebijakan Kubernetes Descheduler, seperti konfigurasi sistem, konfigurasi template, konfigurasi plugin kebijakan, dan konfigurasi plugin eviktor.
Korelasi antara Koordinator Descheduler dan Kubernetes Descheduler
Descheduling Framework dirancang sebelum rilis Kubernetes Descheduler versi 0.25.0. Framework ini memungkinkan Anda mengelola siklus hidup penjadwalan ulang menggunakan plugin. Descheduling Framework dikembangkan untuk memenuhi tujuan-tujuan berikut:
Menyediakan plugin berdasarkan kebijakan penjadwalan ulang yang ada dan logika eviksi pod untuk meningkatkan fleksibilitas penjadwalan ulang.
Membangun lingkungan runtime di mana plugin dapat dimuat dan dijalankan untuk mengelola siklus hidup penjadwalan ulang.
Setelah rilis Kubernetes Descheduler versi 0.26.0, kebijakan penjadwalan ulang yang disediakan oleh Kubernetes Descheduler dan DefaultEvictor diperkenalkan dalam Koordinator Descheduler versi 1.2.0.
Selain itu, Koordinator Descheduler menyediakan plugin eviktor bernama MigrationController.
Perbedaan Fitur
Koordinator Descheduler berlaku untuk sebagian besar skenario penggunaan Kubernetes Descheduler. Namun, kedua descheduler memiliki perbedaan dalam metode konfigurasi, kebijakan penjadwalan ulang, eviktor, dan kemampuan kontrol eviksi.
Pengembangan Descheduling Framework oleh Koordinator Descheduler dilakukan sebelum Kubernetes Descheduler. Oleh karena itu, Koordinator Descheduler menggunakan antarmuka konfigurasi yang berbeda, yaitu
v1alpha2/DeschedulerConfiguration.Plugin lowNodeLoad diperkenalkan dalam Koordinator Descheduler. Plugin ini bertanggung jawab untuk merasakan beban setiap node. Plugin descheduler asli Kubernetes LowNodeUtilization menjadwalkan ulang pod dari node yang terlalu dimanfaatkan ke node yang kurang dimanfaatkan. Plugin LowNodeLoad menjadwalkan ulang pod berdasarkan pemanfaatan sumber daya aktual dari node, yang lebih akurat. Untuk informasi lebih lanjut tentang plugin LowNodeLoad, lihat Bekerja dengan penjadwalan ulang hotspot sadar-beban.
Koordinator Descheduler memperkenalkan pod eviktor
MigrationController.MigrationControllermenyediakan lebih banyak kemampuan kontrol eviksi dengan keamanan yang ditingkatkan. Untuk informasi lebih lanjut, lihat Konfigurasi plugin eviktor.
Perbandingan Konfigurasi
Dalam contoh berikut, kebijakan RemovePodsViolatingNodeTaints diaktifkan untuk membandingkan konfigurasi Kubernetes Descheduler dan Koordinator Descheduler. Parameter apiVersion dan kind mendefinisikan versi. Tabel berikut menjelaskan komponen yang didukung oleh versi berbeda.
Pengaturan Versi | Kubernetes Descheduler | Kubernetes Descheduler | Koordinator Descheduler |
Versi Komponen | Semua versi | v0.27.0 dan yang lebih baru | Semua versi |
|
|
|
|
|
|
|
|
Konfigurasi sampel Kubernetes Descheduler
Pada versi sebelum v0.27.0, versi
descheduler/v1alpha1/DeschedulerPolicydigunakan.# Atribut antarmuka. apiVersion: "descheduler/v1alpha1" kind: "DeschedulerPolicy" # Konfigurasi sistem. nodeSelector: "node=node1" maxNoOfPodsToEvictPerNode: 10 maxNoOfPodsToEvictPerNamespace: 10 # Konfigurasi eviksi. Pada antarmuka lainnya, parameter berikut adalah konfigurasi plugin eviktor. evictFailedBarePods: false evictLocalStoragePods: true evictSystemCriticalPods: true evictDaemonSetPods: false ignorePvcPods: false # Konfigurasi kebijakan penjadwalan ulang. Pada dua antarmuka lainnya, konfigurasi kebijakan penjadwalan ulang digantikan oleh konfigurasi template penjadwalan ulang, yang terdiri dari parameter untuk mengaktifkan/menonaktifkan dan mengonfigurasi plugin. strategies: "RemovePodsViolatingNodeTaints": enabled: true params: nodeFit: true # nodeFit harus diaktifkan pada setiap kebijakan. Pada dua antarmuka lainnya, nodeFit adalah parameter plugin eviktor. excludedTaints: - deschedule=not-allow # Abaikan node yang memiliki taint key "deschedule" dan taint value "not-allow".Pada v0.27.0 dan versi yang lebih baru, versi
descheduler/v1alpha2/DeschedulerPolicydigunakan.# Atribut antarmuka. apiVersion: "descheduler/v1alpha2" kind: "DeschedulerPolicy" # Konfigurasi sistem. nodeSelector: "node=node1" maxNoOfPodsToEvictPerNode: 10 maxNoOfPodsToEvictPerNamespace: 10 # Konfigurasi sebelumnya adalah konfigurasi sistem. # Daftar template. profiles: - name: kubernetes-descheduler # Nama template penjadwalan ulang. # Konfigurasi template. plugins: deschedule: enabled: - "RemovePodsViolatingNodeTaints" # Parameter enabled adalah array. balance: disabled: - "*" # Konfigurasi sebelumnya adalah konfigurasi template. # Daftar plugin. pluginConfig: # Konfigurasi plugin kebijakan RemovePodsViolatingNodeTaints. - name: RemovePodsViolatingNodeTaints # Konfigurasi plugin verifikasi taint node. args: excludedTaints: - deschedule=not-allow # Abaikan node yang memiliki taint key "deschedule" dan taint value "not-allow". # Konfigurasi plugin eviktor DefaultEvictor. - name: "DefaultEvictor" args: evictFailedBarePods: false evictLocalStoragePods: true evictSystemCriticalPods: true evictDaemonSetPods: false ignorePvcPods: false nodeFit: true # nodeFit adalah parameter plugin eviktor.
Konfigurasi sampel Koordinator Descheduler
Versi
descheduler/v1alpha2/DeschedulerConfigurationdigunakan.# Atribut antarmuka. apiVersion: descheduler/v1alpha2 kind: DeschedulerConfiguration # Konfigurasi sistem. dryRun: false deschedulingInterval: 120s nodeSelector: node: node1 # Tipe data parameter nodeSelector berbeda dari antarmuka lainnya. maxNoOfPodsToEvictPerNode: 10 maxNoOfPodsToEvictPerNamespace: 10 # Konfigurasi sebelumnya adalah konfigurasi sistem. # Daftar template. profiles: - name: koord-descheduler # Konfigurasi template. plugins: deschedule: enabled: - name: RemovePodsViolatingNodeTaints # Parameter enabled adalah daftar terstruktur. balance: disabled: - name: "*" evict: # Anda dapat menentukan parameter evict untuk menggunakan eviktor. enabled: - name: MigrationController # Aktifkan MigrationController secara default. # - name: DefaultEvictor # Tentukan DefaultEvictor. filter: # Anda dapat menentukan parameter filter untuk menggunakan kebijakan penyaringan eviksi. enabled: - name: MigrationController # Aktifkan MigrationController secara default. # - name: DefaultEvictor # Tentukan DefaultEvictor. # Konfigurasi sebelumnya adalah konfigurasi template. # Daftar plugin. pluginConfig: # Konfigurasi plugin kebijakan RemovePodsViolatingNodeTaints. - name: RemovePodsViolatingNodeTaints # Konfigurasi plugin verifikasi taint node. args: excludedTaints: - deschedule=not-allow # Abaikan node yang memiliki taint key "deschedule" dan taint value "not-allow". # Konfigurasi plugin eviktor DefaultEvictor. - name: "DefaultEvictor" args: evictFailedBarePods: false evictLocalStoragePods: true evictSystemCriticalPods: true evictDaemonSetPods: false ignorePvcPods: false nodeFit: true # nodeFit adalah parameter plugin eviktor.
Konfigurasi sampel berikut hanya menunjukkan perbedaan antara versi berbeda. Untuk informasi lebih lanjut tentang parameter, lihat Konfigurasi sistem, Konfigurasi template, Konfigurasikan plugin kebijakan, dan Konfigurasikan plugin eviktor.
Perbedaan Konfigurasi Sistem
Konfigurasi sistem Kubernetes Descheduler (Konfigurasi Tingkat Atas) hanya berisi parameter
nodeSelector,maxNoOfPodsToEvictPerNode, danmaxNoOfPodsToEvictPerNamespace. Konfigurasi sistem Koordinator Descheduler juga mencakup parameterdryRundandeschedulingInterval.Parameter pod eviktor dalam konfigurasi sistem pada antarmuka
v1alpha1/DeschedulerPolicyKubernetes Descheduler digantikan oleh parameter plugin eviktor dalam konfigurasiargsdari antarmuka lainnya.Tipe data parameter
nodeSelectordalam antarmuka v1alpha2/DeschedulerConfiguration Koordinator Descheduler berbeda dari antarmuka lainnya. Untuk informasi lebih lanjut, lihat Konfigurasi sistem.
Perbedaan Konfigurasi Template
Versi
v1alpha1/DeschedulerPolicyKubernetes Descheduler tidak mendukung template penjadwalan ulang. Oleh karena itu, konfigurasinya berbeda dari Koordinator Descheduler.Versi
v1alpha2/DeschedulerPolicyKubernetes Descheduler mirip dengan versiv1alpha2/DeschedulerConfigurationKoordinator Descheduler. Keduanya mendukung template penjadwalan ulang. Namun, konfigurasi template dari kedua versi tersebut menggunakan tipe data dan metode yang berbeda untuk mengaktifkan plugin eviktor.v1alpha2/DeschedulerPolicymendefinisikan array untuk mengaktifkan atau menonaktifkan beberapa plugin.v1alpha2/DeschedulerConfigurationmendefinisikan daftar terstrukturpluginsuntuk mengonfigurasi plugin.v1alpha2/DeschedulerPolicyhanya mendukung plugin eviktor DefaultEvictor, yang diaktifkan secara otomatis.v1alpha2/DeschedulerConfigurationmendukung plugin eviktor MigrationController dan DefaultEvictor. Plugin eviktor DefaultEvictor berfungsi sama seperti versi open source. Anda dapat menambahkan parameterevictdanfilterke konfigurasi template untuk menentukan plugin eviktor yang ingin Anda aktifkan.
Perbedaan Konfigurasi Plugin Kebijakan
Koordinator Descheduler menyesuaikan semua kebijakan penjadwalan ulang dalam Kubernetes Descheduler 0.26.0. Pada versi setelah Kubernetes Descheduler 0.26.0, beberapa parameter baru dalam kebijakan penjadwalan ulang tidak dapat digunakan dalam Koordinator Descheduler. Tabel berikut menjelaskan perubahan pada parameter kebijakan penjadwalan ulang Koordinator Descheduler dibandingkan dengan versi setelah Kubernetes Descheduler 0.26.0.
Perubahan parameter plugin kebijakan | Contoh |
| |
| |
| |
| |
| |
Perbedaan Konfigurasi Plugin Eviktor
Koordinator Descheduler menyesuaikan dengan pod eviktor DefaultEvictor dari Kubernetes Descheduler 0.26.0. Koordinator Descheduler tidak mendukung parameter DefaultEvictor baru dalam versi setelah Kubernetes Descheduler 0.26.0.
Default Evictor
Perubahan parameter plugin eviktor | Contoh |
| |
MigrationController
Koordinator Descheduler mendukung plugin eviktor MigrationController, yang memungkinkan Anda menggunakan beberapa metode eviksi. Untuk informasi lebih lanjut, lihat MigrationController.
Bermigrasi dari Kubernetes Descheduler ke Koordinator Descheduler
Metode yang digunakan untuk bermigrasi dari Kubernetes Descheduler ke Koordinator Descheduler bervariasi berdasarkan versi yang digunakan. Lakukan langkah-langkah berikut untuk menyelesaikan migrasi.
Hapus instalasi Kubernetes Descheduler. Jika beberapa descheduler ada dalam kluster, kondisi balapan yang tidak terprediksi mungkin terjadi.
Referensi Aktifkan fitur penjadwalan ulang dan instal serta konfigurasikan Koordinator Descheduler.
Referensi Perbedaan konfigurasi sistem dan konfigurasikan konfigurasi sistem untuk Koordinator Descheduler.
Buat template penjadwalan ulang yang sesuai dengan Koordinator Descheduler.
Jika Anda menggunakan Kubernetes Descheduler 0.26.0 atau lebih lama, hanya antarmuka
v1alpha1/DeschedulerPolicyyang didukung. Referensi Perbedaan konfigurasi template dan lengkapi konfigurasinya.Jika Anda menggunakan versi setelah Kubernetes Descheduler 0.26.0, Anda perlu mengonfirmasi antarmuka yang digunakan.
Jika antarmukanya adalah
v1alpha1/DeschedulerPolicy, referensi Perbedaan konfigurasi template dan buat template penjadwalan ulang yang sesuai dengan Koordinator Descheduler.Jika antarmukanya adalah
v1alpha2/DeschedulerPolicy, referensi Perbedaan konfigurasi template dan modifikasi parameter dalam Koordinator Descheduler.
Referensi Perbedaan konfigurasi plugin kebijakan dan Perbedaan konfigurasi plugin eviktor dan konfigurasikan parameter plugin dalam Koordinator Descheduler.
Referensi
Untuk informasi lebih lanjut tentang cara menginstal komponen ack-koordinator dan mengaktifkan penjadwalan ulang, lihat Aktifkan fitur penjadwalan ulang.
Anda juga dapat mengonfigurasi parameter lanjutan untuk Koordinator Descheduler, template penjadwalan ulang, plugin kebijakan penjadwalan ulang, dan plugin eviktor dalam ConfigMap. Untuk informasi lebih lanjut, lihat Konfigurasikan parameter lanjutan.
Untuk informasi lebih lanjut tentang pengenalan ack-koordinator dan catatan rilis, lihat ack-koordinator (ack-slo-manager).