Mengaktifkan dan menggunakan GPU NVIDIA di VM dengan Runtime VM di GDC

Dokumen ini menunjukkan cara mengaktifkan dukungan NVIDIA® GPU untuk mesin virtual (VM) yang berjalan menggunakan VM Runtime di GDC. Anda akan mempelajari cara menginstal driver NVIDIA di GKE pada node Bare Metal, memverifikasi bahwa GPU tersedia, dan menetapkan GPU ke VM.

Sebelum memulai

Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke referensi berikut:

Kartu GPU Nvidia yang didukung

GKE di Bare Metal versi 1.13 atau yang lebih tinggi mendukung GPU NVIDIA berikut:

  • Tesla T4
  • Tesla P4
  • Tesla V100 SXM2 32 GB
  • A100 SXM4 40 GB
  • A100 PCIe 40 GB
  • A100 SXM4 80 GB
  • A100 PCIe 80 GB

Menginstal driver NVIDIA pada node

Sebelum VM dapat menggunakan GPU NVIDIA, Anda harus mengonfigurasi GKE pada node Bare Metal untuk mendukung perangkat GPU. Untuk menginstal driver NVIDIA pada node Anda, selesaikan langkah-langkah berikut pada setiap node di cluster Anda yang menyertakan GPU NVIDIA. Dokumen ini menggunakan versi Ubuntu yang didukung untuk node:

  1. Hubungkan ke GKE pada node Bare Metal yang ingin Anda konfigurasi untuk dukungan GPU.
  2. Dapatkan versi kernel node Anda:

    KERNEL_VERSION="$(uname -r)"
    
  3. Perbarui node Ubuntu Anda dan instal header kernel yang sesuai:

    sudo apt update && \
    apt install -y linux-headers-${KERNEL_VERSION}
    
  4. Instal paket build-essential agar Anda dapat mengompilasi driver Nvidia dalam langkah berikut:

    sudo apt install -y build-essential
    
  5. Download paket driver NVIDIA yang sesuai untuk GPU Anda. Untuk mengetahui daftar lengkap driver, lihat Download Driver NVIDIA.

    Contoh berikut mendownload driver Linux x86_64 versi 470.82.01:

    wget https://us.download.nvidia.com/tesla/470.82.01/NVIDIA-Linux-x86_64-470.82.01.run
    
  6. Instal paket driver NVIDIA. Gunakan nama paket driver NVIDIA yang Anda download di langkah sebelumnya:

    sudo sh NVIDIA-Linux-x86_64-470.82.01.run \
      --accept-license \
      --silent \
      --no-nouveau-check
    
  7. Muat modul kernel NVIDIA:

    sudo modprobe nvidia
    
  8. Ulangi langkah-langkah di bagian ini pada setiap node di cluster Anda yang memiliki GPU NVIDIA.

Mengaktifkan dukungan GPU di Runtime VM di GDC

Setelah menginstal driver NVIDIA di GKE pada node Bare Metal, Anda akan mengaktifkan dukungan GPU pada Runtime VM di GDC. VM Anda kemudian dapat mengakses GPU pada node.

Setiap node dimulai ulang sebagai bagian dari proses berikut. VM Anda mungkin terpengaruh oleh proses mulai ulang ini. Jika memungkinkan dan dikonfigurasi untuk melakukannya, VM yang dapat dimigrasikan akan dimigrasikan ke node lain. Untuk mengetahui informasi selengkapnya, lihat cara mengonfigurasi kebijakan penghapusan untuk VM selama peristiwa pemeliharaan.

Untuk mengaktifkan dukungan GPU di Runtime VM di GDC, selesaikan langkah-langkah berikut.

  1. Edit resource kustom VMRuntime:

    kubectl edit vmruntime vmruntime
    
  2. Tambahkan properti enableGPU: true ke manifes VMRuntime:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      enableGPU: true
    ...
    
  3. Simpan dan tutup resource kustom VMRuntime di editor Anda.

  4. Periksa status pengontrol GPU di namespace vm-system:

    kubectl get pods --namespace vm-system  -w
    

    Perlu waktu sekitar lima menit agar pengontrol berhasil diaktifkan. Tunggu hingga STATUS menampilkan Running untuk semua pengontrol GPU. Contoh output berikut menunjukkan status yang diinginkan:

    NAME                                          READY  STATUS    RESTARTS     AGE
    gpu-controller-controller-manager-gwvcb       2/2    Running   0            10m
    kubevirt-gpu-dp-daemonset-2lfkl               1/1    Running   0            10m
    kubevm-gpu-driver-daemonset-5fwh6             1/1    Running   0            10m
    nvidia-gpu-dp-daemonset-9zq2w                 1/1    Running   0            10m
    nvidia-mig-manager-5g7pz                      1/1    Running   0            10m
    vm-controller-controller-manager-7b6df6979b   2/2    Running   2 (13m ago)  14m
    
  5. Pastikan GPU tersedia untuk digunakan saat semua pengontrol GPU melaporkan statusnya sebagai Running:

    kubectl get gpuallocations --namespace vm-system
    

    Contoh output berikut menunjukkan bahwa GPU pada node tersedia untuk digunakan. Setiap node di cluster Anda yang memiliki dukungan GPU akan ditampilkan. Anda mengalokasikannya ke VM di bagian berikutnya:

    NAME       ALLOCATED   DEVICEMODEL
    bm-node1   true        Tesla A100 SXM4 40GB
    bm-node2   true        Tesla A100 SXM4 40GB
    

