vSphere IaaS control plane bietet eine VM-Service-Funktionalität, die es DevOps-Ingenieuren ermöglicht, neben Containern auch VMs in einer gemeinsamen, freigegebenen Kubernetes-Umgebung bereitzustellen und auszuführen. Sie können den VM-Dienst verwenden, um den Lebenszyklus von virtuellen Maschinen in einem Namespace zu verwalten. Der VM-Dienst verwaltet eigenständige VMs und VMs, die die Tanzu Kubernetes Grid-Cluster bilden.
Der VM-Dienst adressiert die Bedürfnisse von DevOps-Teams, die Kubernetes nutzen, aber bestehende VM-basierte Arbeitslasten haben, die nicht einfach containerisiert werden können. Es hilft Anwendern auch, den Aufwand für die Verwaltung einer Nicht-Kubernetes-Plattform neben einer Container-Plattform zu reduzieren. Wenn Container und VMs auf einer Kubernetes-Plattform ausgeführt werden, können DevOps-Teams ihren Arbeitslastbedarf auf nur einer Plattform konsolidieren.
Jede VM, die über den VM-Dienst bereitgestellt wird, funktioniert als vollständige Maschine, auf der alle Komponenten, einschließlich eines eigenen Betriebssystems, in der vSphere IaaS control plane-Infrastruktur ausgeführt werden. Die VM hat Zugriff auf Netzwerke und Speicher, die ein Supervisor bereitstellt, und wird mithilfe des standardmäßigen Kubernetes-Befehls kubectl verwaltet. Die VM wird als vollständig isoliertes System ausgeführt, das immun gegen Störungen durch andere VMs oder Arbeitslasten in der Kubernetes-Umgebung ist.
Wann werden virtuelle Maschinen auf einer Kubernetes-Plattform verwendet?
Im Allgemeinen hängt die Entscheidung zum Ausführen von Arbeitslasten in einem Container oder in einer VM von Ihren geschäftlichen Anforderungen und Zielen ab. Zu den Gründen für den Einsatz von VMs zählen unter anderem die folgenden:
- Ihre Anwendungen können nicht containerisiert werden.
- Sie haben spezifische Hardwareanforderungen für Ihr Projekt.
- Anwendungen sind für einen benutzerdefinierten Kernel oder ein benutzerdefiniertes Betriebssystem konzipiert.
- Anwendungen sind besser für die Ausführung in einer VM geeignet.
- Sie wünschen sich ein konsistentes Kubernetes-Erlebnis und möchten Overhead vermeiden. Anstatt separate Infrastruktursätze für Ihre Nicht-Kubernetes- und Container-Plattformen zu betreiben, können Sie diese Stacks konsolidieren und mit einem vertrauten kubectl-Befehl verwalten.
Konzepte des VM-Diensts
Um den Status einer VM zu beschreiben, die in einer virtuellen vSphere-Namespace bereitgestellt werden soll, verwenden Sie Parameter wie eine VM-Klasse, ein VM-Image und eine Speicherklasse. Der VM-Service führt dann diese Spezifikationen zusammen, um eigenständige VMs oder VMs, die Tanzu Kubernetes Grid-Cluster unterstützen, zu erstellen.
- VM-Dienst
-
Der VM-Dienst ist eine Komponente von
vSphere IaaS control plane, die eine deklarative, Kubernetes-ähnliche API für die Verwaltung von VMs und zugehörigen vSphere-Ressourcen bietet. Der VM-Service ermöglicht es den vSphere-Administratoren, Ressourcen bereitzustellen und Vorlagen wie VM-Klassen und VM-Images für Kubernetes bereitzustellen. DevOps-Ingenieure können diese Ressourcen verwenden, um den gewünschten Zustand einer VM zu beschreiben. Nachdem die DevOps-Ingenieure den VM-Zustand spezifiziert haben, wandelt der VM-Service den gewünschten Zustand in einen realisierten Zustand gegenüber den unterstützenden Infrastrukturressourcen um.
Eine über den VM-Dienst erstellte VM kann nur aus dem Kubernetes-Namespace mit den kubectl-Befehlen verwaltet werden. vSphere-Administratoren können die VM nicht von der vSphere Client aus verwalten, können aber ihre Details anzeigen und die von ihr verwendeten Ressourcen überwachen. Weitere Informationen finden Sie unter Überwachen der in vSphere IaaS control plane verfügbaren virtuellen Maschinen.
- VM-Klasse
-
Die VM-Klasse ist eine VM-Spezifikation, mit der eine Gruppe von Ressourcen für eine VM angefordert werden kann. Die VM-Klasse wird von einem vSphere-Administrator kontrolliert und verwaltet und definiert Parameter wie die Anzahl der virtuellen CPUs, die Arbeitsspeicherkapazität und die Reservierungseinstellungen. Die definierten Parameter werden durch die zugrunde liegenden Infrastrukturressourcen eines
Supervisors unterstützt und garantiert.
Ein vSphere-Administrator kann benutzerdefinierte VM-Klassen erstellen.
Darüber hinaus bietet die Arbeitslastverwaltung mehrere Standard-VM-Klassen. In der Regel gibt es jeden Standardklassentyp in zwei Editionen: garantiert und bestmöglich. Eine garantierte Edition reserviert vollständig die Ressourcen, die eine VM-Spezifikation anfordert. Für eine bestmögliche Klassenedition gilt dies nicht; das bedeutet, dass die Ressourcen überbelegt werden können. In der Regel wird ein garantierter Typ in einer Produktionsumgebung verwendet.
Beispiele für Standard-VM-Klassen sind die folgenden.
Klasse CPU Arbeitsspeicher (GB) Reservierte CPU und reservierter Arbeitsspeicher guaranteed-large
4 16 Ja best-effort-large
4 16 Nein guaranteed-small
2 4 Ja best-effort-small
2 4 Nein Der vSphere-Administrator kann eine beliebige Anzahl vorhandener VM-Klassen zuweisen, um sie für DevOps-Ingenieure innerhalb eines bestimmten Namespaces zur Verfügung zu stellen.
Die VM-Klasse bietet eine vereinfachte Erfahrung für die DevOps-Ingenieure. Die DevOps müssen nicht die vollständige Konfiguration jeder VM verstehen, die sie erstellen möchten. Stattdessen können sie eine VM-Klasse aus den verfügbaren Optionen auswählen, und der VM-Dienst verwaltet die VM-Konfiguration.
Auf der Kubernetes-Seite werden die VM-Klassen als VirtualMachineClass-Ressourcen angezeigt.
- VM-Image
-
Ein VM-Image ist eine Vorlage, die eine Softwarekonfiguration enthält, einschließlich Betriebssystem, Anwendungen und Daten.
Wenn DevOps-Ingenieure VMs erstellen, können sie Images aus der Inhaltsbibliothek auswählen, die dem Namespace zugeordnet ist. Für die DevOps werden die Images als VirtualMachineImage zur Verfügung gestellt.
Ein vSphere-Administrator kann VM-Images erstellen, die mit vSphere IaaS control plane kompatibel sind, und sie in eine Inhaltsbibliothek hochladen.
- Inhaltsbibliothek
- Ein DevOps-Ingenieur verwendet eine Inhaltsbibliothek als Quelle von Images, um eine VM zu erstellen. Ähnlich wie VM-Klassen kann ein vSphere-Administrator vorhandene Inhaltsbibliotheken einem Namespace oder einem Cluster zuweisen, um sie DevOps-Ingenieuren zur Verfügung zu stellen. Der vSphere-Administrator kann die Namespace-Inhaltsbibliothek auch beschreibbar machen. Mit dieser zusätzlichen Berechtigung können DevOps-Benutzer ihre Images in der Bibliothek veröffentlichen.
- Speicherklasse
- Der VM-Dienst verwendet Speicherklassen zum Platzieren virtueller Festplatten und zum dynamischen Anhängen persistenter Volumes. Weitere Informationen zu Speicherklassen finden Sie unter Verwenden von persistentem Speicher mit Supervisor-Arbeitslasten in vSphere IaaS control plane.
- VM-Spezifikation
- DevOps-Ingenieure beschreiben den gewünschten Zustand einer VM in einer YAML-Datei, die das VM-Image, die VM-Klasse und die Speicherklasse zusammenführt.
- VM-Operator für Kubernetes
- Der VM-Operator ermöglicht die Verwaltung virtueller Maschinen mit einer deklarativen API im Kubernetes-Stil.
- Netzwerk
- Der VM-Dienst hat keine spezifischen Anforderungen und basiert auf der netzwerkspezifischen Konfiguration, die in vSphere IaaS control plane zur Verfügung steht. Der VM-Dienst unterstützt beide Netzwerktypen, das vSphere-Netzwerk oder NSX. Wenn VMs bereitgestellt werden, teilt ein verfügbarer Netzwerkanbieter den VMs statische IP-Adressen zu. Weitere Informationen finden Sie unter Supervisor-Netzwerk in der Dokumentation zum Thema Konzepte und Planung der vSphere IaaS-Steuerungsebene.
VM-Dienst und Supervisor mit vSphere-Zonen
Wenn Sie VMs auf einem Supervisor mit drei Zonen erstellen, wird die VM-Instanz über alle verfügbaren Zonen hinweg repliziert. Zum Steuern der Platzierung der VMs über die YAML-Datei kann das DevOps-Team die Kubernetes-Bezeichnung topology.kubernetes.io/zone verwenden. Beispiel: topology.kubernetes.io/zone: zone-a02.
Workflow für die Bereitstellung und Überwachung einer VM
Als vSphere-Administrator legen Sie Leitlinien für die Richtlinie und Governance der VMs fest und stellen VM-Ressourcen wie VM-Klassen und VM-Vorlagen an DevOps-Ingenieure bereit. Nach der Bereitstellung einer VM können Sie sie mithilfe des vSphere Client überwachen.
Schritt | Durchgeführt von | Beschreibung |
---|---|---|
1 | vSphere-Administrator | Erstellen von Inhaltsbibliotheken und Zuweisen zu einem Namespace oder Supervisor |
2 | vSphere-Administrator | Eine VM-Klasse erstellen und sie einem Namespace zuweisen Konfigurieren Sie für die Verwendung von NVIDIA vGPU ein PCI-Gerät in der VM-Klasse. Weitere Informationen finden Sie unter Bereitstellen einer VM mit vGPU und anderen PCI-Geräten in vSphere IaaS control plane. |
3 | DevOps-Ingenieur | Eine VM in einem Kubernetes-Namespace bereitstellen Informationen zu Tanzu Kubernetes Grid-Cluster-VMs finden Sie unter Verwenden des TKG-Dienstes mit der vSphere IaaS-Steuerungsebene. |
4 | vSphere-Administrator | Bereitgestellte VMs überwachen |
5 | DevOps-Ingenieur | Veröffentlichen eines VM-Images in einer Inhaltsbibliothek |