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
- Cluster sử dụng Kubernetes phiên bản v1.34 hoặc mới hơn
- 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 typeManaged-install - 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