Wenn vSphere with Tanzu auf einem vSphere-Cluster aktiviert ist, wird eine Kubernetes-Steuerungsebene innerhalb der Hypervisor-Schicht erstellt. Diese Schicht enthält bestimmte Objekte, die das Ausführen von Kubernetes-Arbeitslasten innerhalb von ESXi ermöglichen.

Abbildung 1. Allgemeine Supervisor-Cluster-Architektur
Architektur mit dem Tanzu Kubernetes Grid oben, dem Supervisor in der Mitte und ESXi, Netzwerk sowie Speicher unten. Diese werden vom vCenter Server verwaltet.

Ein für vSphere with Tanzu aktivierter Cluster wird als Supervisor-Cluster bezeichnet. Er wird oberhalb einer SDDC-Schicht ausgeführt, die aus ESXi für Computing, NSX-T Data Center oder vSphere-Netzwerke und vSAN oder einer anderen Lösung für freigegebenen Speicher besteht. Freigegebener Speicher wird für dauerhafte Volumes für vSphere-Pods, im Supervisor-Cluster ausgeführte VMs und Pods in einem Tanzu Kubernetes-Cluster verwendet. Nachdem ein Supervisor-Cluster erstellt wurde, können Sie als vSphere-Administrator Namespaces innerhalb des Supervisor-Cluster erstellen, die als vSphere-Namespaces bezeichnet werden. Als DevOps-Ingenieur können Sie Arbeitslasten ausführen, die aus Containern bestehen, die in vSphere-Pods ausgeführt werden, und Tanzu Kubernetes-Cluster erstellen.

Abbildung 2. Supervisor-Cluster-Architektur
Supervisor Clusterarchitektur.
  • Kubernetes-Steuerungsebenen-VM. Auf den Hosts, die Teil des Supervisor-Cluster sind, werden insgesamt drei Kubernetes-Steuerungsebenen-VMs erstellt. Die drei Steuerungsebenen-VMs verfügen über Lastausgleich, da jede eine eigene IP-Adresse hat. Darüber hinaus wird einer der VMs eine dynamische IP-Adresse zugewiesen. vSphere DRS bestimmt die exakte Platzierung der Steuerungsebenen-VMs auf den ESXi-Hosts und migriert sie bei Bedarf. vSphere DRS ist ebenfalls mit dem Kubernetes Scheduler in den Steuerungsebenen-VMs vernetzt, sodass DRS die Platzierung von vSphere-Pods bestimmt. Wenn Sie als DevOps-Ingenieur einen vSphere Pod planen, wird die Anforderung über den regulären Kubernetes-Workflow an DRS übertragen, wodurch die endgültige Platzierungsentscheidung getroffen wird.
  • Spherelet. Ein zusätzlicher Prozess namens Spherelet wird auf jedem Host erstellt. Es handelt sich um ein Kubelet, das nativ auf ESXi portiert wird und dem ESXi-Host ermöglicht, Teil des Kubernetes-Clusters zu werden.
  • Container Runtime Executive (CRX). Hinsichtlich Hostd und vCenter Server ist CRX mit einer VM vergleichbar. CRX umfasst einen paravirtualisierten Linux-Kernel, der mit dem Hypervisor zusammenarbeitet. CRX verwendet die gleichen Hardwarevirtualisierungstechniken wie VMs und ist von einer VM-Begrenzung umgeben. Es wird eine Direktstarttechnik verwendet, mit der der Linux-Gast von CRX den Hauptinitialisierungsprozess initiieren kann, ohne die Kernel-Initialisierung durchlaufen zu müssen. Auf diese Weise können vSphere-Pods fast so schnell wie Container starten.
  • Die Cluster-API und der VMware Tanzu™ Kubernetes Grid™-Dienst sind Module, die im Supervisor-Cluster ausgeführt werden und die Bereitstellung und Verwaltung von Tanzu Kubernetes-Clustern ermöglichen. Das VM-Dienst-Modul ist für die Bereitstellung und Ausführung eigenständiger VMs und VMs zuständig, die die Tanzu Kubernetes-Cluster bilden.

