tostphoto - stock.adobe.com

Das sollten Sie über Red Hat OpenShift Virtualization wissen

OpenShift Virtualization ist ein neues Feature der Red-Hat-OpenShift-Plattform, die es ermöglicht, VMs in Kubernetes-verwalteten Containerumgebungen erfolgreich zu betreiben.

OpenShift Virtualization ist ein Feature der Red Hat OpenShift Plattform und wurde zuvor als Container-native Virtualization (CNV) bezeichnet. OpenShift Virtulization wurde im April 2020 offiziell vom Unternehmen eingeführt. Sie soll vor allem Container-native Virtualisierung ermöglichen. Container und virtuelle Maschinen sollen so unter einer Virtualisierungsschicht zusammengefasst werden.

Diese neue Funktionalität basiert auf dem Open-Source-Projekt KubeVirt, die genau dies gewährleistet: virtuelle Maschinen lassen sich in Kubernetes-verwalteten Container-Plattformen betreiben. KubeVirt bietet Container-native Virtualisierung durch Nutzung von KVM, dem Linux-Kernel-Hypervisor, innerhalb eines Kubernetes-Containers. KubeVirt bietet Dienste, wie sie mit traditionellen Virtualisierungsplattformen verbunden sind, und soll so das Beste sowohl aus ausgereifter Virtualisierungsmanagement-Technologie als auch aus der Container-Orchestrierung des Kubernetes bieten. 

Abbildung 1: KubeVirt läuft sowohl auf Worker- als auch auf Master-Nodes.
Abbildung 1: KubeVirt läuft sowohl auf Worker- als auch auf Master-Nodes.

Die Modernisierung traditioneller Anwendungen, um von Tools wie Linux-Containern, Mikroservices und Kubernetes zu profitieren, ist eine häufige Komponente der digitalen Transformation. Diese Bemühungen können jedoch Zeit in Anspruch nehmen, insbesondere wenn Entwickler- und Betriebsteams zwei verschiedene Technologiesilos aufbauen und pflegen. Die OpenShift-Virtualisierung soll es Unternehmen ermöglichen, DevOps-Praktiken effektiver zu implementieren, wodurch die Produktivität gesteigert und die Kosten gesenkt werden können, während gleichzeitig die Anwendungsinnovation weitergeführt wird.

Optimierungspotenzial für Entwickler durch OpenShift Virtualization:

  • Ein konsistentes Entwicklungserlebnis über VMs, Container und serverlose Funktionen hinweg, wenn geschäftskritische Anwendungen wachsen und eine Mischung dieser Technologien umfassen. Alle Komponenten des Stacks von Unternehmensanwendungen, sowohl traditionelle als auch neue, können direkt über Red Hat OpenShift verwaltet werden.
  • Die Möglichkeit, VMs je nach Bedarf zu modernisieren oder nicht. VMs können auf OpenShift migriert werden, ohne dass eine vollständige Containerisierung erforderlich ist, so dass sie gemischte Anwendungen betreiben und im Laufe der Zeit (oder auch nicht) containerisiert werden können.
  • Volle Unterstützung für Windows-VMs mit älteren Windows-Versionen bis zurück zu 2008 mit der Möglichkeit, sie im Laufe der Zeit so umzugestalten, dass sie Windows-Container und Windows Server 2019 verwenden oder als reine VMs beibehalten werden können.

Vorteile für IT-Teams durch OpenShift Virtualization:

  • Moderne, konsistente und vereinfachte Verwaltung durch die Zusammenführung von Teams auf einer einzigen, vollständig offenen, produktionsbereiten Plattform, die den gesamten Anwendungsbestand eines Unternehmens abdecken kann.
  • Unterstützung von zustandsbehafteten Anwendungen, die Speicherplatz und herkömmliche Vor-Ort-Ressourcen benötigen, wodurch es einfacher wird, Mittel und Ressourcen für weitere Innovationen umzuwidmen.
  • Ein sinnvoller Einstieg in IT-Fähigkeiten und Betriebsmodelle der nächsten Generation mit einer einzigen, vereinheitlichten Plattform, die Kubernetes, serverlose und Service-Mesh-Fähigkeiten aufbaut.

