全部产品
Search
文档中心

Container Service for Kubernetes:Aktifkan fitur penjadwalan

更新时间:Nov 11, 2025

Saat men-deploy pekerjaan komputasi GPU di ACK managed cluster Pro, Anda dapat menetapkan label properti penjadwalan ke node GPU. Label-label tersebut—seperti penjadwalan eksklusif, bersama (shared), dan topology-aware scheduling—serta label model kartu membantu mengoptimalkan pemanfaatan sumber daya dan memungkinkan penjadwalan aplikasi yang presisi.

Label penjadwalan

Label penjadwalan GPU mengidentifikasi model GPU dan kebijakan alokasi sumber daya, sehingga memungkinkan manajemen sumber daya detail halus serta penjadwalan yang efisien.

Fitur penjadwalan

Nilai label

Skenario

Penjadwalan eksklusif (Bawaan)

ack.node.gpu.schedule: default

 Pekerjaan berkinerja tinggi yang memerlukan penggunaan eksklusif seluruh kartu GPU, seperti pelatihan model dan HPC.

Penjadwalan bersama

ack.node.gpu.schedule: cgpu

ack.node.gpu.schedule: core_mem

ack.node.gpu.schedule: share

ack.node.gpu.schedule: mps

Meningkatkan pemanfaatan GPU. Cocok untuk skenario di mana beberapa pekerjaan ringan berjalan secara konkuren, seperti pada beban kerja multitenancy atau inferensi.

  • cgpu: Membagi daya komputasi dan mengisolasi video memory. Berdasarkan teknologi cGPU Alibaba Cloud.

  • core_mem: Mengisolasi baik daya komputasi maupun video memory.

  • share: Membagi daya komputasi dan video memory tanpa isolasi.

  • mps: Membagi daya komputasi dan mengisolasi video memory. Berdasarkan isolasi NVIDIA Multi-Process Service (MPS) yang dikombinasikan dengan teknologi cGPU Alibaba Cloud.

ack.node.gpu.placement: binpack

ack.node.gpu.placement: spread

Ini berlaku untuk mengoptimalkan kebijakan alokasi sumber daya untuk beberapa kartu GPU pada satu node setelah fitur penjadwalan bersama cgpu, core_mem, share, dan mps diaktifkan.

  • binpack: (Bawaan) Menjadwalkan pod secara padat pada beberapa kartu. Mengisi satu GPU dengan pod sebelum menugaskan ke kartu berikutnya. Ini mengurangi fragmentasi sumber daya dan ideal untuk skenario yang memprioritaskan pemanfaatan sumber daya atau penghematan energi.

  • spread: Mendistribusikan pod ke GPU-GPU berbeda. Ini mengurangi dampak kegagalan satu kartu dan cocok untuk pekerjaan dengan ketersediaan tinggi (HA).

Penjadwalan Sadar Topologi

ack.node.gpu.schedule: topology

Secara otomatis menetapkan pod ke kombinasi GPU dengan bandwidth komunikasi optimal berdasarkan topologi fisik GPU dalam satu node. Cocok untuk pekerjaan yang sensitif terhadap latensi komunikasi antar-GPU.

Penjadwalan model kartu

aliyun.accelerator/nvidia_name: <GPU_card_name>

Gunakan bersama penjadwalan model kartu untuk mengatur kapasitas video memory dan jumlah total kartu GPU untuk suatu pekerjaan GPU.
aliyun.accelerator/nvidia_mem: <video_memory_per_card>
aliyun.accelerator/nvidia_count: <total_number_of_GPU_cards>

Menjadwalkan pekerjaan ke node dengan model GPU tertentu atau menghindari node dengan model tertentu.

Aktifkan fitur penjadwalan

Penjadwalan eksklusif

Jika sebuah node tidak memiliki label penjadwalan GPU, penjadwalan eksklusif diaktifkan secara bawaan. Dalam mode ini, node mengalokasikan sumber daya GPU ke pod dalam satuan satu GPU.

Jika fitur penjadwalan GPU lain diaktifkan, menghapus label tidak akan mengembalikan penjadwalan eksklusif. Anda harus mengubah nilai label secara manual menjadi ack.node.gpu.schedule: default untuk mengembalikan penjadwalan eksklusif.

Penjadwalan bersama

