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.

Hinweis: Zusätzlich zu eigenständigen VMs verwaltet der VM-Dienst die VMs, die die Tanzu Kubernetes Grid-Cluster bilden. Informationen über Cluster finden Sie in der Dokumentation zum Thema Verwenden des TKG-Dienstes mit der vSphere IaaS-Steuerungsebene.
Der VM-Dienst verwaltet eigenständige VMs und VMs, aus denen die Tanzu Kubernetes Grid-Cluster bestehen

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-Spezifikation führt VM-Klasse, VM-Image und Speicherklasse zusammen, um eine VM 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.
Ab vSphere 8.0 Update 3 wird der VM-Operator „v1alpha2“ von vSphere IaaS control plane unterstützt. Diese Version bietet unter anderem folgende Funktionen:
  • Verbesserte Unterstützung für Bootstrap-Anbieter, einschließlich Unterstützung für Inline-Cloud-Init und Windows.
  • Verbesserte Konfiguration des Gastnetzwerks.
  • Erweiterte Statusfunktionen.
  • Unterstützung für benutzerdefinierte Readiness-Gates.
  • Neue VirtualMachineWebConsoleRequest-API.

Abgesehen von neuen v1alpha2-spezifischen API-Änderungen funktionieren die meisten anderen APIs in v1alpha2 zusammen mit v1alpha1. Die meisten Felder in VM-Spezifikationen sind mit v1alpha1 abwärtskompatibel.

Nach der Veröffentlichung von v1alpha2 können Sie weiterhin v1alpha1-Objekte verwenden. Alle v1alpha1-Objekte werden mithilfe von Konvertierungs-Webhooks, die in den VM-Operator integriert sind, automatisch in v1alpha2 umgewandelt.

Informationen zum VM-Operator „v1alpha2“ und den unterstützten Feldern finden Sie unter https://vm-operator.readthedocs.io/en/stable/ref/api/v1alpha2/.

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