Container-native Virtualisierung ermöglicht es Unternehmen, eine Plattform bereitzustellen, die dazu in der Lage ist:

  • Kürzere Markteinführungszeit: Die Anwendungen können nach Belieben architektonisch neu gestaltet werden, ohne dass ein großer Aufwand oder die Notwendigkeit einer gleichzeitigen Konvertierung in Cloud-native Anwendungen entsteht.
  • Geringere Kosten: Unnötiges Refactoring von Anwendungen wird eliminiert und Anwender erstellen stattdessen Services mit der richtigen zugrunde liegenden Plattform für die jeweiligen Geschäftsanforderungen mit vorhandenen Ressourcen.
  • Vereinfachtes Management: Der Overhead lässt sich verringern, indem die Verwaltung von virtuellen Maschinen und Containern mit einer einzigen Plattform zusammengefasst wird.
  • Container-native Virtualisierung ist ideal für Teams, die auf die Cloud-native Anwendungsentwicklung umsteigen und große Investitionen in herkömmliche virtuelle Maschinentechnologie tätigen.

So funktioniert Red Hat OpenShift Virtualization

Das Virtualisierungs-Feature operiert auf verschiedenen Ebenen und bringt eben dort entsprechende Vorteile, so Red Hat. Im Folgenden haben wir diese mithilfe von Red-Hat-Dokumentationen zusammengefasst.

Compute

Container verwenden Linux-Kernel-Technologie, insbesondere Namespaces und cgroups, um einen Prozess zu isolieren und Ressourcenkontrolle zu ermöglichen. Normalerweise werden diese Prozesse mit Python, Java oder einer binäre Anwendung verglichen, aber in Wirklichkeit kann es sich dabei um jeden beliebigen Prozess wie bash oder sogar um Systemwerkzeuge wie Emacs oder vim handeln.

Virtuelle Maschinen sind, aus der Perspektive des Hypervisors betrachtet, ebenfalls Prozesse. Es handelt sich nicht um einen Anwendungsprozess, sondern um einen KVM-Prozess, der für die Ausführung der virtuellen Maschine verantwortlich ist.

Abbildung 2: Architektur der Red Hat OpenShift Virtualization.
Abbildung 2: Architektur der Red Hat OpenShift Virtualization.

Das Container-Image bringt alle Werkzeuge, Bibliotheken und Binärdateien mit, die für die virtuelle KVM-Maschine benötigt werden. Betrachtet der Admin den Pod für eine laufende virtuelle Maschine, erkennt er die qemu-kvm-Prozesse und Helfer. Zusätzlich haben Anwender Zugang zu KVM-zentrierten Werkzeugen zur Verwaltung von VMs wie qemu-img, qemu-nbd und virsh.

Da es sich bei der virtuellen Maschine um einen Pod handelt, erbt sie die gesamte Funktionalität eines Pods von Kubernetes. Scheduling-Richtlinien wie Taints, Toleranzen, Affinität, Anti-Affinität und Vorteile von Pods wie Hochverfügbarkeit gelten automatisch, genau wie bei Nicht-VM-Pods. Ein Unterschied besteht jedoch darin, dass Pods nicht auf die gleiche Weise von Host zu Host migriert werden, wie es normalerweise eine virtuelle Maschine tut. Wird ein Knoten entleert, sollten die Pods beendet und auf andere Knoten im Cluster umgeplant werden. Bei einer virtuellen Maschine erfolgt normalerweise eine Live-Migration.

Um dem Rechnung zu tragen, wurde ein CRD für die Live-Migration mit der spezifischen Aufgabe der Initialisierung, Überwachung und Verwaltung von Live-Migrationen virtueller Maschinen zwischen Worker-Knoten erstellt.

Soll ein Knoten abgelöst werden, so erstellen virtuelle Maschinen automatisch Migrationsaufgaben, die LiveMigration wird umgangen. Dies gibt dem Anwendungsteam auch die Möglichkeit, das Verhalten ihrer virtuellen Maschinen zu steuern. Eine Live-Migration kann auch ausgeführt werden. Darüber hinaus lassen sich VMs wie Container behandeln, beenden oder neu planen.

Netzwerk

Bei jedem Kubernetes-Einsatz wird eine Software-definierte Netzwerktechnologie (SDN) verwendet, um die Konnektivität zwischen Pods und Knoten (Nodes) zu gewährleisten. OpenShift verwendet standardmäßig OpenShiftSDN. Mit OpenShift 4 wurde eine neue Funktion namens Multus eingeführt, die es ermöglicht, mehrere Netzwerke bereitzustellen und Pods gleichzeitig mit mehreren Netzwerken zu verbinden.

Administratoren verwenden Multus, um zusätzliche CNI-Netzwerke zu definieren, die dann vom Netzwerkbetreiber für den Cluster bereitgestellt und konfiguriert werden. Die Pods werden dann mit einem oder mehreren dieser Netzwerke verbunden, in der Regel mit dem standardmäßigen OpenShiftSDN und einer zusätzlichen Schnittstelle. SR-IOV-Geräte, Standard-Linux-Host-Bridges, MACVLAN- und IPVLAN-Geräte sind alle möglich, je nach den Anforderungen der virtuellen Maschine.

