All Products
Search
Document Center

Container Service for Kubernetes:Aktifkan penjadwalan

Last Updated:Mar 26, 2026

Dalam Kluster ACK yang dikelola Pro, Anda dapat mengontrol alokasi resource GPU ke workload dengan menetapkan label penjadwalan pada node GPU. Label ini memungkinkan Anda mengonfigurasi akses eksklusif, komputasi bersama di beberapa Pod, penugasan berbasis topologi, atau perutean berdasarkan model perangkat keras—memberikan kontrol detail halus atas pemanfaatan resource dan penempatan workload.

Ikhtisar label penjadwalan

Label penjadwalan GPU menentukan kebijakan alokasi resource untuk suatu node. Satu node hanya mendukung satu mode penjadwalan GPU dalam satu waktu (eksklusif, bersama, atau berbasis topologi). Mengaktifkan satu mode secara otomatis mengatur resource ekstensi untuk semua mode lainnya menjadi 0.

Keempat mode penjadwalan berbeda dalam dua dimensi utama: apakah komputasi diisolasi dan apakah memori GPU diisolasi. Gunakan kriteria ini sebagai titik awal saat memilih mode:

Mode penjadwalanLabelKapan digunakan
Penjadwalan eksklusif (default)ack.node.gpu.schedule: defaultWorkload yang kritis terhadap kinerja dan membutuhkan GPU penuh — pelatihan model, komputasi kinerja tinggi (HPC).
Penjadwalan bersamaack.node.gpu.schedule: cgpuBeberapa tugas ringan konkuren — multitenansi, inferensi. Komputasi bersama dengan memori GPU terisolasi, berdasarkan teknologi cGPU Alibaba Cloud.
ack.node.gpu.schedule: core_memKomputasi terisolasi dan memori GPU terisolasi per Pod.
ack.node.gpu.schedule: shareKomputasi dan memori GPU bersama tanpa isolasi.
ack.node.gpu.schedule: mpsKomputasi bersama dengan memori GPU terisolasi, berdasarkan teknologi isolasi NVIDIA MPS yang dikombinasikan dengan teknologi cGPU Alibaba Cloud.
Kebijakan penempatan (untuk penjadwalan bersama pada node multi-GPU)ack.node.gpu.placement: binpackMaksimalkan pemanfaatan GPU atau kurangi konsumsi energi. Mengisi satu GPU sepenuhnya sebelum beralih ke GPU berikutnya. Default.
ack.node.gpu.placement: spreadKetersediaan tinggi. Mendistribusikan Pod ke GPU berbeda untuk mengurangi dampak kegagalan satu kartu.
Penjadwalan berbasis topologiack.node.gpu.schedule: topologyWorkload yang sensitif terhadap latensi komunikasi antar-GPU. Menetapkan kombinasi optimal GPU berdasarkan topologi fisik dalam satu node.
Penjadwalan berdasarkan model kartualiyun.accelerator/nvidia_name: <GPU_card_name>Mengarahkan pekerjaan ke node dengan model GPU tertentu, atau mengecualikan model tertentu menggunakan aturan afinitas node.
aliyun.accelerator/nvidia_mem: <memory_per_card>Filter berdasarkan memori GPU per kartu. Gunakan bersamaan dengan penjadwalan berdasarkan model kartu.
aliyun.accelerator/nvidia_count: <total_number_of_GPU_cards>Filter berdasarkan jumlah total kartu GPU pada node. Gunakan bersamaan dengan penjadwalan berdasarkan model kartu.
Label ack.node.gpu.placement hanya berlaku ketika penjadwalan bersama (cgpu, core_mem, share, atau mps) diaktifkan. Nilai binpack dan spread saling eksklusif—hanya satu kebijakan penempatan yang aktif per node dalam satu waktu.

Aktifkan fitur penjadwalan

Penjadwalan eksklusif

Node tanpa label penjadwalan GPU menggunakan penjadwalan eksklusif secara default. Setiap Pod mendapatkan satu kartu GPU penuh.

Menghapus label tidak memulihkan penjadwalan eksklusif jika mode lain sebelumnya diaktifkan. Untuk beralih kembali, tetapkan nilai label secara eksplisit: kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite.

Penjadwalan bersama

Penjadwalan bersama hanya tersedia untuk Kluster ACK yang dikelola Pro. Untuk informasi lebih lanjut, lihat Batasan.

Langkah 1: Instal komponen ack-ai-installer.

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

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

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

    Untuk detail tentang pengaturan kebijakan penjadwalan komputasi untuk layanan cGPU, lihat Instal dan gunakan layanan cGPU.
  4. Klik Deploy Cloud-native AI Suite. Pada halaman Cloud-native AI Suite, pastikan ack-ai-installer muncul dalam daftar komponen yang telah diinstal.

