KubeVirt erweitert Kubernetes um die Fähigkeit, vollwertige virtuelle Maschinen neben Container-Workloads auszuführen. Dies geschieht durch eine Reihe von Custom Resource Definitions (CRDs), welche die Virtualisierung in die Kubernetes-API integrieren.
KubeVirt wurde ursprünglich von Red Hat initiiert und wird mittlerweile als CNCF-Projekt geführt. Ziel ist es, Containerisierung und Virtualisierung auf einer Plattform zu vereinen, ohne separate Managementsysteme wie OpenStack oder vSphere betreiben zu müssen.
Warum ist das relevant?
Viele Unternehmen betreiben hybride Workloads: Einige Anwendungen laufen in Containern, andere (z. B. legacy oder spezielle Systeme) weiterhin in VMs. KubeVirt bietet einen nahtlosen Weg, beides zentral über Kubernetes zu verwalten – mit einheitlichen Tools, Policies und CI/CD-Prozessen.
Technische Architektur & Funktionsweise von KubeVirt
KubeVirt ist kein Hypervisor im klassischen Sinn, sondern ein Operator, der bestehende Virtualisierungstechnologien in Kubernetes einbettet – insbesondere KVM (Kernel-based Virtual Machine).
Zentrale Komponenten von KubeVirt
| Komponente | Funktion |
|---|---|
| KubeVirt Operator | Installation, Management und Lifecycle von KubeVirt-Komponenten |
| VirtualMachine (VM) CRD | Repräsentiert eine virtuelle Maschine als Kubernetes-Ressource |
| VirtualMachineInstance (VMI) | Laufzeitinstanz einer VM |
| virt-launcher | Sidecar-Container, der KVM-VMs in Pods ausführt |
| virt-handler | Überwacht den Lifecycle von VMs auf dem Node |
| virt-controller | Verantwortlich für das Scheduling und Starten von VMs |
| libvirt/qemu | Unterliegende Virtualisierungsschicht, eingebettet in Container |
| ContainerDisk/ImageDisk | VM-Images im Containerformat (z. B. QCOW2) |
Wie funktioniert eine VM in Kubernetes?
- Der Nutzer erstellt ein Objekt vom Typ
VirtualMachineper YAML oder API. - KubeVirt erzeugt daraus eine
VirtualMachineInstance, ähnlich wie ein Pod. - Auf dem Ziel-Node wird ein Pod mit einem
virt-launchererstellt, der QEMU/KVM in einem isolierten Container ausführt. - Die VM läuft im Kontext eines Kubernetes-Pods und kann mit Netzwerk, Storage und Monitoring-Tools wie ein Container verwaltet werden.
Beispiel: YAML-Definition einer VM
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: ubuntu-vm
spec:
running: true
template:
metadata:
labels:
kubevirt.io/domain: ubuntu-vm
spec:
domain:
devices:
disks:
- disk:
bus: virtio
name: rootdisk
resources:
requests:
memory: 2Gi
volumes:
- name: rootdisk
containerDisk:
image: kubevirt/ubuntu-cloud-image
Anwendungsbeispiele für KubeVirt
- Lift-and-Shift von Legacy-Anwendungen ohne vollständige Containerisierung
- Testumgebungen mit VMs und Containern auf derselben CI/CD-Plattform
- Edge-Computing: Ausführung von Containern und VMs auf Edge-Nodes
- Cloud-native VDI (Virtual Desktop Infrastructure)
- Hybrid-Cloud-Szenarien mit OpenShift, Rancher oder anderen K8s-Distributionen
Vorteile von KubeVirt
- Unified Management: Einheitliche API und Deployment-Mechanismen für Container und VMs
- Wiederverwendung vorhandener Toolchains: Monitoring, Logging, CI/CD auch für VMs
- Ressourcenteilung: VMs und Container teilen sich das Cluster
- Isolation durch KVM: VMs laufen vollständig virtualisiert mit starker Isolierung
- Kubernetes-native: Kein separater Hypervisor oder Management-Stack nötig
Nachteile & Herausforderungen von KubeVirt
- Performance-Overhead: Virtualisierung in Pods bringt leichten Mehraufwand
- Netzwerk-Setup komplexer: Multus, SR-IOV etc. notwendig für komplexe Netze
- Storage-Integration: Erfordert Kenntnisse zu Persistenz in Kubernetes
- Noch nicht Feature-parity: Snapshotting, GPU, Migration eingeschränkt
- Komplexe Fehlersuche: Debugging in VM-Container-Kombination kann herausfordernd sein
Fazit: Wann lohnt sich KubeVirt?
KubeVirt ist eine leistungsstarke Lösung für Organisationen, die auf Kubernetes setzen, aber weiterhin VMs benötigen. Es bietet eine moderne, DevOps-freundliche Alternative zu klassischen Virtualisierungsplattformen, reduziert Infrastruktur-Silos und ermöglicht hybride Workloads auf einer Plattform.
Geeignet für:
- Kubernetes-first-Strategien
- CI/CD für VM-basierte Software
- Hybride Anwendungen in Dev, Test & Prod
- Cloud-native Rechenzentren
Weniger geeignet für:
- High-Performance-Virtualisierung (z. B. HPC)
- Standalone Virtualisierung ohne Kubernetes-Stack




Autor