Für einen OpenShift Virtualization Pod bedeutet dies, dass die VM direkt mit einem externen Netzwerk verbunden werden kann, ohne dass die externe Konnektivität ausschließlich über das SDN erfolgen muss. Dies ist eine wichtige Funktion für virtuelle Maschinen, die aus einer anderen Umgebung migriert wurden, wie beispielsweise Red Hat Virtualization oder VMware vSphere, da dies bedeutet, dass sich die Konnektivität nicht ändert, solange das Layer-2-Netzwerk für die OpenShift-Arbeiterknoten noch zugänglich ist. Es bedeutet auch, dass virtuelle Maschinen über eine konsistente Konnektivität für IP-Persistenz, Geräte mit hohem Durchsatz und/oder dedizierte Ressourcen wie ein von einem Gast initiiertes Speichergerät verfügen können, ohne den Zugangs-/Abgangspfad des SDN durchlaufen zu müssen.

Darüber hinaus wird der nmstate Operator als Teil der OpenShift-Virtualisierung eingesetzt, wodurch eine weitere vertraute Methode zur Erstellung und Verwaltung der Netzwerkkonfiguration auf den physischen Arbeitern, die für Hypervisor verwendet werden, bereitgestellt wird.

Storage

Das Virtualisierungs-Feature verwendet die nativen Kubernetes-Speicherkonzepte StorageClasses, PersistentVolumeClaims (PVC) und PersistentVolumes (PV), die alle über die von Kubernetes unterstützten Standard-Speicherprotokolle verbunden sind, um VM-Festplatten anzuschließen und zu verwalten. Dies schafft eine einheitliche Methode für Kubernetes-Administratoren und Anwendungsteams, um sowohl Container als auch virtuelle Maschinen zu verwalten. Für Virtualisierungs-Administratoren ist dies ein Konzept, mit dem viele bereits vertraut sind, da es sich um dasselbe Prinzip handelt, das von OpenStack und vielen Cloud-Anbietern verwendet wird, um die Definition und den Speicher der VM getrennt zu verwalten.

Das Anschließen von Laufwerken an virtuelle Maschinen ist jedoch oft mehr als nur das Erstellen und Anschließen der Festplatte. Trotzdem ist es schneller und einfacher als das Erstellen neuer Laufwerke und ist eine Voraussetzung für den Import bestehender virtueller Maschinen, um ein vorhandenes Laufwerk zu verwenden. Egal, ob es sich um ein KVM-Image-Template oder einen Datenträger von einem anderen Hypervisor handelt, es ist nach Angaben des Herstellers schneller, als das Betriebssystem aus dem Nichts installieren zu müssen.

Um den Prozess zu vereinfachen, setzt OpenShift Virtualization das Containerized Data Importer (CDI)-Projekt ein, das den Import von Festplatten-Images aus verschiedenen Quellen so einfach wie eine Anmerkung (Annotation) zum PVC macht.

Die Anmerkung veranlasst den CDI, Maßnahmen zu ergreifen. An diesem Punkt sind eine Reihe von Aktionen möglich, wie in Abbildung 3 dargestellt.

Abbildung 3: Mögliche Aktionen für den CDI unter OpenShift Virtualization.
Abbildung 3: Mögliche Aktionen für den CDI unter OpenShift Virtualization.

Wenn der CDI abgeschlossen ist, enthält das PVC den Datenträger für die virtuelle Maschine und ist einsatzbereit, einschließlich aller Formatkonvertierungen, die eventuell erforderlich waren.

OpenShift Container Storage (OCS), Red Hats Ceph-basierte Lösung für Container-Persistenz, bietet ebenfalls Vorteile, wenn es zusammen mit der OpenShift-Virtualisierung eingesetzt wird. Zusätzlich zu den Standard-PVC-Zugriffsmethoden RWO (Block) und RWX (Datei) bietet OCS RWX-Raw-Block-Geräte, die verwendet werden können, um den gemeinsamen Blockzugriff für leistungsempfindliche Anwendungen zu ermöglichen. Zusätzlich unterstützt OCS den aufkommenden Object Bucket Claim Standard, mit dem Anwendungen Objektspeicher direkt anfordern und nutzen können.

Anwender, die an weiteren Details zu Red Hat OpenShift Virtualization interessiert sind, finden auf der Red-Hat-Webseite ausführliche Dokumentationen.

Erfahren Sie mehr über Storage und Virtualisierung