Alokasikan GPU untuk digunakan dengan VM

Dengan dukungan GPU yang dikonfigurasi di cluster Anthos pada node bare metal dan di Runtime VM di GDC, alokasikan GPU untuk digunakan dengan VM. Secara default, GPU dialokasikan untuk digunakan dengan pod (container).

  1. Edit resource kustom GPUAllocation untuk digunakan dengan VM. Langkah ini menetapkan GPU pada node untuk digunakan dengan VM:

    kubectl edit gpuallocation NODE_NAME --namespace vm-system
    

    Ganti NODE_NAME dengan nama node tempat Anda ingin mengalokasikan GPU.

  2. Mengonfigurasi jumlah GPU yang akan dialokasikan ke VM. Awalnya, semua GPU dialokasikan ke pod.

    Jumlah total GPU yang dialokasikan ke VM dan pod harus sama dengan jumlah GPU dalam node. Misalnya, Anda mungkin memiliki empat GPU di node Anda. Jika Anda mengalokasikan dua GPU ke VM, dua GPU akan tetap dialokasikan ke pod. Manifes GPUAllocation akan ditolak jika Anda mencoba mengalokasikan dua GPU ke VM dan satu GPU ke pod, karena satu GPU tidak dialokasikan.

    Perbarui jumlah GPU pada node yang ingin Anda alokasikan untuk digunakan dengan VM, seperti yang ditunjukkan pada contoh berikut:

    apiVersion: gpu.cluster.gke.io/v1
    kind: GPUAllocation
    metadata:
      name: gpu-w2
      namespace: vm-system
    spec:
      node: gpu-w2
      pod: 0
      vm: 4
    

    Dalam contoh ini, keempat GPU yang diinstal di node dialokasikan ke VM. Tidak ada GPU yang dialokasikan ke pod.

  3. Simpan dan tutup resource kustom GPUAllocation di editor Anda.

  4. Verifikasi bahwa GPU melaporkan status ALLOCATED-nya sebagai true:

    kubectl get gpuallocations --namespace vm-system
    

    Contoh output berikut menunjukkan bahwa GPU pada node tersedia untuk digunakan:

    NAME     ALLOCATED   DEVICEMODEL
    gpu-w1   true        Tesla A100 SXM4 40GB
    gpu-w2   true        Tesla A100 SXM4 40GB
    

Membuat VM dengan dukungan GPU

Kini Anda dapat membuat VM yang menggunakan GPU dari node. Di resource kustom VM, Anda menentukan nama dan jumlah GPU yang akan dialokasikan dari node.

  1. Dapatkan nama kartu GPU dari host:

    kubectl describe node NODE_NAME
    

    Ganti NODE_NAME dengan nama host yang nama GPU-nya ingin Anda dapatkan.

    Contoh output berikut menunjukkan bahwa nama GPU yang dapat dialokasikan pada node ini adalah NVIDIA_A100_SXM4_40GB:

    Name:               bm-node1
    Roles:              worker
    [...]
    Allocatable:
      cpu:                                         47810m
      [...]
      memory:                                      336929400Ki
      nvidia.com/gpu-vm-NVIDIA_A100_SXM4_40GB:     1
    [...]
    
  2. Buat manifes VirtualMachine, seperti my-gpu-vm.yaml, di editor pilihan Anda:

    nano my-gpu-vm.yaml
    
  3. Salin dan tempel manifes YAML berikut:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: VM_NAME-boot-dv
          boot: true
          gpu:
            model: nvidia.com/gpu-vm-GPU_NAME
            quantity: 1
    

    Dalam file YAML ini, tentukan setelan berikut:

    • VM_NAME: nama untuk VM Anda.
    • GPU_NAME: nama GPU dari node yang akan dialokasikan ke VM.
      • Nama GPU ini ditampilkan dalam output perintah kubectl describe node dari langkah sebelumnya, seperti NVIDIA_A100_SXM4_40GB.

    VM menghubungkan eth0 ke jaringan pod-network default.

    Boot disk dengan nama VM_NAME-boot-dv harus sudah ada. Untuk informasi selengkapnya, lihat Membuat dan mengelola disk virtual.

  4. Simpan dan tutup manifes VM di editor Anda.

  5. Buat VM menggunakan kubectl:

    kubectl apply -f my-gpu-vm.yaml
    
  6. Saat VM Anda berjalan, hubungkan ke VM dan pastikan hardware GPU tersedia.

Langkah selanjutnya