All Products
Search
Document Center

Container Service for Kubernetes:Aktifkan fitur penjadwalan

Last Updated:Jun 22, 2026

Saat men-deploy job komputasi GPU di ACK managed cluster Pro, Anda dapat mengoptimalkan pemanfaatan resource dan menjadwalkan beban kerja secara presisi dengan memberikan label atribut penjadwalan (seperti eksklusif, shared, dan topology-aware) serta label model GPU (untuk penjadwalan berdasarkan model kartu) ke node GPU.

Ikhtisar label penjadwalan

Label penjadwalan GPU mengidentifikasi model GPU dan kebijakan alokasi resource, memungkinkan manajemen resource detail halus dan penjadwalan yang efisien.

Mode penjadwalan

Nilai label

Kasus penggunaan

Exclusive scheduling (Default)

ack.node.gpu.schedule: default

Untuk tugas yang kritis terhadap performa dan memerlukan akses eksklusif ke seluruh GPU, seperti pelatihan model dan high-performance computing (HPC).

Shared scheduling

ack.node.gpu.schedule: cgpu

ack.node.gpu.schedule: core_mem

ack.node.gpu.schedule: share

ack.node.gpu.schedule: mps

Meningkatkan pemanfaatan GPU dan ideal untuk skenario dengan banyak tugas ringan konkuren, seperti multitenansi dan inferensi.

  • cgpu: Daya komputasi shared dengan memori GPU terisolasi, berbasis teknologi Alibaba Cloud cGPU.

  • core_mem: Daya komputasi dan memori GPU terisolasi.

  • share: Daya komputasi dan memori GPU shared tanpa isolasi.

  • mps: Daya komputasi shared dengan memori GPU terisolasi, berbasis teknologi isolasi NVIDIA Multi-Process Service (MPS) yang dikombinasikan dengan teknologi Alibaba Cloud cGPU.

ack.node.gpu.placement: binpack

ack.node.gpu.placement: spread

Mengoptimalkan strategi alokasi resource pada node multi-GPU saat penjadwalan shared cgpu, core_mem, share, atau mps diaktifkan.

  • binpack: (Default) Penjadwalan multi-kartu kompak. Mengisi satu GPU dengan Pod sebelum mengalokasikannya ke GPU berikutnya. Ini mengurangi fragmentasi resource dan ideal untuk skenario yang memprioritaskan pemanfaatan resource atau penghematan energi.

  • spread: Penjadwalan multi-kartu terdistribusi. Menyebarluaskan Pod ke GPU berbeda untuk mengurangi dampak kegagalan satu kartu. Ini cocok untuk beban kerja berkelanjutan tinggi (high-availability).

Topology-aware scheduling

ack.node.gpu.schedule: topology

Secara otomatis menetapkan kombinasi optimal GPU ke suatu Pod berdasarkan topologi fisik GPU dalam satu node. Ini ideal untuk tugas yang sensitif terhadap latensi komunikasi antar-GPU.

Card model scheduling

aliyun.accelerator/nvidia_name: <GPU card name>

Gunakan label ini dengan card model scheduling untuk mengatur kapasitas memori GPU dan jumlah total kartu GPU untuk job GPU.
aliyun.accelerator/nvidia_mem: <GPU memory per card>
aliyun.accelerator/nvidia_count: <total number of GPU cards>

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

Aktifkan fitur penjadwalan

Satu node hanya dapat memiliki satu mode penjadwalan GPU (eksklusif, shared, atau topology-aware) yang diaktifkan dalam satu waktu. Setelah Anda mengaktifkan suatu mode, resource ekstensi yang dilaporkan oleh mode penjadwalan lainnya secara otomatis diatur menjadi 0.

Exclusive scheduling

Jika suatu node tidak memiliki label penjadwalan GPU, exclusive scheduling adalah mode default. Dalam mode ini, satu kartu GPU merupakan unit alokasi terkecil untuk Pod.

Jika Anda telah mengaktifkan mode penjadwalan GPU lain, hanya menghapus label tidak akan mengembalikan exclusive scheduling. Anda harus mengubah nilai label secara manual menjadi ack.node.gpu.schedule: default untuk melakukannya.

Shared scheduling

