Baue deine eigene Cloud: Virtualisierung mit Kubernetes leicht gemacht
Entdecke, wie du mit KubeVirt und anderen Technologien Virtualisierung in Kubernetes umsetzt und deine eigene Cloud erstellst.
In unserer Reihe über den Aufbau einer eigenen Cloud mit dem Kubernetes-Ökosystem setzen wir heute unsere Reise fort. Im vorherigen Artikel haben wir erklärt, wie wir eine grundlegende Kubernetes-Distribution auf der Basis von Talos Linux und Flux CD vorbereiten. In diesem Artikel zeigen wir dir verschiedene Virtualisierungstechnologien in Kubernetes und bereiten alles vor, was du benötigst, um virtuelle Maschinen in Kubernetes zu betreiben – insbesondere in den Bereichen Speicher und Netzwerk.
Aber warum sind virtuelle Maschinen notwendig und warum können wir nicht einfach Docker-Container nutzen, um eine Cloud aufzubauen? Der Grund ist einfach: Container bieten nicht das nötige Maß an Isolation. Auch wenn sich die Situation von Jahr zu Jahr verbessert, begegnen wir oft Sicherheitsanfälligkeiten, die es ermöglichen, die Container-Sandbox zu verlassen und Privilegien im System zu erhöhen.
Kubernetes wurde ursprünglich nicht als Multi-Tenant-System konzipiert. Das bedeutet, dass das grundlegende Nutzungsmuster darin besteht, für jedes unabhängige Projekt und Entwicklungsteam einen separaten Kubernetes-Cluster zu erstellen. Virtuelle Maschinen sind das primäre Mittel, um Mandanten in einer Cloud-Umgebung voneinander zu isolieren. In virtuellen Maschinen können Benutzer Code und Programme mit Administratorrechten ausführen, ohne dass dies andere Mandanten oder die Umgebung selbst beeinflusst. Mit anderen Worten, virtuelle Maschinen ermöglichen eine strikte Multi-Tenant-Isolation und können in Umgebungen betrieben werden, in denen Mandanten einander nicht vertrauen.
Virtualisierungstechnologien in Kubernetes
Es gibt verschiedene Technologien, die Virtualisierung in die Kubernetes-Welt bringen: KubeVirt und Kata Containers sind die bekanntesten. Es ist wichtig zu wissen, dass sie unterschiedlich funktionieren.
Kata Containers implementiert die CRI (Container Runtime Interface) und bietet ein zusätzliches Maß an Isolation für Standard-Container, indem sie in virtuellen Maschinen betrieben werden. Sie arbeiten jedoch im selben Kubernetes-Cluster.
KubeVirt ermöglicht das Ausführen traditioneller virtueller Maschinen über die Kubernetes-API. Virtuelle Maschinen in KubeVirt werden als reguläre Linux-Prozesse in Containern ausgeführt. Mit anderen Worten, in KubeVirt wird ein Container als Sandbox für das Ausführen von virtuellen Maschinen (QEMU)-Prozessen verwendet. Dies wird in der folgenden Abbildung deutlich, wenn wir uns ansehen, wie die Live-Migration von virtuellen Maschinen in KubeVirt umgesetzt wird. Wenn Migration erforderlich ist, wird die virtuelle Maschine von einem Container in einen anderen verschoben.
Es gibt auch ein alternatives Projekt - Virtink, das leichte Virtualisierung mit Cloud-Hypervisor implementiert und ursprünglich darauf abzielt, virtuelle Kubernetes-Cluster über die Cluster-API auszuführen.
In Anbetracht unserer Ziele haben wir uns entschieden, KubeVirt als das bekannteste Projekt in diesem Bereich zu nutzen. Außerdem haben wir umfangreiche Expertise und bereits viele Beiträge zu KubeVirt geleistet.
KubeVirt ist einfach zu installieren und ermöglicht es dir, virtuelle Maschinen sofort mit der containerDisk-Funktion auszuführen – dies ermöglicht es, VM-Images direkt als OCI-Images zu speichern und zu verteilen.
In Zusammenarbeit mit ayedo, einem erfahrenen Kubernetes-Partner, kannst du deine Cloud-Träume verwirklichen und die Vorzüge der Virtualisierung in Kubernetes optimal nutzen.
Quelle: Kubernetes Blog