vSphere-Namespace

Ein vSphere-Namespace legt die Ressourcengrenzen fest, in denen vSphere-Pods und Tanzu Kubernetes-Cluster, die mithilfe des Tanzu Kubernetes Grid-Dienst erstellt wurden, ausgeführt werden können. Bei der anfänglichen Erstellung verfügt der Namespace über unbegrenzte Ressourcen innerhalb des Supervisor-Cluster. Als vSphere-Administrator können Sie Grenzwerte für CPU, Arbeitsspeicher und Speicher sowie die Anzahl der Kubernetes-Objekte festlegen, die innerhalb des Namespace ausgeführt werden können. Ein Ressourcenpool wird pro Namespace in vSphere erstellt. Speichereinschränkungen werden in Kubernetes als Speicherkontingente dargestellt.

Abbildung 3. vSphere-Namespace
Supervisor-Namespace

Um dem DevOps-Ingenieur Zugriff auf Namespaces zu gewähren, weisen Sie als vSphere-Administrator den verfügbaren Benutzern oder Benutzergruppen Berechtigungen innerhalb einer Identitätsquelle zu, die mit vCenter Single Sign-On verknüpft ist.

Nachdem ein Namespace mit Ressourcen- und Objektgrenzwerten sowie mit Berechtigungen und Speicherrichtlinien erstellt und konfiguriert wurde, können Sie als DevOps-Ingenieur auf den Namespace zugreifen, um Kubernetes-Arbeitslasten auszuführen und Tanzu Kubernetes-Cluster mithilfe des Tanzu Kubernetes Grid-Dienst zu erstellen.

Tanzu Kubernetes-Cluster

Ein Tanzu Kubernetes-Cluster ist eine vollständige Distribution der Open-Source-Kubernetes-Software, die von VMware als Paket bereitgestellt, signiert und unterstützt wird. Im Zusammenhang mit vSphere with Tanzu können Sie den Tanzu Kubernetes Grid-Dienst zum Bereitstellen von Tanzu Kubernetes-Clustern auf dem Supervisor-Cluster verwenden. Sie können die Tanzu Kubernetes Grid-Dienst-API deklarativ aufrufen, indem Sie kubectl und eine YAML-Definition verwenden.

Ein Tanzu Kubernetes-Cluster befindet sich in einem vSphere-Namespace. Sie können Arbeitslasten und Dienste auf Tanzu Kubernetes-Clustern auf die gleiche Weise und unter Verwendung derselben Tools wie für Standard-Kubernetes-Cluster bereitstellen.
Abbildung 4. vSphere with Tanzu-Architektur für Tanzu Kubernetes-Cluster
Architektur für TKG-Cluster.

Supervisor-Cluster mit dem vSphere-Netzwerk-Stack konfiguriert

Ein Supervisor-Cluster, der mit dem vSphere-Netzwerk-Stack konfiguriert ist, unterstützt nur die Ausführung von Tanzu Kubernetes-Clustern, die mit dem Tanzu Kubernetes Grid-Dienst erstellt wurden. Der Cluster unterstützt außerdem den vSphere-Netzwerkdienst und den Speicherdienst.

Ein mit dem vSphere-Netzwerk-Stack konfigurierter Supervisor-Cluster bietet keine Unterstützung für vSphere-Pods. Aus diesem Grund ist die Spherelet-Komponente in diesem Supervisor-Cluster nicht verfügbar und Kubernetes-Pods werden nur innerhalb von Tanzu Kubernetes-Clustern ausgeführt. Ein Supervisor-Cluster, der mit dem vSphere-Netzwerk-Stack konfiguriert ist, unterstützt auch nicht den Harbor-Registrierung, da der Dienst nur mit vSphere-Pods verwendet wird.

Ein vSphere-Namespace, der in einem Cluster erstellt wurde, der mit dem vSphere-Netzwerk-Stack konfiguriert ist, unterstützt auch nicht die Ausführung von vSphere-Pods, sondern nur von Tanzu Kubernetes-Clustern.