Penjadwalan bersama hanya didukung di ACK managed cluster Pro. Untuk informasi selengkapnya, lihat Batasan.

  1. Instal komponen penjadwalan bersama ack-ai-installer.

    1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

    2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih Applications > Cloud-native AI Suite.

    3. Di halaman Cloud-native AI Suite, klik Deploy. Di halaman Deploy Cloud-native AI Suite, pilih Scheduling Policy Extension (Batch Scheduling, GPU Sharing, GPU Topology Awareness).

      Untuk informasi selengkapnya tentang cara mengatur kebijakan penjadwalan daya komputasi untuk cGPU, lihat Instal dan gunakan komponen cGPU.
    4. Di halaman Cloud-native AI Suite, klik Deploy Cloud-native AI Suite.

      Di halaman Cloud-native AI Suite, temukan komponen GPU bersama yang telah diinstal ack-ai-installer dalam daftar komponen.

  2. Aktifkan fitur penjadwalan bersama.

    1. Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Node Management > Node Pools.

    2. Di halaman Node Pools, klik Create Node Pool, konfigurasikan label node, lalu klik Confirm.

      Anda dapat mempertahankan pengaturan bawaan untuk item konfigurasi lainnya. Untuk informasi selengkapnya tentang skenario untuk label node, lihat Label penjadwalan.
      • Konfigurasikan penjadwalan bersama dasar.

        Klik ikon Node Labels untuk Node Labels, atur Key menjadi ack.node.gpu.schedule, dan pilih salah satu nilai tag berikut: cgpu, core_mem, share, atau mps (memerlukan Anda untuk menginstal komponen MPS Control Daemon).

      • Konfigurasikan penjadwalan bersama multi-kartu.

        Jika sebuah node memiliki beberapa GPU, Anda dapat mengonfigurasi penjadwalan bersama multi-kartu untuk mengoptimalkan alokasi sumber daya.

        Klik ikon Node Label untuk Node Labels, atur Key menjadi ack.node.gpu.placement, dan atur nilai tag menjadi binpack atau spread.

  3. Verifikasi bahwa penjadwalan bersama telah diaktifkan.

    cgpu/share/mps

    Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk memverifikasi bahwa penjadwalan bersama cgpu, share, atau mps telah diaktifkan untuk kelompok node tersebut.

    kubectl get nodes <NODE_NAME> -o yaml | grep -q "aliyun.com/gpu-mem"

    Keluaran yang diharapkan:

    aliyun.com/gpu-mem: "60"

    Jika nilai bidang aliyun.com/gpu-mem bukan 0, penjadwalan bersama cgpu, share, atau mps telah diaktifkan.

    core_mem

    Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk memverifikasi bahwa penjadwalan bersama core_mem telah diaktifkan untuk kelompok node tersebut.

    kubectl get nodes <NODE_NAME> -o yaml | grep -E 'aliyun\.com/gpu-core\.percentage|aliyun\.com/gpu-mem'

    Keluaran yang diharapkan:

    aliyun.com/gpu-core.percentage:"80"
    aliyun.com/gpu-mem:"6"

    Jika nilai bidang aliyun.com/gpu-core.percentage dan aliyun.com/gpu-mem bukan 0, penjadwalan bersama core_mem telah diaktifkan.

    binpack

    Gunakan alat kueri sumber daya GPU penjadwalan GPU bersama dan jalankan perintah berikut untuk mengkueri alokasi sumber daya GPU pada node:

    kubectl inspect cgpu

    Keluaran yang diharapkan:

    NAME                   IPADDRESS      GPU0(Allocated/Total)  GPU1(Allocated/Total)  GPU2(Allocated/Total)  GPU3(Allocated/Total)  GPU Memory(GiB)
    cn-shanghai.192.0.2.109  192.0.2.109  15/15                   9/15                   0/15                   0/15                   24/60
    --------------------------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    24/60 (40%)

    Keluaran menunjukkan bahwa GPU0 dialokasikan penuh (15/15) dan GPU1 dialokasikan sebagian (9/15). Hal ini sesuai dengan strategi mengisi satu GPU sebelum mengalokasikan sumber daya ke GPU berikutnya, yang mengonfirmasi bahwa kebijakan binpack sedang berlaku.

    spread

    Gunakan alat kueri sumber daya GPU penjadwalan bersama dan jalankan perintah berikut untuk mengkueri alokasi sumber daya GPU pada node:

    kubectl inspect cgpu

    Keluaran yang diharapkan:

    NAME                   IPADDRESS      GPU0(Allocated/Total)  GPU1(Allocated/Total)  GPU2(Allocated/Total)  GPU3(Allocated/Total)  GPU Memory(GiB)
    cn-shanghai.192.0.2.109  192.0.2.109  4/15                   4/15                   0/15                   4/15                   12/60
    --------------------------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    12/60 (20%)

    Keluaran menunjukkan bahwa 4/15 sumber daya dialokasikan ke GPU0, 4/15 ke GPU1, dan 4/15 ke GPU3. Hal ini mengonfirmasi bahwa kebijakan spread sedang berlaku karena pod-pod didistribusikan ke GPU-GPU berbeda.

Penjadwalan topology-aware

