Blogpost: Virtuelle Maschinen (VMs) innerhalb eines Kubernetes-Clusters ausführen und verwalten. Cloud-native Anwendungsentwicklung im Fokus…
Zum Hintergrund dieses Blogpost
Kubernetes als bewährte Container-Orchestrierungsplattform ist bei einer Vielzahl von Unternehmen im Einsatz, die Cloud-native Anwendungen entwickeln. Noch relativ neu ist die container-native Virtualisierung mit KubeVirt. Damit lassen sich virtuelle Maschinen (VMs) innerhalb eines Kubernetes-Clusters ausführen und verwalten. (Stand: Juli 2025).
Der open-source-Projektansatz von KubeVirt - ein sog. Cloud Native Computing Foundation incubating project** ermöglicht es, VMs wie Container zu behandeln und die Orchestrierungsfunktionen von Kubernetes für beide Plattformen zu nutzen. KubeVirt packt VMs dazu in Container, sodass sie zusammen mit containerisierten Anwendungen innerhalb derselben Kubernetes-Umgebung verwaltet werden. Warum kann das wichtig werden?
Integration von VMs in Kubernetes mit KubeVirt
Bei der traditionellen Virtualisierung werden VMs auf Hypervisor-Systemen ausgeführt, getrennt von containerisierten Anwendungen. KubeVirt ermöglicht es, VMs als Pods innerhalb eines Kubernetes-Clusters auszuführen, die von derselben Steuerungsebene und denselben Toolsets verwaltet werden. Durch die Integration von VMs in Kubernetes mit KubeVirt ergeben sich für Anwender dabei mehrere Vorteile:
- "Vereinfachte Infrastruktur: Konsolidiert VM- und Container-Workloads auf einer Plattform, wodurch Infrastrukturkosten und Komplexität reduziert werden können.
- Optimierte Portabilität und Skalierbarkeit: Nutzt die Skalierbarkeit von Kubernetes sowohl für VM- als auch für Container-Workloads.
- Einheitliche Verwaltung: VMs und Container können mit denselben Kubernetes-Tools und -Workflows verwaltet werden.
- Tiefere Integration: Ermöglicht die Ausführung von VMs neben containerisierten Anwendungen, was die Migration von Legacy-Anwendungen vereinfacht."
KubeVirt und Storage
KubeVirt nutzt das Container Storage Interface, CSI (und Container Network Interface, CNI) zur Integration mit Speicher-/Netzwerklösungen und ermöglicht die Live-Migration sowie Vernetzung von VMs innerhalb des Clusters. Hintergrund: Um persistenten Speicher für container-Apps bereitzustellen, gehören neben modernen Cloud-nativen Speicherlösungen für orchestrierte Systeme auch Möglichkeiten zur Einbindung älterer Software-definierter Plattformen sowie klassische (block / file) Unternehmens-Speichersysteme.
Für Kubernetes können Entwickler mithilfe von CSI Plugins schreiben, um neue Speichersysteme bereitzustellen, ohne dabei Kubernetes selbst zu modifizieren. Der Speicher läßt sich über Cluster-Ressourcen dann dynamisch verwalten. Optionen wie Persistent Volume Claims zur Bereitstellung von dynamischen Speicherplatz, Storage Class als Bereitstellung von Speicher mit verschiedenen Serviceklassen sowie Persistent Volume Storage stehen zudem zur Verfügung.
Das Interesse an der Bereitstellung von Stateful-Applikationen auf (Kubernetes-)Clustern steigt auch deshalb, weil man sich aus Zeit- und Ressourcen-Gründen nicht immer auf ein separates Team verlassen kann, das den Speicher extern verwaltet. Beispiel Docker: Volumes können generell mit Volume Plugins verwaltet werden. Anmerkung: Ein externer Unternehmensspeicher bietet je nach Anwendungsprofil darüber hinaus noch umfangreichere, optimierte Speicherdienste bei höherer Ausfallsicherheit.
Wichtig bei der Auswahl einer Lösung ist in diesem Zusammenhang, dass in jedem Fall eine konsistente Anwendungsleistung mit entsprechenden QoS nebst hohem Automatisierungsgrad und definierten SLAs möglich ist. Fazit aus Storagesicht: hochintegrierte Cloud-nativer Speicherstacks für containerisierte Anwendungsumgebungen unterstützen zustandsabhängige Workloads innerhalb von Containern sehr effektiv, indem persistente Volumes als Service bereitstellt werden können.
Anwendungsbeispiel für KubeVirt
Eine ältere aber weiter wichtige Applikation, die sich nur schwer containerisieren lässt...
Mit KubeVirt wird die Anwendung in einer VM innerhalb des Kubernetes-Clusters ausgeführt und kann dabei weiterhin von den Funktionen von Kubernetes wie Skalierung und Hochverfügbarkeit profitieren. Vorteil: Virtualisierte Workloads können damit direkt in Entwicklungs-Workflows integriert werden. Die Plattform schließt so die Lücke zwischen traditioneller Virtualisierung und agiler Container-basierter Applikationsentwicklung.
Abb.: KubeVirt v1.5.0. Bildquelle: Externer link > https://kubevirt.io/2025/changelog-v1.5.0.html
Virtualisierung und Containerisierung
- "VMs lassen sich direkt in die Kubernetes-Welt bringen, um eine effizientere und optimierte Verwaltung zu erreichen.
- KubeVirt und Kubernetes Nutzung, um virtuelle Maschinen für Anwendungen zu verwalten, die sich nicht für die Containerisierung eignen.
- KubeVirt und VMs Kombination, um bestehende virtualisierte Workloads mit neuen Container-Workloads auf einer Plattform zu betreiben
-
Containerisierte Anwendungen, um die Entwicklung neuer Microservice-Anwendungen in Containern voranzutreiben, die mit bestehenden virtualisierten Anwendungen interagieren können."
Fazit
Organisationen die bestehende Workloads auf Basis virtueller Maschinen nutzen, können Anwendungen schnell in Container umwandeln. Durch die direkte Einbindung virtualisierter Workloads in Entwicklungs-Workflows können diese im Laufe der Zeit aufgeteilt und gleichzeitig die verbleibenden virtualisierten Komponenten je nach Bedarf weiter genutzt werden.
** Quelle / externer Link > https://kubevirt.io/
Querverweis:
Unser Beitrag > Was Softwarearchitekten über Managed Kubernetes wissen sollten
Unser Podcast > Persistenter Speicher und Cloud-native IT-Infrastrukturen