Chuyển tới nội dung chính

Hướng dẫn sử dụng DRA cho GPU

DRA (Dynamic Resource Allocation) là cơ chế quản lý tài nguyên thiết bị trong Kubernetes, được phát hành ở trạng thái General Availability (GA) từ Kubernetes v1.34. DRA cho phép workload yêu cầu và sử dụng tài nguyên phần cứng như GPU theo cách linh hoạt hơn so với cơ chế Device Plugin truyền thống.

Thay vì chỉ yêu cầu một số lượng GPU cố định (ví dụ: nvidia.com/gpu: 1), DRA cho phép workload yêu cầu thiết bị dựa trên các thuộc tính cụ thể như loại GPU, dung lượng bộ nhớ hoặc các đặc tính phần cứng khác. Điều này giúp tối ưu khả năng sử dụng GPU, hỗ trợ các mô hình chia sẻ tài nguyên và tạo nền tảng cho các cơ chế phân bổ GPU nâng cao.

Điều kiện sử dụng DRA trên Managed Kubernetes with GPU

  1. Cluster sử dụng Kubernetes phiên bản v1.34 hoặc mới hơn
  2. GPU Driver được cài đặt type Managed-install, sử dụng phiên bản NVIDIA Driver từ 570 trở lên. Hiện tại, chỉ GPU H100 hoặc GPU H200 sử dụng được với type Managed-install
  3. kubectl

Hướng dẫn cài đặt DRA

Bước 1: Tạo cluster với worker group sử dụng GPU H100/H200

Lưu ý: cần chọn Driver Installation Type = Managed-install, driver version >= 570

Trên các worker group GPU, thêm/chỉnh sửa label với giá trị sau:

nvidia.com/gpu.deploy.device-plugin: "false"

Với worker group BASE, thêm label:

node-role.kubernetes.io/control-plane: "secondary"

Bước 2: Cài đặt DRA GPU Driver

Cài đặt Helm CLI:

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Thêm repo NVIDIA:

helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \
&& helm repo update

Cài đặt GPU DRA version 25.3.2:

helm install nvidia-dra-driver-gpu nvidia/nvidia-dra-driver-gpu --version="25.3.2" --create-namespace --namespace nvidia-dra-driver-gpu \
--set gpuResourcesEnabledOverride=true \
--set controller.affinity=null \
--set nvidiaDriverRoot=/run/nvidia/driver

Bước 3: Kiểm tra cài đặt

Kiểm tra DRA Driver pod:

kubectl get pod -n nvidia-dra-driver-gpu

Kiểm tra DRA CRDs:

kubectl get deviceclass,resourceslice

Triển khai GPU workload sử dụng DRA Driver

Ví dụ cơ bản mô tả cách sử dụng DRA GPU.

Bước 1: Tạo ResourceClaimTemplate

apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
name: single-gpu
spec:
spec:
devices:
requests:
- exactly:
allocationMode: ExactCount
deviceClassName: gpu.nvidia.com
count: 1
name: gpu

Tạo Pod sử dụng ResourceClaim để yêu cầu GPU từ DRA Driver

apiVersion: v1
kind: Pod
metadata:
name: pod1
labels:
app: pod
spec:
containers:
- name: ctr
image: ubuntu:22.04
command: ["bash", "-c"]
args: ["nvidia-smi -L; trap 'exit 0' TERM; sleep 9999 & wait"]
resources:
claims:
- name: gpu
resourceClaims:
- name: gpu
resourceClaimTemplateName: single-gpu

Kiểm tra ResourceClaim

kubectl get resourceclaim <claim-name>

Kiểm tra Pod

kubectl exec -it <pod> -- nvidia-smi