- Published on
GPU in Containern: CDI, Sharing-Strategien und DRA
- Authors

- Name
- Phillip Pham
- @ddppham
GPU unter der Haube: CDI, Sharing und DRA
TL;DR
GPUs in Containern und Kubernetes funktionieren — aber effizientes Teilen und Zuweisen braucht Verständnis unter der Haube. Drei Schichten: CDI macht komplexe Geräte in Containern verfügbar, Sharing (Time-Slicing, MPS, MIG) bestimmt Auslastung vs. Isolation, DRA ersetzt starre Device-Plugins durch flexible Ressourcen-Claims. Ab Kubernetes 1.32 deckt DRA fast alle GPU-Use-Cases ab.
Das Treiber-Problem in Containern
Früher: GPU kaufen, Treiber installieren, App verlinken. Mit Containern muss der NVIDIA-Treiber (Kernel + User-Space) exakt zur Host-Version passen — schon ein Patch-Unterschied bricht den Container.
Die Lösung ist Runtime-Injection: Host-Treiber-Bibliotheken werden zur Laufzeit eingehängt, statt sie im Image zu bündeln. So bleiben Images über Maschinen mit verschiedenen Treiber-Versionen portabel.
CDI — der moderne Standard
CDI (Container Device Interface) ist der CNCF-Standard für komplexe Geräte in Containern. Die Spec definiert deklarativ Device-Nodes, Library-Mounts, Sockets, Env-Vars und Hooks. Hersteller (NVIDIA, Intel) erzeugen CDI-Specs; CDI-fähige Runtimes machen Geräte verfügbar.
Syntax-Beispiel: nvidia.com/gpu=<name> — ab Docker 25 direkt nutzbar. nvidia-ctk generiert Specs; Runtimes konsumieren sie. Das alte NVIDIA-Docker-Modell wird damit abgelöst.
Auf Kubernetes-Ebene kommen zwei Komponenten dazu:
| Ebene | Komponente |
|---|---|
| Host | NVIDIA-Container-Toolkit + Treiber |
| Cluster | Device-Plugin (enumeriert GPUs) + GPU Operator (automatisiert den Stack) |
Der GPU Operator erkennt GPU-Nodes, installiert den Software-Stack und bewirbt Ressourcen — ohne manuelles Infra-Basteln pro Node.
Drei Sharing-Strategien
| Strategie | Wie | Vorteil | Nachteil | Ideal für |
|---|---|---|---|---|
| Time-Slicing | CUDA-Prozesse zeitlich teilen | Einfach, viele Replicas | Performance-Einbußen, keine Memory-Limits | Batch-Jobs |
| MPS | GPU räumlich in Chunks | Memory-Garantien, parallel | Begrenzter Speicher pro Teil | Latenz-sensitive Apps |
| MIG | Hardware-Partitionierung | Echte Mini-GPUs, isoliert | Nur auf unterstützten GPUs | Harte Isolation |
Wichtig: Time-Slicing begrenzt den Speicher zwischen CUDA-Kontexten nicht — ein Prozess kann den VRAM fressen. MPS und MIG setzen Grenzen. Praxis-Einstieg zum Teilen: GPUs in Kubernetes.
Grenzen des Device-Plugin-Modells
nvidia.com/gpu: 2 wirkt simpel — und stößt schnell an Grenzen:
- kein Multi-GPU-Typ pro Node
- keine komplexen Constraints („mindestens 80 GB")
- keine Kontrolle über Oversubscription
- keine dynamische MIG-Provisionierung
- kein PCIe-Alignment (GPU + NIC auf demselben Pfad)
DRA: die flexible Zukunft
Dynamic Resource Allocation orientiert sich am Persistent-Volume-API: Device-Class + Resource-Claim statt flachem Zählen. Unter der Haube nutzt DRA CDI für die Geräte-Injektion.
Bausteine:
- Resource-Slice: Nodes bewerben reiche Objekte (z. B. „GH200, 90 GB") statt flacher Strings
- Device-Class: CEL-Expression, welche Geräte aus welchem Driver kommen
- Resource-Claim: Anfrage mit Constraints
- Scheduler: bindet passende Geräte
Damit werden möglich: kontrolliertes Sharing, GPU-Auswahl nach Memory, mehrere GPU-Typen pro Node, dynamisches Time-Slicing/MPS, PCIe-Alignment für schnelle Kommunikation — kritisch für verteiltes Training und Inference.
Reifegrad (Orientierung aus dem Talk): Kubernetes 1.30 deckte 6/12 GPU-Use-Cases, 1.31 etwa 8/12, 1.32 zielt auf 11/12.
Die ehrliche Einordnung:
- CDI ist Pflichtwissen — ohne saubere Geräte-Injektion keine portablen GPU-Container.
- Sharing-Strategie folgt dem Workload — Batch ≠ Latenz ≠ Isolation.
- Device-Plugins reichen für einfache Fälle — bei Constraints und Multi-Tenant stößt man an.
- DRA reift schnell — Upgrades und Driver-Reife mitplanen.
- PCIe/NUMA sind keine Details — falsche Topologie kostet Throughput; siehe auch KubeVirt und Multi-Tenant-GPUs.
Häufige Fragen
CDI oder NVIDIA-Docker?
CDI ist der Standardweg. NVIDIA-Docker ist Legacy; neue Setups sollten CDI nutzen.
Time-Slicing oder MIG?
Time-Slicing für Batch und einfache Dichte. MIG, wenn Isolation und Memory-Garantien Pflicht sind.
Brauche ich DRA sofort?
Für einfache nvidia.com/gpu: 1-Deployments nein. Sobald Sie Constraints, Sharing-Policies oder PCIe-Alignment brauchen: ja — und mit AI at Scale zusammen planen.
Fazit
GPU-Management wandert von „statisch und rigide" zu „dynamisch und flexibel" — über CDI und DRA. Wer die drei Sharing-Strategien und die Device-Plugin-Grenzen kennt, trifft bessere Kosten- und Performance-Entscheidungen.
Einstieg über GPUs in Kubernetes, Vertiefung über LLM Self-Hosting. Wir beraten die passende Sharing- und DRA-Strategie und betreiben den GPU-Stack produktionsreif.
Quellen & Weiterführende Links
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
KubeVirt für GPU-Clouds: Multi-Tenant mit DRA und NUMA
AI bricht starre GPU-Allokation. KubeVirt als Tenancy-Layer plus DRA ermöglicht flexible Passthrough-, vGPU- und MIG-Zuweisung in Multi-Tenant-GPU-Clouds.
Kubernetes für AI at Scale: von Cloud Native zu Accelerator Native
66 % der Kubernetes-Organisationen hosten GenAI. DRA, LLMD und Inference Gateway machen Hardware-Topologie zum Kern — der Leitfaden für KI-Plattformen auf Kubernetes.
Vom Docker-Compose-Pilot auf Kubernetes: wann es fällig ist
Compose trägt weiter als gedacht. Die vier Auslöser für den Umzug — und warum die meisten Mittelständler ihn nicht brauchen.
Bereit für KI im Mittelstand?
Nutzen Sie unsere 10 kostenlosen KI-Tools und Praxis-Guides – oder sprechen Sie direkt mit unseren Experten.
Pexon Consulting – KI-Beratung für den Mittelstand | Scaly Academy – Geförderte KI-Weiterbildung (KI-Spezialist, KI-Experte, Workflow-Automatisierung)