Langkah 2: Aktifkan penjadwalan bersama pada kelompok node.

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

  2. Pada halaman Node Pools, klik Create Node Pool. Konfigurasikan label node, lalu klik Confirm. Pertahankan nilai default untuk bidang lainnya. Untuk definisi label, lihat Ikhtisar label penjadwalan.

    • Penjadwalan bersama dasar: Klik ikon 节点标签 di samping Node Labels. Tetapkan Key ke ack.node.gpu.schedule dan tetapkan Value ke salah satu: cgpu, core_mem, share, atau mps. > Note: mps memerlukan komponen MPS Control Daemon. Lihat menginstal komponen MPS Control Daemon.

    • Kebijakan penempatan (hanya untuk node multi-GPU): Tambahkan label kedua. Klik ikon 节点标签, tetapkan Key ke ack.node.gpu.placement, dan tetapkan Value ke binpack atau spread.

Langkah 3: Verifikasi bahwa penjadwalan bersama telah diaktifkan.

Jalankan perintah yang sesuai untuk mode berbagi Anda. Ganti <NODE_NAME> dengan node dalam kelompok node target.

cgpu/share/mps

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 mengonfirmasi bahwa penjadwalan bersama cgpu, share, atau mps aktif.

core_mem

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"

Kedua bidang aliyun.com/gpu-core.percentage dan aliyun.com/gpu-mem harus bernilai bukan nol agar penjadwalan bersama core_mem aktif.

binpack

Gunakan tool kueri resource GPU bersama untuk memeriksa alokasi per GPU:

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

Setiap kolom GPUx(Allocated/Total) menunjukkan berapa banyak memori yang sedang digunakan pada kartu tersebut. GPU0 dialokasikan penuh (15/15) dan GPU1 dialokasikan sebagian (9/15), sedangkan GPU2 dan GPU3 kosong. Pola pengisian berurutan ini—mengisi satu kartu sebelum memulai kartu berikutnya—mengonfirmasi bahwa binpack aktif.

spread

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

GPU0, GPU1, dan GPU3 masing-masing menunjukkan 4/15, sedangkan GPU2 kosong. Pola alokasi terdistribusi ini—menyebarkan Pod ke berbagai kartu alih-alih mengisi satu kartu terlebih dahulu—mengonfirmasi bahwa spread aktif.

core_mem

binpack

spread

Penjadwalan berbasis topologi

Penjadwalan berbasis topologi hanya tersedia untuk Kluster ACK yang dikelola Pro. Untuk persyaratan versi, lihat Persyaratan versi komponen sistem.

  1. Instal komponen ack-ai-installer.

  2. Tambahkan label topologi ke node target:

    Setelah mengaktifkan penjadwalan berbasis topologi pada suatu node, node tersebut tidak lagi menerima workload GPU non-topologi. Untuk memulihkan penjadwalan eksklusif, jalankan: kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite.
    kubectl label node <NODE_NAME> ack.node.gpu.schedule=topology
  3. Verifikasi bahwa penjadwalan berbasis topologi telah diaktifkan:

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

    Output yang diharapkan:

    aliyun.com/gpu: "2"

    Nilai bukan nol pada bidang aliyun.com/gpu mengonfirmasi bahwa penjadwalan berbasis topologi aktif.

Penjadwalan berdasarkan model kartu

Penjadwalan berdasarkan model kartu menggunakan label node dan aturan afinitas node Kubernetes untuk mengikat pekerjaan ke perangkat keras GPU tertentu—atau menjauhkannya darinya.

Langkah 1: Periksa model kartu GPU pada node Anda.

kubectl get nodes -L aliyun.accelerator/nvidia_name

Kolom NVIDIA_NAME menunjukkan model GPU untuk setiap node:

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

Klik untuk melihat cara lain memeriksa model GPU.

Di Konsol ACK, buka Workloads > Pods. Klik Terminal di kolom Actions untuk Pod seperti tensorflow-mnist-multigpu-\*\*\*, lalu jalankan perintah berikut di dalam kontainer:

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

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

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

image

Langkah 2: Buat Pekerjaan dengan penjadwalan model kartu.

Di Konsol ACK, buka Workloads > Jobs dan klik Create From YAML. Kedua contoh berikut menggunakan label aliyun.accelerator/nvidia_name untuk mengontrol pemilihan model GPU.

image

Tentukan model GPU

Gunakan nodeSelector untuk mengikat pekerjaan ke node dengan model GPU tertentu. Ganti Tesla-V100-SXM2-32GB dengan model dari kluster Anda.

Klik 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, buka Workloads > Pods. Daftar Pod menunjukkan Pod dijadwalkan ke node yang cocok, mengonfirmasi bahwa penjadwalan label berdasarkan model kartu berfungsi.

Hindari model GPU

Gunakan nodeAffinity dengan NotIn untuk mencegah pekerjaan dijalankan pada node dengan model GPU tertentu. Ganti Tesla-V100-SXM2-32GB dengan model yang ingin dikecualikan.

Klik 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 berdasarkan 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, Pod tidak dijadwalkan pada node dengan label aliyun.accelerator/nvidia_name: Tesla-V100-SXM2-32GB, tetapi dapat dijalankan pada node GPU lainnya.

Kecualikan model kartu