Shared scheduling hanya tersedia untuk ACK managed cluster Pro. Untuk informasi selengkapnya, lihat Batasan.

  1. Instal komponen ack-ai-installer

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

    2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Applications > Cloud-native AI Suite.

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

      Untuk mempelajari cara mengonfigurasi kebijakan penjadwalan komputasi yang didukung oleh layanan cGPU, lihat Instal dan gunakan komponen cGPU.
    4. Pada halaman Cloud-native AI Suite, klik Deploy Cloud-native AI Suite.

      Di daftar komponen pada halaman Cloud-native AI Suite, pastikan komponen ack-ai-installer telah terinstal.

  2. Aktifkan penjadwalan bersama

    1. Pada halaman Clusters, klik nama kluster target Anda. Di panel navigasi sisi kiri, pilih Nodes > Node Pools.

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

      Anda dapat mempertahankan nilai default untuk pengaturan lainnya. Untuk informasi tentang kasus penggunaan label node, lihat Ikhtisar label penjadwalan.
      • Konfigurasikan shared scheduling dasar.

        Klik ikon Tambah 节点标签 untuk Node Labels, atur Key menjadi ack.node.gpu.schedule, dan pilih salah satu nilai label berikut: cgpu, core_mem, share, atau mps (memerlukan instalasi komponen MPS Control Daemon).

      • Konfigurasikan shared scheduling multi-kartu.

        Jika suatu node memiliki beberapa kartu GPU dan Anda ingin mengoptimalkan alokasi resource, Anda dapat mengonfigurasi shared scheduling multi-kartu sebagai tambahan dari shared scheduling dasar.

        Klik ikon Tambah 节点标签 untuk Node Labels, atur Key menjadi ack.node.gpu.placement, dan pilih salah satu nilai label berikut: binpack atau spread.

  3. Verifikasi penjadwalan bersama

    cgpu/share/mps

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

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

    Output yang diharapkan:

    aliyun.com/gpu-mem: "60"

    Nilai bukan nol pada bidang aliyun.com/gpu-mem menunjukkan bahwa shared scheduling cgpu, share, atau mps telah diaktifkan.

    core_mem

    Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk memverifikasi bahwa shared scheduling core_mem telah diaktifkan.

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

    Output yang diharapkan:

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

    Jika bidang aliyun.com/gpu-core.percentage dan aliyun.com/gpu-mem keduanya bernilai bukan nol, shared scheduling core_mem telah diaktifkan.

    binpack

    Dari tool kueri resource GPU shared GPU, jalankan perintah berikut untuk memeriksa alokasi resource GPU pada node:

    kubectl inspect cgpu

    Output 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%)

    Output menunjukkan bahwa GPU0 dialokasikan penuh (15/15) sedangkan GPU1 dialokasikan sebagian (9/15). Hal ini mengonfirmasi bahwa strategi binpack, yang mengisi satu GPU secara penuh sebelum mengalokasikan resource ke GPU berikutnya, sedang aktif.

    spread

    Dari tool kueri resource GPU shared scheduling, jalankan perintah berikut untuk memeriksa alokasi resource GPU pada node:

    kubectl inspect cgpu

    Output 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%)

    Output menunjukkan bahwa resource yang dialokasikan adalah 4/15 pada GPU0, 4/15 pada GPU1, dan 4/15 pada GPU3. Hal ini sesuai dengan kebijakan penjadwalan yang memprioritaskan penyebaran Pod ke GPU berbeda, yang menunjukkan bahwa kebijakan spread telah berlaku.

Topology-aware scheduling

Topology-aware scheduling hanya tersedia untuk ACK managed cluster Pro. Untuk informasi selengkapnya, lihat Persyaratan versi komponen sistem.

  1. Instal komponen ack-ai-installer.

  2. Aktifkan topology-aware scheduling

    Ganti <NODE_NAME> dengan nama node target Anda dan jalankan perintah berikut untuk menambahkan label ke node dan secara eksplisit mengaktifkan topology-aware GPU scheduling.

    kubectl label node <NODE_NAME> ack.node.gpu.schedule=topology
    Setelah Anda mengaktifkan topology-aware GPU scheduling pada suatu node, node tersebut tidak lagi mendukung beban kerja GPU non-topology-aware. Untuk mengembalikan exclusive scheduling, jalankan perintah kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite untuk mengubah label.
  3. Verifikasi topology-aware scheduling

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

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

    Output yang diharapkan:

    aliyun.com/gpu: "2"

    Jika bidang aliyun.com/gpu tidak bernilai 0, penjadwalan topology-aware telah diaktifkan.

Card model scheduling

Jadwalkan job ke node dengan model GPU tertentu, atau hindari model tertentu.

  1. Lihat model kartu GPU

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

    Bidang NVIDIA_NAME menunjukkan model kartu GPU.
    kubectl get nodes -L aliyun.accelerator/nvidia_name

    Output 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

    Metode pemeriksaan alternatif

    Pada halaman Clusters, klik nama kluster target. Di panel navigasi sisi kiri, pilih Workloads > Pods. Untuk Pod yang sedang berjalan (misalnya, tensorflow-mnist-multigpu-***), klik Terminal di kolom Actions. Pilih kontainer target dari daftar drop-down dan jalankan perintah berikut.

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

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

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

  2. Aktifkan penjadwalan model kartu

    1. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Jobs.

    2. Pada halaman Jobs, klik Create from YAML. Gunakan contoh berikut untuk membuat aplikasi dan mengaktifkan card model scheduling.

      Tentukan model kartu

      Gunakan label penjadwalan model kartu GPU untuk memastikan aplikasi Anda berjalan pada node dengan model kartu tertentu.

      Pada kode aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB", ganti Tesla-V100-SXM2-32GB dengan model kartu aktual node Anda.

      Detail 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 job dibuat, pilih Workloads > Pods dari panel navigasi sisi kiri. Daftar Pod menunjukkan contoh Pod berhasil dijadwalkan ke node yang sesuai, mengonfirmasi bahwa penjadwalan berdasarkan label model kartu GPU berfungsi dengan benar.

      Kecualikan model kartu

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

      Pada values: - "Tesla-V100-SXM2-32GB", ganti Tesla-V100-SXM2-32GB dengan model kartu aktual node Anda.

      Detail 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 job dibuat, aplikasi tidak akan dijadwalkan ke node dengan kunci label aliyun.accelerator/nvidia_name dan nilai Tesla-V100-SXM2-32GB, tetapi dapat dijadwalkan ke node GPU dengan model kartu lain.