All Products
Search
Document Center

Container Service for Kubernetes:Gunakan penjadwalan GPU Kubernetes default

Last Updated:Jun 18, 2026

Container Service for Kubernetes (ACK) mendukung penjadwalan dan operasi GPU. Mode penggunaan GPU default-nya mengikuti pola komunitas Kubernetes hulu. Topik ini memandu Anda dalam menerapkan workload TensorFlow contoh untuk memvalidasi penjadwalan GPU.

Prasyarat

Pastikan Anda memiliki:

  • Kluster ACK dengan setidaknya satu node GPU

  • kubectl yang telah dikonfigurasi untuk terhubung ke kluster

  • Akses ke Konsol ACK

Hindari melewati permintaan sumber daya GPU standar

Untuk node GPU yang dikelola ACK, mintalah sumber daya GPU hanya melalui mekanisme sumber daya ekstensi Kubernetes standar (nvidia.com/gpu dalam resources.limits). Tindakan berikut melewati mekanisme ini dan menimbulkan risiko keamanan:

  • Menjalankan aplikasi GPU secara langsung di node

  • Menggunakan docker, podman, atau nerdctl untuk membuat kontainer atau meminta sumber daya GPU (misalnya, docker run --gpus all atau docker run -e NVIDIA_VISIBLE_DEVICES=all)

  • Menambahkan NVIDIA_VISIBLE_DEVICES=all atau NVIDIA_VISIBLE_DEVICES=<GPU ID> ke bagian env file YAML Pod

  • Menggunakan variabel lingkungan NVIDIA_VISIBLE_DEVICES untuk meminta sumber daya GPU bagi sebuah Pod

  • Menetapkan nilai default NVIDIA_VISIBLE_DEVICES menjadi all dalam gambar kontainer jika tidak diatur dalam file YAML Pod

  • Menyetel privileged: true dalam securityContext Pod dan menjalankan program GPU

Mengapa ini penting: Permintaan GPU non-standar tidak terlihat oleh pelacakan sumber daya penjadwal. Ketidaksesuaian ini dapat menyebabkan penjadwal mengalokasikan GPU secara berlebihan pada suatu node, sehingga beberapa Pod bersaing untuk kartu GPU yang sama (misalnya, bersaing untuk memori GPU) dan menyebabkan kegagalan workload. Metode-metode ini juga dapat memicu error yang dilaporkan komunitas NVIDIA.

Verifikasi ketersediaan GPU

Sebelum menerapkan workload, pastikan node GPU Anda mengekspos kapasitas GPU ke penjadwal Kubernetes.

  1. Tampilkan daftar node dalam kluster:

    kubectl get nodes
  2. Jelaskan detail node GPU untuk memeriksa kapasitasnya:

    kubectl describe node <gpu-node-name>

    Dalam bagian Capacity, nvidia.com/gpu harus menunjukkan nilai bukan nol:

    Capacity:
     nvidia.com/gpu: 1

    Jika nvidia.com/gpu tidak ada atau menunjukkan 0, plugin perangkat NVIDIA mungkin tidak berjalan di node tersebut. Periksa penerapan DaemonSet plugin, driver GPU, dan konfigurasi node sebelum melanjutkan.

Terapkan aplikasi GPU

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

  2. Di halaman Clusters, klik kluster target. Di panel navigasi kiri, pilih Workloads > Deployments.

  3. Di halaman Deployments, klik Create from YAML dan tempel manifes berikut:

    apiVersion: v1
    kind: Pod
    metadata:
      name: tensorflow-mnist
      namespace: default
    spec:
      containers:
      - image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
        name: tensorflow-mnist
        command:
        - python
        - tensorflow-sample-code/tfjob/docker/mnist/main.py
        - --max_steps=100000
        - --data_dir=tensorflow-sample-code/data
        resources:
          limits:
            nvidia.com/gpu: 1  # Meminta satu kartu GPU untuk kontainer ini.
        workingDir: /root
      restartPolicy: Always
    Sumber daya ekstensi GPU hanya memerlukan limits, bukan requests. Kubernetes tidak mengizinkan requests tanpa limits yang sesuai untuk sumber daya ekstensi. Penjadwal menggunakan nilai limits sebagai permintaan efektif.
  4. Di panel navigasi kiri, pilih Workloads > Pods. Temukan dan klik Pod tersebut.

  5. Klik tab Logs. Proses pull gambar dan startup Pod mungkin memerlukan beberapa menit. Setelah berjalan, output log mengonfirmasi bahwa penjadwalan GPU berfungsi dengan benar.

    image.png

Langkah selanjutnya

  • Untuk menargetkan jenis GPU tertentu dalam kluster heterogen, gunakan label node dan selector. Beri label node GPU berdasarkan tipe akselerator (misalnya, kubectl label nodes <node-name> accelerator=<gpu-model>), lalu tambahkan nodeSelector ke spesifikasi Pod Anda.

  • Untuk opsi penjadwalan GPU lanjutan seperti berbagi dan isolasi GPU, lihat dokumentasi penjadwalan GPU ACK.