Kluster Container Service (ACS) dilengkapi penjadwal default. Saat Anda mengirimkan Pod ke kluster, penjadwal bernama default-scheduler secara default mengalokasikan sumber daya. Untuk mendukung jenis sumber daya khusus dan kebijakan penjadwalan yang kompleks, kluster ACS memungkinkan penggunaan penjadwal kustom. Topik ini menjelaskan cara menggunakan penjadwal kustom di kluster ACS beserta batasannya.
Prasyarat
Komponen acs-virtual-node telah terinstal dengan versi v2.12.0-acs.8 atau lebih baru.
Komponen kube-scheduler telah terinstal dan versinya memenuhi persyaratan berikut.
Versi kluster ACS
Versi kube-scheduler yang diperlukan
1.32 dan lebih baru
Semua versi didukung.
1.31
v1.31.0-aliyun-1.1.2 dan lebih baru.
1.30
v1.30.3-aliyun-1.1.2 dan lebih baru.
1.28
v1.28.9-aliyun-1.1.2 dan lebih baru.
Opsi Enable custom labels and schedulers for GPU-HPN nodes pada komponen kube-scheduler diaktifkan secara default di versi-versi terbaru. Untuk informasi selengkapnya, lihat kube-scheduler.
CatatanSaat menggunakan penjadwal kustom, Anda perlu mengonfigurasi
spec.schedulerNameuntuk Pod tersebut. Untuk informasi selengkapnya, lihat Specify schedulers for pods.
Prosedur
Langkah 1: Deploy penjadwal kustom
Deploy penjadwal kustom di kluster Anda. Untuk informasi selengkapnya, lihat dokumentasi Kubernetes.
Langkah 2: Ubah konfigurasi penjadwal ACS
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, klik Add-ons.
Pada halaman Add-ons, temukan kartu Kube Scheduler dan klik Configuration.
Pada kotak dialog, pilih Enable custom labels and schedulers for GPU-HPN nodes, lalu klik OK.
Untuk informasi selengkapnya, lihat kube-scheduler.
Tabel berikut membandingkan efek pada Pod dan node saat opsi ini diaktifkan atau dinonaktifkan.
CatatanFitur ini hanya berlaku untuk Pod dan node GPU-HPN. Penjadwal kustom tidak didukung untuk jenis komputasi lainnya.
Penjadwal default (dinonaktifkan)
Penjadwal kustom (diaktifkan)
Nama penjadwal Pod
Kustomisasi tidak didukung. Setelah Pod dikirim, bidang
spec.schedulerNameakan ditimpa dengan default-scheduler.Anda dapat mengatur
spec.schedulerNamePod ke nilai apa pun, dan nilai ini tidak akan diubah setelah pengiriman.Proses penjadwalan Pod
Penjadwal ACS default mengalokasikan sumber daya untuk semua Pod.
Penjadwal ACS default hanya menjadwalkan Pod yang
spec.schedulerName-nya adalahdefault-scheduler. Penjadwal kustom bertanggung jawab mengalokasikan sumber daya untuk semua Pod lainnya.Batasan pada label, anotasi, dan taint untuk node GPU-HPN
Batasan ACS berlaku untuk penambahan, modifikasi, dan penghapusan label, anotasi, serta taint node. Untuk informasi selengkapnya, lihat Manage node labels and taints.
Batasan ACS tidak lagi berlaku untuk penambahan, modifikasi, dan penghapusan label, anotasi, serta taint node.
Batasan pada penjadwalan afinitas Pod
Batasan ACS berlaku untuk konfigurasi bidang afinitas. Untuk informasi selengkapnya, lihat Node Affinity Scheduling.
Batasan ACS tidak lagi berlaku untuk konfigurasi bidang afinitas.
Langkah 3: Tetapkan penjadwal kustom ke Pod
Buat file bernama
dep-with-koordinator.yamldengan konten berikut.File ini menjelaskan aplikasi Deployment di mana templat Pod menentukan penjadwal kustom bernama
koord-scheduler.apiVersion: apps/v1 kind: Deployment metadata: name: dep-with-koordinator labels: app: dep-with-koordinator spec: replicas: 1 selector: matchLabels: app: dep-with-koordinator template: metadata: labels: app: dep-with-koordinator # Tentukan kelas komputasi sebagai gpu-hpn. Penjadwal kustom tidak didukung untuk jenis komputasi lainnya. alibabacloud.com/compute-class: gpu-hpn spec: containers: - name: demo image: registry.cn-hangzhou-finance.aliyuncs.com/acs/stress:v1.0.4 command: - "sleep" - "infinity" restartPolicy: Always # Tentukan nama penjadwal sebagai koord-scheduler. Nama harus sesuai dengan yang dikonfigurasi di Langkah 1. schedulerName: koord-schedulerKirimkan Pod ke kluster ACS.
kubectl apply -f dep-with-koordinator.yamlPeriksa
schedulerNamedalam konfigurasi Pod.kubectl get pod -lapp=dep-with-koordinator -o custom-columns=NAME:.metadata.name,schedulerName:.spec.schedulerNameOutput yang diharapkan:
# Pod menentukan penjadwal kustom bernama koord-scheduler. NAME schedulerName dep-with-koordinator-xxxxx-xxxxx koord-scheduler
FAQ
Error penjadwalan PVC: Insufficient attachable-volumes-xxx
Masalah ini tidak terjadi dengan penjadwal Kubernetes default. Hal ini karena beberapa penjadwal kustom, saat memproses sumber daya PersistentVolumeClaim (PVC), memerlukan objek Container Storage Interface (CSI) Node dari node tersebut agar tersedia atau telah melaporkan informasi kapasitas untuk driver CSI yang sesuai. Jika node tidak memenuhi kondisi ini, penjadwal mungkin salah menilai bahwa sumber daya tidak mencukupi.
Untuk mengatasinya, konfigurasikan penjadwal agar mengabaikan driver CSI tertentu. Misalnya, saat menggunakan penjadwal Volcano, Anda dapat menambahkan parameter peluncuran --ignored-provisioners=${csi-driver-name}:
# Anda dapat menentukan beberapa driver, dipisahkan dengan koma.
--ignored-provisioners=povplugin.csi.alibabacloud.comSesuaikan parameter tersebut berdasarkan driver CSI yang Anda gunakan.
Error kekurangan sumber daya: resource in cluster is overused atau queue resource quota insufficient
Masalah ini tidak terjadi dengan penjadwal Kubernetes default. Hal ini karena beberapa penjadwal kustom mengonversi nilai kapasitas sumber daya non-CPU atau non-memori, seperti ephemeral-storage, ke satuan milli. Karena node virtual melaporkan kapasitas yang sangat besar secara default, konversi ini dapat menyebabkan overflow integer 64-bit. Akibatnya, penjadwal salah menghitung kapasitas tersisa node atau kluster sebagai nilai negatif, sehingga memicu error kekurangan sumber daya. Kirimkan Tiket ke dukungan teknis untuk menyelesaikan masalah ini.