Penjadwalan topology-aware hanya didukung di ACK managed cluster Pro. Untuk informasi selengkapnya, lihat Persyaratan versi komponen sistem.

  1. Instal komponen penjadwalan bersama ack-ai-installer.

  2. Aktifkan penjadwalan topology-aware.

    Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk menambahkan label ke node tersebut. Hal ini mengaktifkan fitur penjadwalan topology-aware untuk node tersebut.

    kubectl label node <NODE_NAME> ack.node.gpu.schedule=topology
    Setelah Anda mengaktifkan penjadwalan topology-aware untuk sebuah node, node tersebut tidak lagi mendukung penjadwalan untuk sumber daya GPU non-topology-aware. Anda dapat menjalankan perintah kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite untuk mengubah label dan mengembalikan penjadwalan eksklusif.
  3. Verifikasi bahwa penjadwalan topology-aware telah diaktifkan.

    Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk memverifikasi bahwa penjadwalan topology-aware telah diaktifkan untuk kelompok node tersebut.

    kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpu

    Keluaran yang diharapkan:

    aliyun.com/gpu: "2"

    Jika nilai bidang aliyun.com/gpu bukan 0, penjadwalan topology-aware telah diaktifkan.

Penjadwalan model kartu

Anda dapat menjadwalkan Pekerjaan ke node dengan model GPU tertentu atau menghindari model tertentu.

  1. Periksa model GPU pada node.

    Jalankan perintah berikut untuk mengkueri model GPU pada node-node di kluster.

    Nama model GPU berada di bidang NVIDIA_NAME.
    kubectl get nodes -L aliyun.accelerator/nvidia_name

    Keluaran yang diharapkan mirip dengan berikut:

    NAME                        STATUS   ROLES    AGE   VERSION            NVIDIA_NAME
    cn-shanghai.192.XX.XX.176   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB
    cn-shanghai.192.XX.XX.177   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB

    Perluas untuk melihat cara lain memeriksa model GPU.

    Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Workloads > Pods. Di baris kontainer yang Anda buat (misalnya, tensorflow-mnist-multigpu-***), klik Terminal di kolom Actions. Lalu, dari daftar drop-down, pilih kontainer untuk masuk dan jalankan perintah berikut.

    • Kueri model GPU: nvidia-smi --query-gpu=gpu_name --format=csv,noheader --id=0 | sed -e 's/ /-/g'

    • Kueri kapasitas video memory tiap GPU: nvidia-smi --id=0 --query-gpu=memory.total --format=csv,noheader | sed -e 's/ //g'

    • Kueri jumlah total GPU pada node: nvidia-smi -L | wc -l

    image

  2. Aktifkan penjadwalan model kartu.

    1. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Workloads > Jobs.

    2. Di halaman Jobs, klik Create From YAML. Gunakan contoh berikut untuk membuat aplikasi dan mengaktifkan fitur penjadwalan model kartu.

      image

      Tentukan model kartu tertentu

      Gunakan label model GPU untuk menjalankan aplikasi Anda pada node dengan model GPU tertentu.

      Ganti Tesla-V100-SXM2-32GB dalam kode aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB" dengan model GPU aktual pada node Anda.

      Perluas untuk melihat detail file YAML

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-mnist
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-mnist
          spec:
            nodeSelector:
              aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB" # Menjalankan aplikasi pada GPU Tesla V100-SXM2-32GB.
            containers:
            - name: tensorflow-mnist
              image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
              command:
              - python
              - tensorflow-sample-code/tfjob/docker/mnist/main.py
              - --max_steps=1000
              - --data_dir=tensorflow-sample-code/data
              resources:
                limits:
                  nvidia.com/gpu: 1
              workingDir: /root
            restartPolicy: Never

      Setelah Pekerjaan dibuat, Anda dapat memilih Workloads > Pods di panel navigasi kiri. Di daftar pod, Anda dapat melihat bahwa contoh pod berhasil dijadwalkan ke node yang sesuai, yang menunjukkan penjadwalan fleksibel berdasarkan label model GPU.

      Kecualikan model kartu tertentu

      Gunakan label model GPU dengan afinitas dan anti-afinitas node untuk mencegah aplikasi Anda berjalan pada model GPU tertentu.

      Ganti Tesla-V100-SXM2-32GB dalam values: - "Tesla-V100-SXM2-32GB" dengan model GPU aktual pada node Anda.

      Perluas untuk melihat detail file YAML

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-mnist
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-mnist
          spec:
            affinity:
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                  - matchExpressions:
                    - key: aliyun.accelerator/nvidia_name  # Label penjadwalan model kartu
                      operator: NotIn
                      values:
                      - "Tesla-V100-SXM2-32GB"            # Mencegah pod dijadwalkan ke node dengan kartu Tesla-V100-SXM2-32GB.
            containers:
            - name: tensorflow-mnist
              image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
              command:
              - python
              - tensorflow-sample-code/tfjob/docker/mnist/main.py
              - --max_steps=1000
              - --data_dir=tensorflow-sample-code/data
              resources:
                limits:
                  nvidia.com/gpu: 1
              workingDir: /root
            restartPolicy: Never

      Setelah Pekerjaan dibuat, aplikasi tidak dijadwalkan ke node yang memiliki kunci label aliyun.accelerator/nvidia_name dan nilai Tesla-V100-SXM2-32GB. Namun, aplikasi dapat dijadwalkan ke node GPU dengan model GPU lainnya.