All Products
Search
Document Center

Container Compute Service:Penjadwalan Afinitas Node

Last Updated:Mar 01, 2026

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.

Catatan

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).

  • schedulerName Pod adalah default-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 nodeSelector.

Pada bidang nodeSelectorTerms:

  • Anda hanya dapat menentukan label afinitas yang disebutkan di atas dalam matchExpressions.

  • Anda tidak dapat menentukan matchFields.

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.

  1. Jalankan perintah berikut untuk menampilkan daftar node virtual di kluster.

    kubectl get node

    Output 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-xx
  2. Buat 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-j
  3. Jalankan perintah berikut untuk menyebar aplikasi ke kluster.

    kubectl apply -f dep-node-selector-demo.yaml
  4. Jalankan perintah berikut untuk memeriksa lokasi penjadwalan Pod.

    kubectl get pod -o wide

    Output 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.