Dokumen ini menjelaskan cara menyiapkan infrastruktur Google Kubernetes Engine (GKE) secara manual untuk mendukung alokasi resource dinamis (DRA). Langkah-langkah penyiapan mencakup pembuatan node pool yang menggunakan GPU dan penginstalan driver DRA.
Dokumen ini ditujukan untuk administrator platform yang ingin membuat infrastruktur dengan perangkat hardware khusus yang dapat diklaim oleh operator aplikasi dalam workload.
Batasan
Batasan berikut berlaku:
- Batasan DRA di GKE
- Batasan khusus perangkat, yang berlaku terlepas dari apakah Anda menggunakan DRA: workload GPU di cluster Standar
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.
Memiliki cluster GKE Standar yang menjalankan versi 1.35 atau yang lebih baru. Anda juga dapat membuat cluster regional.
Instal Helm. Jika Anda menggunakan Cloud Shell, Helm sudah terinstal.
Membuat node pool GKE dengan GPU
Bagian ini menunjukkan cara membuat node pool GPU dan menginstal driver DRA yang sesuai. Langkah-langkah di bagian ini hanya berlaku untuk node pool yang Anda buat secara manual. Untuk membuat node pool GPU yang mendukung DRA, Anda harus melakukan hal berikut:
- Menonaktifkan penginstalan driver GPU otomatis: tentukan opsi
gpu-driver-version=disableddalam flag--accelerator. - Menonaktifkan plugin perangkat GPU: tambahkan label node
gke-no-default-nvidia-gpu-device-plugin=trueke node pool. - Menjalankan DaemonSet driver DRA: tambahkan
nvidia.com/gpu.present=truelabel node ke node pool. - Mengonfigurasi penskalaan otomatis: untuk menggunakan penskala otomatis cluster di node pool,
tambahkan label node
cloud.google.com/gke-nvidia-gpu-dra-driver=trueke node pool. Penskala otomatis cluster menggunakan label node ini untuk mengidentifikasi node yang menjalankan driver DRA untuk GPU.
Untuk membuat dan mengonfigurasi node pool GPU, ikuti langkah-langkah berikut:
Buat node pool GPU. Contoh perintah berikut membuat node pool dengan konfigurasi yang berbeda:
Buat node pool dengan instance
g2-standard-24yang memiliki dua GPU L4:gcloud container node-pools create NODEPOOL_NAME \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \ --machine-type="g2-standard-24" \ --accelerator="type=nvidia-l4,count=2,gpu-driver-version=disabled" \ --num-nodes="1" \ --node-labels=gke-no-default-nvidia-gpu-device-plugin=true,nvidia.com/gpu.present=trueGanti kode berikut:
NODEPOOL_NAME: nama untuk node pool Anda.CLUSTER_NAME: nama cluster Anda.CONTROL_PLANE_LOCATION: region atau zona dari bidang kontrol cluster, sepertius-central1atauus-central1-a.NODE_LOCATION1,NODE_LOCATION2,...: daftar zona yang dipisahkan koma, di region yang sama dengan bidang kontrol, untuk membuat node. Pilih zona yang memiliki ketersediaan GPU.
Buat node pool yang diskalakan otomatis dengan instance
a2-ultragpu-1gyang memiliki satu GPU NVIDIA A100 (80 GB) di setiap instance:gcloud container node-pools create NODEPOOL_NAME \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \ --enable-autoscaling \ --max-nodes=5 \ --machine-type="a2-ultragpu-1g" \ --accelerator="type=nvidia-a100-80gb,count=1,gpu-driver-version=disabled" \ --num-nodes="1" \ --node-labels=gke-no-default-nvidia-gpu-device-plugin=true,nvidia.com/gpu.present=true,cloud.google.com/gke-nvidia-gpu-dra-driver=true
Menginstal driver DRA
Tarik dan update diagram Helm yang berisi driver DRA NVIDIA:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo updateInstal driver GPU DRA NVIDIA dengan versi 25.8.0 atau yang lebih baru:
helm install nvidia-dra-driver-gpu nvidia/nvidia-dra-driver-gpu \ --version="25.8.0" --create-namespace --namespace=nvidia-dra-driver-gpu \ --set nvidiaDriverRoot="/home/kubernetes/bin/nvidia/" \ --set gpuResourcesEnabledOverride=true \ --set resources.computeDomains.enabled=false \ --set kubeletPlugin.priorityClassName="" \ --set 'kubeletPlugin.tolerations[0].key=nvidia.com/gpu' \ --set 'kubeletPlugin.tolerations[0].operator=Exists' \ --set 'kubeletPlugin.tolerations[0].effect=NoSchedule'Untuk node Ubuntu, tentukan jalur direktori
"/opt/nvidia"dalam flag--set nvidiaDriverRoot.
Memastikan infrastruktur Anda siap untuk DRA
Pastikan Pod driver DRA Anda berjalan:
kubectl get pods -n nvidia-dra-driver-gpuOutputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE nvidia-dra-driver-gpu-kubelet-plugin-52cdm 1/1 Running 0 46sKonfirmasi bahwa ResourceSlice mencantumkan perangkat hardware yang Anda tambahkan:
kubectl get resourceslices -o yamlOutputnya mirip dengan hal berikut ini:
apiVersion: v1 items: - apiVersion: resource.k8s.io/v1 kind: ResourceSlice metadata: # Multiple lines are omitted here. spec: devices: - attributes: architecture: string: Ada Lovelace brand: string: Nvidia cudaComputeCapability: version: 8.9.0 cudaDriverVersion: version: 13.0.0 driverVersion: version: 580.65.6 index: int: 0 minor: int: 0 pcieBusID: string: "0000:00:03.0" productName: string: NVIDIA L4 resource.kubernetes.io/pcieRoot: string: pci0000:00 type: string: gpu uuid: string: GPU-ccc19e5e-e3cd-f911-65c8-89bcef084e3f capacity: memory: value: 23034Mi name: gpu-0 - attributes: architecture: string: Ada Lovelace brand: string: Nvidia cudaComputeCapability: version: 8.9.0 cudaDriverVersion: version: 13.0.0 driverVersion: version: 580.65.6 index: int: 1 minor: int: 1 pcieBusID: string: "0000:00:04.0" productName: string: NVIDIA L4 resource.kubernetes.io/pcieRoot: string: pci0000:00 type: string: gpu uuid: string: GPU-f783198d-42f9-7cef-9ea1-bb10578df978 capacity: memory: value: 23034Mi name: gpu-1 driver: gpu.nvidia.com nodeName: gke-cluster-1-dra-gpu-pool-b56c4961-7vnm pool: generation: 1 name: gke-cluster-1-dra-gpu-pool-b56c4961-7vnm resourceSliceCount: 1 kind: List metadata: resourceVersion: ""