Kluster ACS menyertakan default-scheduler bawaan yang mengalokasikan sumber daya untuk semua Pod. Untuk beban kerja GPU-HPN yang memerlukan kebijakan penjadwalan kompleks—seperti gang scheduling atau penempatan berbasis topologi—Anda dapat menyebarluaskan penjadwal kustom (misalnya, Koordinator atau Volcano) dan mengonfigurasi ACS agar menggunakannya.
Penjadwal kustom hanya didukung untuk Pod GPU-HPN. Semua jenis komputasi lainnya menggunakan node virtual reguler dan tidak mendukung penjadwal kustom.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Pod dengan jenis komputasi diatur ke High-Performance Network GPU (gpu-hpn)
Add-on acs-virtual-node yang diinstal pada versi v2.12.0-acs.8 atau lebih baru
Komponen kube-scheduler yang diinstal pada versi yang mendukung penjadwal kustom:
Versi kluster ACS Versi Minimum kube-scheduler 1.32 dan lebih baru Semua versi didukung 1.31 v1.31.0-aliyun-1.1.2 atau lebih baru 1.30 v1.30.3-aliyun-1.1.2 atau lebih baru 1.28 v1.28.9-aliyun-1.1.2 atau lebih baru
Saat menggunakan penjadwal kustom untuk Pod GPU-HPN, konfigurasikan bidang spec.schedulerName pada setiap Pod. Untuk detailnya, lihat Tentukan penjadwal untuk Pod.Catatan penggunaan
Mengaktifkan penjadwal kustom mengubah cara ACS menangani Pod dan node GPU-HPN. Tinjau perbedaan perilaku berikut sebelum melanjutkan.
| Aspek | Penjadwal default (dinonaktifkan) | Penjadwal kustom (diaktifkan) |
|---|---|---|
| Nama penjadwal Pod | Tidak dapat dikustomisasi. Setelah Anda mengirimkan Pod, spec.schedulerName akan ditimpa menjadi default-scheduler. | Dapat dikustomisasi. spec.schedulerName dipertahankan setelah pengiriman dan dapat diatur ke nilai apa pun. |
| Proses penjadwalan Pod | Penjadwal default ACS mengalokasikan sumber daya untuk semua Pod. | Penjadwal default ACS hanya menangani Pod yang spec.schedulerName-nya adalah default-scheduler. Semua Pod lainnya ditangani oleh penjadwal kustom Anda. |
| Batasan label dan taint node GPU-HPN | Menambahkan, mengubah, dan menghapus label node, anotasi, serta taint tunduk pada batasan ACS. Lihat Kelola label dan taint node. | Batasan label, anotasi, dan taint node tidak lagi berlaku. |
| Batasan penjadwalan afinitas Pod | Konfigurasi bidang afinitas tunduk pada batasan ACS. Lihat Penjadwalan afinitas node. | Batasan bidang afinitas tidak lagi berlaku. |
Perubahan ini hanya berlaku untuk Pod dan node GPU-HPN. Jenis komputasi lainnya tidak mendukung penjadwal kustom.
Sebarluaskan dan konfigurasikan penjadwal kustom
Langkah 1: Sebarluaskan penjadwal kustom
Sebarluaskan penjadwal kustom Anda di kluster ACS. Untuk contoh lengkap—termasuk konfigurasi ServiceAccount dan ClusterRoleBinding yang diperlukan—lihat dokumentasi Kubernetes.
Langkah 2: Aktifkan penjadwal kustom di ACS
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik ID kluster target. Di panel navigasi kiri, pilih Operations > 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.
Langkah 3: Konfigurasikan penjadwal kustom untuk sebuah Pod
Buat file bernama
dep-with-koordinator.yamldengan konten berikut. Penyebaran ini mengaturalibabacloud.com/compute-class: gpu-hpnpada templat Pod dan menetapkankoord-schedulersebagai penjadwal. Gantikoord-schedulerdengan nama yang Anda konfigurasikan di Langkah 1.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 # Setel kelas komputasi ke gpu-hpn. Jenis komputasi lain tidak mendukung penjadwal kustom. 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 # Setel nama penjadwal agar sesuai dengan yang disebarluaskan di Langkah 1. schedulerName: koord-schedulerTerapkan Penyebaran ke kluster.
kubectl apply -f dep-with-koordinator.yamlVerifikasi bahwa Pod menggunakan penjadwal kustom.
kubectl get pod -lapp=dep-with-koordinator -o custom-columns=NAME:.metadata.name,schedulerName:.spec.schedulerNameOutput yang diharapkan:
NAME schedulerName dep-with-koordinator-xxxxx-xxxxx koord-scheduler
FAQ
Mengapa saya mendapatkan error "Insufficient attachable-volumes-xxx" saat Pod menggunakan PVC dengan penjadwal kustom?
Beberapa penjadwal kustom memerlukan objek Container Storage Interface (CSI) Node pada node tersebut untuk ada dan telah melaporkan informasi kapasitas untuk driver CSI terkait. Jika kondisi tersebut tidak terpenuhi, penjadwal akan melaporkan error sumber daya tidak mencukupi—meskipun penjadwal Kubernetes default menangani kasus ini secara otomatis.
Konfigurasikan penjadwal kustom agar mengabaikan driver CSI tertentu. Untuk penjadwal Volcano, tambahkan flag --ignored-provisioners saat startup:
# Pisahkan beberapa driver dengan koma.
--ignored-provisioners=povplugin.csi.alibabacloud.comSesuaikan nama driver agar sesuai dengan driver CSI di kluster Anda.