Die Einführung von cloud-nativen Architekturen und Containerisierung verändert die Art und Weise, wie wir Anwendungen entwickeln, bereitstellen und verwalten. Container bieten Geschwindigkeit, Agilität und Skalierbarkeit und treiben einen bedeutenden Wandel in den IT-Strategien voran. Die Realität für viele Organisationen ist jedoch, dass virtuelle Maschinen (VMs) weiterhin eine entscheidende Rolle spielen, insbesondere wenn es um Legacy- oder zustandsbehaftete Anwendungen geht. Selbst führende Finanzinstitute wie Goldman Sachs erkennen den Wert von VMs neben containerisierten Workloads und suchen nach Möglichkeiten, diese effizient zu verwalten.
Dies schafft eine potenzielle Kluft: die Vorteile der Containerisierung auf der einen Seite und der anhaltende Bedarf an VMs auf der anderen. KubeVirt überbrückt diese Lücke, indem es die Leistungsfähigkeit von Kubernetes auf das Management virtueller Maschinen ausweitet, sodass Sie Ihre Infrastruktur vereinheitlichen und einen reibungsloseren Übergang zu cloud-nativen Technologien ermöglichen können.
In diesem Artikel untersuchen wir, warum KubeVirt eine überzeugende Lösung für Organisationen ist, die IT-Operationen optimieren und Flexibilität in einer hybriden Infrastrukturumgebung gewinnen möchten.
Was genau ist KubeVirt?
KubeVirt ist ein Open-Source-Projekt, das Kubernetes in eine leistungsstarke Plattform verwandelt, die sowohl Container als auch virtuelle Maschinen verwalten kann. Einfach ausgedrückt, verwandelt KubeVirt Kubernetes in eine zentrale Steuerungsebene für Ihre gesamte Infrastruktur.
So funktioniert es:
- KubeVirt als Erweiterung: KubeVirt fügt Kubernetes benutzerdefinierte Ressourcendefinitionen (CRDs) hinzu, die einen neuen Objekttyp darstellen, der virtuelle Maschinen repräsentiert.
- Virtuelle Maschinen als „Pods“: Mit KubeVirt läuft jede VM innerhalb eines spezialisierten Pods, der die VMs eng in das Kubernetes-Ökosystem integriert.
- Vereinfachtes VM-Management mit Kubernetes: Sie können nun die gleichen Kubernetes-Tools (
kubectl
und die Kubernetes-API) und bewährte Verfahren nutzen, um VMs neben Ihren containerisierten Workloads zu erstellen, zu starten, zu stoppen, zu migrieren und zu überwachen.
Betrachten Sie KubeVirt als Möglichkeit, Kubernetes die Sprache der Virtualisierung zu sprechen, und eröffnen Sie damit eine Vielzahl von Möglichkeiten für Ihr Infrastrukturmanagement.
Die geschäftlichen Auswirkungen von KubeVirt
KubeVirt bietet greifbare Vorteile, die über technische Eleganz hinausgehen. Durch die Übernahme von KubeVirt kann Ihre Organisation folgendes erreichen:
- Nahtloses Workload-Management: Beseitigen Sie die Barrieren zwischen Ihren VM-basierten Anwendungen und Ihren containerisierten Workloads. Verwalten Sie alles von einer einzigen Plattform aus mit den gleichen Tools und Prozessen, was die Betriebsabläufe deutlich vereinfacht und die Komplexität reduziert.
- Verbesserte Ressourceneffizienz: KubeVirt ermöglicht es Ihnen, sowohl traditionelle VMs als auch Container auf derselben zugrunde liegenden Cluster-Hardware auszuführen. Optimieren Sie die Ressourcennutzung, verbessern Sie die Infrastrukturdichte und realisieren Sie möglicherweise erhebliche Kosteneinsparungen.
- Beschleunigte Modernisierung: Legacy-Anwendungen, die an VMs gebunden sind, müssen kein Hindernis für Innovationen sein. KubeVirt bietet einen schrittweisen Weg zur Modernisierung von Anwendungen in Ihrem eigenen Tempo. Sie können Komponenten im Laufe der Zeit containerisieren und migrieren, alles innerhalb derselben Kubernetes-Umgebung, um Störungen zu minimieren.
- Zukunftssichere Infrastruktur: Durch Investitionen in KubeVirt stimmen Sie mit cloudnativen Prinzipien überein und positionieren Kubernetes als Rückgrat Ihres Technologiestapels. Dies fördert Flexibilität und Agilität, was es Ihnen ermöglicht, sich schnell an sich ändernde Geschäftsanforderungen anzupassen.
Warum sollte sich Ihre Organisation darum kümmern?
KubeVirt bietet einen überzeugenden Mehrwert, insbesondere in diesen Bereichen:
- IT-Teams und DevOps: KubeVirt vereinfacht den Betrieb, indem es eine einheitliche Steuerungsebene für alle Ihre Workloads bereitstellt. Es ermöglicht Ihnen, Workflows zu optimieren, den Werkzeugaufwand zu reduzieren und die Gesamteffizienz des Teams zu verbessern.
- Führungskräfte: Gewinnen Sie operative Flexibilität, erzielen Sie Kosteneinsparungen und einen optimierten Weg zur Modernisierung der Infrastruktur. KubeVirt stimmt technologische Investitionen mit langfristigem Geschäftserfolg überein.
- Gemischte Workloads: Wenn Sie sowohl Legacy-VM-basierte Anwendungen als auch moderne containerisierte Bereitstellungen verwalten, ist KubeVirt unerlässlich. Es ermöglicht es Ihnen, Vendor-Lock-in zu vermeiden, Komplexität zu minimieren und die vollständige Kontrolle über Ihre Infrastrukturwahl zu behalten.
Hier sind einige spezifische Probleme, die KubeVirt anspricht:
- Sind Sie frustriert darüber, separate Umgebungen für VMs und Container verwalten zu müssen? KubeVirt bringt sie zusammen und erleichtert so das Management erheblich.
- Suchen Sie Flexibilität, ohne bestehende Investitionen zu gefährden? KubeVirt ermöglicht es Ihnen, Ihre VM-Infrastruktur zu nutzen und gleichzeitig zu modernisieren.
- Möchten Sie die Kosteneffizienz und Ressourcennutzung verbessern? KubeVirt hilft, Arbeitslasten zu konsolidieren, um eine bessere Auslastung zu erreichen.
- Haben Sie Schwierigkeiten mit komplexen Migrationen von Legacy-Anwendungen? Modernisieren Sie schrittweise und kontrollieren Sie Ihr Tempo mit KubeVirt.
Erste Schritte: Bereitstellung und Implementierung
Die Bereitstellung von KubeVirt erfordert eine gut vorbereitete Kubernetes-Umgebung. Dieser Abschnitt bietet eine detaillierte Anleitung, um Ihnen zu helfen, KubeVirt in Ihrer Infrastruktur einzurichten und zu implementieren.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:
1. Kubernetes-Cluster
Sie benötigen ein Kubernetes-Cluster (oder einen Derivat wie OpenShift), das auf einer der drei neuesten Kubernetes-Versionen basiert, die zum Zeitpunkt der KubeVirt-Veröffentlichung verfügbar waren.
2. Konfiguration des Kubernetes-API-Servers
Der Kubernetes-API-Server muss mit --allow-privileged=true
konfiguriert werden, um den privilegierten DaemonSet von KubeVirt auszuführen.
3. Kubectl-Dienstprogramm
Stellen Sie sicher, dass Sie das kubectl
-Client-Dienstprogramm installiert und konfiguriert haben, um mit Ihrem Cluster zu interagieren.
4. Unterstützung von Container-Laufzeitumgebungen
KubeVirt wird auf den folgenden Container-Laufzeitumgebungen unterstützt:
Containerd
crio
(mitrunv
)
Andere Container-Laufzeitumgebungen sollten ebenfalls funktionieren, aber die genannten sind die Hauptziele.
5. Hardware-Virtualisierung
Es wird empfohlen, Hardware mit Virtualisierungsunterstützung zu verwenden. Sie können virt-host-validate
verwenden, um sicherzustellen, dass Ihre Hosts für die Ausführung von Virtualisierungs-Workloads geeignet sind:
$ virt-host-validate qemu
Netzwerk- und Sicherheitsüberlegungen
-
Netzwerkkonfiguration: Planen Sie, wie Ihre VMs mit externen Netzwerken und dem Rest Ihrer Kubernetes-Umgebung verbunden sind und interagieren.
-
AppArmor-Integration: Auf Systemen mit aktiviertem AppArmor müssen möglicherweise die AppArmor-Profile angepasst werden, um die Ausführung von KubeVirt-privilegierten Containern zu ermöglichen. Zum Beispiel:
# vim /etc/apparmor.d/usr.sbin.libvirtd
/usr/libexec/qemu-kvm PUx,
# apparmor_parser -r /etc/apparmor.d/usr.sbin.libvirtd
KubeVirt-Installation
So installieren Sie KubeVirt:
1. Installieren des KubeVirt Operators
Der KubeVirt Operator vereinfacht die Installation und Verwaltung der KubeVirt-Komponenten. Führen Sie die folgenden Befehle aus, um die neueste KubeVirt-Version bereitzustellen:
# Point at latest release
$ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
# Deploy the KubeVirt operator
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-operator.yaml
# Create the KubeVirt CR (instance deployment request) which triggers the actual installation
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-cr.yaml
# Wait until all KubeVirt components are up
$ kubectl -n kubevirt wait kv kubevirt --for condition=Available
2. Konfiguration für Nicht-Hardware-Virtualisierung
Wenn Hardware-Virtualisierung nicht verfügbar ist, aktivieren Sie die Software-Emulation, indem Sie useEmulation in der KubeVirt CR auf true setzen:
$ kubectl edit -n kubevirt kubevirt kubevirt
# Add the following to the kubevirt.yaml file
spec
configuration
developerConfiguration
useEmulationtrue
Implementierungs-Best Practices
Um das Beste aus KubeVirt herauszuholen, befolgen Sie diese Best Practices:
1. Führen Sie eine Workload-Bewertung durch
Priorisieren Sie VMs, die für Containerisierung geeignet sind. Beginnen Sie mit weniger geschäftskritischen Anwendungen, um praktische Erfahrungen zu sammeln.
2. Netzwerk und Speicher bewerten
Planen Sie, wie Sie das VM-Netzwerk mit Ihrem bestehenden Kubernetes-Netzwerk überbrücken und Speicherlösungen für persistente Daten mithilfe von Container Storage Interface (CSI) Plugins integrieren können.
3. Monitoring und Management betonen
Verwenden Sie Kubernetes-Überwachungstools oder erkunden Sie KubeVirt-spezifische Lösungen, um Einblicke in die Leistung von VMs neben Ihren Containern zu erhalten.
4. Live-Migration
Aktivieren und konfigurieren Sie die Live-Migration, um laufende VMs ohne Ausfallzeiten auf andere Berechnungsknoten zu verschieben. Dies beinhaltet das Setzen von Feature-Gates und das Konfigurieren von migrationspezifischen Parametern im KubeVirt CR:
apiVersion kubevirt.io/v1
kind KubeVirt
metadata
name kubevirt
namespace kubevirt
spec
configuration
developerConfiguration
featureGates
LiveMigration
migrations
parallelMigrationsPerCluster5
parallelOutboundMigrationsPerNode2
bandwidthPerMigration 64Mi
completionTimeoutPerGiB800
progressTimeout150
Beispielinstallation auf OpenShift (OKD)
Wenn Sie OKD verwenden, umfassen zusätzliche Schritte das Konfigurieren von Sicherheitskontexteinschränkungen (SCC):
$ oc adm policy add-scc-to-user privileged -n kubevirt -z kubevirt-operator
Beispielinstallation auf k3OS
Für k3OS stellen Sie sicher, dass Sie die erforderlichen Module auf allen Knoten laden, bevor Sie KubeVirt bereitstellen:
k3os
modules
kvm
vhost_net
Starten Sie die Knoten mit dieser Konfiguration neu und bereitstellen Sie dann KubeVirt wie oben beschrieben.
Installation von täglichen Entwickler-Builds
Führen Sie für die neuesten Entwickler-Builds aus:
$ LATEST=$(curl -L https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/latest)
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-operator.yaml
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-cr.yaml
Bereitstellung aus dem Quellcode
Durch das Befolgen dieser Schritte und bewährten Praktiken können Sie eine reibungslose und erfolgreiche KubeVirt-Implementierung sicherstellen, die eine einheitliche Infrastruktur-Managementlösung bietet, die sowohl virtuelle Maschinen als auch Container nutzt.
Implementierungs-Best Practices
Befolgen Sie diese bewährten Praktiken, um das Beste aus KubeVirt herauszuholen:
- Führen Sie eine Workload-Bewertung durch: Nicht jede Anwendung eignet sich sofort für KubeVirt. Priorisieren Sie VMs mit großem Potenzial für Containerisierung. Weniger geschäftskritische Anwendungen können eine gute Möglichkeit sein, praktische Erfahrungen zu sammeln und das Risiko zu minimieren.
- Bewerten Sie Networking und Speicher: Bedenken Sie sorgfältig, wie Sie das VM-Networking mit Ihrem bestehenden Kubernetes-Networking verbinden können. Planen Sie die Speicherintegration für persistente Daten mithilfe von Lösungen wie Container Storage Interface (CSI)-Plugins.
- Betonen Sie Überwachung und Management: Passen Sie Ihre vorhandenen Kubernetes-Überwachungstools an oder erkunden Sie KubeVirt-spezifische Lösungen, um Einblick in die Leistung von VMs neben Ihren Containern zu erhalten.
Schlussfolgerung
KubeVirt bietet Organisationen einen überzeugenden Weg, um die Vorteile von Cloud-nativen Technologien zu nutzen und den Wert ihrer bestehenden Investitionen in virtuelle Maschinen zu maximieren. Es steigert die betriebliche Effizienz, fördert die Flexibilität und beschleunigt Ihre Modernisierungsreise.
Source:
https://dzone.com/articles/kubevirt-implementation-who-needs-it-and-why