ปัจจุบันไดรเวอร์ทรัพยากร DRA นี้อยู่ระหว่างการพัฒนาที่ใช้งานอยู่และยังไม่ได้ออกแบบมาเพื่อการใช้งานการผลิต เราอาจ (บางครั้ง) ตัดสินใจที่จะผลักดันการกระทำมากกว่า main
จนกว่าเราจะมีสิ่งที่มั่นคงกว่า ใช้ความเสี่ยงของคุณเอง
เอกสารและการสาธิตของการสนับสนุน DRA สำหรับ GPU ที่จัดทำโดย repo นี้สามารถดูได้ด้านล่าง:
เอกสาร | การสาธิต |
---|---|
ส่วนนี้อธิบายการใช้ kind
เพื่อสาธิตการทำงานของไดรเวอร์ Nvidia GPU DRA
ก่อนอื่นเราจะเปิดตัวด้วยการสนับสนุน GPU ให้ตรวจสอบให้แน่ใจว่าได้ปฏิบัติตามข้อกำหนดเบื้องต้นต่อไปนี้:
ติดตั้ง kind
ดูเอกสารอย่างเป็นทางการที่นี่
ตรวจสอบให้แน่ใจว่ามีการติดตั้งชุดเครื่องมือคอนเทนเนอร์ NVIDIA ในระบบของคุณ สามารถทำได้โดยทำตามคำแนะนำที่นี่
กำหนดค่ารันไทม์คอนเทนเนอร์ NVIDIA เป็นรันไทม์ Docker เริ่มต้น :
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
รีสตาร์ท Docker เพื่อใช้การเปลี่ยนแปลง:
sudo systemctl restart docker
ตั้งค่าตัวเลือก accept-nvidia-visible-devices-as-volume-mounts
เป็น true
ในไฟล์ /etc/nvidia-container-runtime/config.toml
เพื่อกำหนดค่ารันไทม์คอนเทนเนอร์ Nvidia เพื่อใช้การติดตั้งปริมาณเพื่อเลือกอุปกรณ์เพื่อฉีดเข้าไปใน A คอนเทนเนอร์.
sudo nvidia-ctk config --in-place --set accept-nvidia-visible-devices-as-volume-mounts=true
แสดงชุด GPUs ปัจจุบันบนเครื่อง:
nvidia-smi -L
เราเริ่มต้นด้วยการโคลนที่เก็บข้อมูลนี้และ cd
เป็นครั้งแรก สคริปต์และตัวอย่างข้อมูลเฉพาะทั้งหมดที่ใช้ในการสาธิตนี้อยู่ในไดเรกทอรี demo
ดังนั้นใช้เวลาสักครู่เพื่อเรียกดูไฟล์ต่าง ๆ และดูว่ามีอะไรบ้าง:
git clone https://github.com/NVIDIA/k8s-dra-driver.git
cd k8s-dra-driver
นี่คือตัวอย่างที่แสดงวิธีการติดตั้งและกำหนดค่า DRA และเรียกใช้พ็อดในคลัสเตอร์ kind
บนเวิร์กสเตชัน Linux
ด้านล่างนี้เป็นคำแนะนำโดยละเอียดทีละขั้นตอน
ก่อนอื่นให้สร้างคลัสเตอร์ kind
เพื่อเรียกใช้การสาธิต:
./demo/clusters/kind/create-cluster.sh
จากที่นี่เราจะสร้างภาพสำหรับไดรเวอร์ทรัพยากรตัวอย่าง:
./demo/clusters/kind/build-dra-driver.sh
นอกจากนี้ยังทำให้ภาพที่สร้างขึ้นสำหรับคลัสเตอร์ kind
ตอนนี้เราติดตั้งไดรเวอร์ Nvidia GPU DRA:
./demo/clusters/kind/install-dra-driver.sh
สิ่งนี้ควรแสดงสองฝักที่ทำงานในเนมสเปซ nvidia-dra-driver
:
kubectl get pods -n nvidia-dra-driver
NAME READY STATUS RESTARTS AGE
nvidia-k8s-dra-driver-kubelet-plugin-t5qgz 1/1 Running 0 44s
ในที่สุดคุณสามารถเรียกใช้ตัวอย่างต่าง ๆ ที่มีอยู่ใน demo/specs/quickstart
ด้วยการอัปเดตล่าสุดสำหรับ Kubernetes v1.31 มีเพียงตัวอย่างแรก 3 ตัวอย่างแรกในโฟลเดอร์นี้เท่านั้นที่ใช้งานได้
คุณสามารถเรียกใช้ดังนี้:
kubectl apply --filename=demo/specs/quickstart/gpu-test{1,2,3}.yaml
รับสถานะของพ็อด ขึ้นอยู่กับ GPU ที่มีอยู่การรันสามตัวอย่างแรกจะสร้างผลลัพธ์คล้ายกับต่อไปนี้ ...
หมายเหตุ: มีปัญหาที่ทราบกันดี คุณอาจเห็นข้อผิดพลาดในขณะที่พยายามที่จะส่งบันทึกของ POD ที่กำลังทำงานอยู่ในคลัสเตอร์ชนิด: failed to create fsnotify watcher: too many open files.
ปัญหาอาจได้รับการแก้ไขโดยการเพิ่มมูลค่าสำหรับ fs.inotify.max_user_watches
kubectl get pod -A -l app=pod
NAMESPACE NAME READY STATUS RESTARTS AGE
gpu-test1 pod1 1/1 Running 0 34s
gpu-test1 pod2 1/1 Running 0 34s
gpu-test2 pod 2/2 Running 0 34s
gpu-test3 pod1 1/1 Running 0 34s
gpu-test3 pod2 1/1 Running 0 34s
kubectl logs -n gpu-test1 -l app=pod
GPU 0: A100-SXM4-40GB (UUID: GPU-662077db-fa3f-0d8f-9502-21ab0ef058a2)
GPU 0: A100-SXM4-40GB (UUID: GPU-4cf8db2d-06c0-7d70-1a51-e59b25b2c16c)
kubectl logs -n gpu-test2 pod --all-containers
GPU 0: A100-SXM4-40GB (UUID: GPU-79a2ba02-a537-ccbf-2965-8e9d90c0bd54)
GPU 0: A100-SXM4-40GB (UUID: GPU-79a2ba02-a537-ccbf-2965-8e9d90c0bd54)
kubectl logs -n gpu-test3 -l app=pod
GPU 0: A100-SXM4-40GB (UUID: GPU-4404041a-04cf-1ccf-9e70-f139a9b1e23c)
GPU 0: A100-SXM4-40GB (UUID: GPU-4404041a-04cf-1ccf-9e70-f139a9b1e23c)
ลบคลัสเตอร์ที่สร้างขึ้นในขั้นตอนก่อนหน้า:
./demo/clusters/kind/delete-cluster.sh