Pada kluster ACS, objek Node direpresentasikan sebagai node virtual. Node virtual menggunakan label untuk menunjukkan atribut seperti zona, wilayah, dan model GPU. Anda dapat memanfaatkan semantik penjadwalan Kubernetes native untuk menerapkan penjadwalan afinitas node di kluster ACS dengan menentukan atribut node pada bidang nodeSelector atau nodeAffinity, sehingga aplikasi Anda dijadwalkan pada node virtual yang memiliki atribut tersebut. Topik ini menjelaskan penjadwalan afinitas node di ACS.
Prasyarat
kube-scheduler telah terinstal dan versinya memenuhi persyaratan berikut.
Versi kluster ACS
Versi komponen penjadwal
1.31
v1.31.0-aliyun-1.2.0 dan yang lebih baru
1.30
v1.30.3-aliyun-1.1.1 dan yang lebih baru
1.28
v1.28.9-aliyun-1.1.0 dan yang lebih baru
acs-virtual-node telah terinstal dan versinya v2.12.0-acs.4 atau yang lebih baru.
Catatan penting
Item konfigurasi penjadwal ACS Enable custom labels for GPU-HPN nodes and scheduler diaktifkan secara default pada versi yang lebih baru, sehingga Anda tidak perlu mengonfigurasinya secara manual. Untuk informasi selengkapnya, lihat kube-scheduler.
nodeSelector
Gunakan nodeSelector untuk langsung menentukan label pada node virtual dalam penjadwalan afinitas node.
nodeAffinity
Gunakan nodeAffinity untuk mendeklarasikan atribut afinitas node. Fitur ini mendukung sintaks yang lebih kaya dibandingkan nodeSelector. Pada kluster ACS, batasan berikut berlaku saat menggunakan penjadwalan afinitas node untuk Pod yang memenuhi semua kondisi berikut.
Konfigurasi Enable Custom Tags and the Scheduler for GPU-HPN Nodes untuk komponen penjadwal ACS diaktifkan secara default pada versi baru. Untuk informasi selengkapnya, lihat kube-scheduler.
Pod menggunakan tipe komputasi GPU High-Performance Network (GPU-HPN).
schedulerNamePod adalahdefault-scheduler.Pada konfigurasi komponen penjadwal, opsi Enable Custom Tags And Scheduler For GPU-HPN Nodes tidak dipilih.
Bidang protokol | Deskripsi | Batasan |
requiredDuringSchedulingIgnoredDuringExecution | Penjadwalan hanya dijalankan jika aturan terpenuhi. Ini bekerja seperti | Pada bidang nodeSelectorTerms:
|
preferredDuringSchedulingIgnoredDuringExecution | Tentukan afinitas node berdasarkan bobot. Penjadwal mencoba menemukan node yang sesuai dengan aturan. Jika tidak ditemukan node yang cocok, penjadwal tetap menjadwalkan Pod tersebut. | Tidak didukung. |
Untuk instans general-purpose, komputasi-teroptimalkan, dan GPU, nodeAffinity tidak memiliki batasan tersebut.
Contoh
Contoh berikut menunjukkan cara menggunakan nodeSelector untuk menjadwalkan aplikasi ke zona tertentu.
Jalankan perintah berikut untuk menampilkan daftar node virtual di kluster.
kubectl get nodeOutput yang diharapkan:
NAME STATUS ROLES AGE VERSION virtual-kubelet-cn-hangzhou-i Ready agent 5h42m v1.28.3-xx virtual-kubelet-cn-hangzhou-j Ready agent 5h42m v1.28.3-xxBuat file bernama dep-node-selector-demo.yaml dengan konten YAML berikut.
apiVersion: apps/v1 kind: Deployment metadata: name: dep-node-selector-demo labels: app: node-selector-demo spec: replicas: 4 selector: matchLabels: app: node-selector-demo template: metadata: labels: app: node-selector-demo spec: containers: - name: node-selector-demo image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4 command: - "sleep" - "infinity" # Setel zona ke cn-hangzhou-j nodeSelector: topology.kubernetes.io/zone: cn-hangzhou-jJalankan perintah berikut untuk menyebar aplikasi ke kluster.
kubectl apply -f dep-node-selector-demo.yamlJalankan perintah berikut untuk memeriksa lokasi penjadwalan Pod.
kubectl get pod -o wideOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES dep-node-selector-demo-b4578576b-cgpfq 1/1 Running 0 112s 192.168.xx.xxx virtual-kubelet-cn-hangzhou-j <none> <none> dep-node-selector-demo-b4578576b-fs8kl 1/1 Running 0 110s 192.168.xx.xxx virtual-kubelet-cn-hangzhou-j <none> <none> dep-node-selector-demo-b4578576b-nh8zm 1/1 Running 0 2m8s 192.168.xx.xxx virtual-kubelet-cn-hangzhou-j <none> <none> dep-node-selector-demo-b4578576b-rpp8l 1/1 Running 0 2m8s 192.168.xx.xxx virtual-kubelet-cn-hangzhou-j <none> <none>Keempat Pod berjalan di zona
cn-hangzhou-j.