Speicher

Auf dieser Seite werden Speicherkonzepte für Anthos-Cluster auf VMware (GKE On-Prem) erläutert.

Fazit

Anthos-Cluster auf VMware lässt sich über VMware vSphere-Speicher, integrierte Kubernetes Volume-Plug-ins (oder „Treiber“) und Container Storage Interface (CSI)-Treiber in externe Block- oder Dateispeichersysteme einbinden.

Anthos-Cluster auf VMware-Cluster verwenden eine standardmäßige Kubernetes StorageClass, um Speicher für zustandsorientierte Arbeitslasten in einem vSphere-Datenspeicher bereitzustellen. Sie können auch eine StorageClass verwenden, um verschiedene Speicher-Volumes bereitzustellen.

vSphere-Speicher

Standardmäßig verwenden Anthos-Cluster auf VMware-Clustern vSphere-Speicher. Der Administratorcluster erfordert einen vorab bereitgestellten vSphere-Datenspeicher für seine etcd-Daten.

Wenn Sie einen Nutzercluster erstellen, verwendet Anthos-Cluster auf VMware das vSphere Kubernetes-Volume-Plug-in, um neue VM-Laufwerke (VMDKs) in einem vSphere Datenspeicher dynamisch bereitzustellen. (Beachten Sie, dass Nutzercluster vor Version 1.2 denselben Datenspeicher verwendet haben wie Administratorcluster.)

Die von den Administrator- und Nutzerclustern verwendeten vSphere-Datenspeicher können durch NFS, vSAN oder VMFS auf einem blockorientierten Gerät, z. B. einem externen Speicherarray, gesichert werden. In einer Umgebung mit mehreren Hosts muss jedes blockorientierte Gerät mit allen Hosts in der Umgebung verbunden sein und der Datenspeicher muss auf jedem Host über die Option Datastore auf zusätzlichen Hosts bereitstellen konfiguriert werden.

Standardspeicher

Anthos-Cluster auf VMware-Cluster enthalten eine standardmäßige StorageClass von Kubernetes, die bestimmt, wie Kubernetes Speicher bereitstellen soll. Nachdem Kubernetes Speicher-Volumes bereitgestellt hat, werden diese durch Kubernetes-PersistentVolumes dargestellt.

Die standardmäßige StorageClass für einen Nutzercluster verweist auf einen vSphere-Datenspeicher, der im Feld datastore der StorageClass-Konfiguration festgelegt wird. Standardmäßig sind Kubernetes-PersistentVolumes, die für den Nutzercluster bereitgestellt werden, VMDKs, die diesen Datenspeicher enthalten. Dies ist nicht unbedingt derselbe Datenspeicher, der vom Administratorcluster verwendet wird.

In Anthos-Cluster auf VMware verwenden StatefulSets von Kubernetes (zustandsorientierte Arbeitslasten, die normalerweise nichtflüchtigen Speicher benötigen) PersistentVolumeClaims, die von StorageClasses unterstützt werden und standardmäßig auf vSphere-Speicher verweisen.

Container Storage Interface

Container Storage Interface (CSI) ist eine API mit offenen Standards, mit der Kubernetes beliebige Speichersysteme an containerisierte Arbeitslasten anhängen kann. Wenn Sie einen CSI-kompatiblen Volume-Treiber auf einem Anthos-Cluster auf VMware-Cluster bereitstellen, können Workloads direkt eine Verbindung zu einem kompatiblen Speichergerät herstellen, ohne den vSphere-Speicher verwenden zu müssen.

Anthos-Cluster auf VMware unterstützen CSI v1.0. Wenn Sie CSI in Ihrem Cluster verwenden möchten, müssen Sie den CSI-Treiber Ihres Speicheranbieters bereitstellen. Anschließend können Sie Arbeitslasten so konfigurieren, dass die StorageClass des Treibers verwendet wird, oder sie als Standard-StorageClass festlegen.

Wir arbeiten mit vielen Speicheranbietern zusammen, um ihre Speichersysteme für Anthos-Cluster auf VMware zu qualifizieren. Vollständige Liste der qualifizierten Speicherpartner.

vSphere-CSI-Treiber

Standardmäßig nutzt Anthos-Cluster auf VMware das integrierte Volume-Plug-in vSphere Cloud Provider (VCP) von VMware, das automatisch die Unterstützung für VMware-Datenspeicher einschließlich vSAN aktiviert. Der vSphere-CSI-Treiber wird automatisch in Anthos-Cluster auf VMware-Clustern bereitgestellt und ist als Vorschaufeature ab Anthos-Cluster auf VMware-Prem Version 1.5 verfügbar.

Snapshots des CSI-Volumes

Mit den Ressourcen VolumeSnapshot und VolumeSnapshotClass können Sie Snapshots des nichtflüchtigen Speichers erstellen. Zur Verwendung dieses Features auf einem CSI-Volume muss der CSI-Treiber Volume-Snapshots unterstützen und der Sidecar-Container external-snapshotter muss in der CSI-Treiberbereitstellung enthalten sein.

Weitere Informationen zu Volume-Snapshots finden Sie unter Volume-Snapshots verwenden

Die CSI-Snapshot-Controller werden automatisch bereitgestellt, wenn Sie einen Cluster erstellen.

Volume-Bereinigung

Wenn Sie einen Nutzercluster löschen, werden Volumes, die vom integrierten Volume-Plug-in von VMware bereitgestellt werden, möglicherweise nicht gelöscht. Beim Löschen eines Nutzerclusters werden die vom vSphere CSI-Treiber bereitgestellten Volumes jedoch nicht gelöscht. Prüfen Sie, ob alle Volumes, PVCs und StatefulSets gelöscht wurden, bevor Sie den Cluster entfernen.

Integrierte Kubernetes-Volume-Plug-ins

Kubernetes wird mit zahlreichen integrierten Volume-Plug-ins ausgeliefert. Sie können eine dieser Optionen verwenden, um Block- oder Dateispeicher für Ihre zustandsorientierten Arbeitslasten bereitzustellen. Mit integrierten Plug-ins können Arbeitslasten direkt mit dem Speicher verbunden werden, ohne den vSphere-Speicher nutzen zu müssen.

Während vSphere-Speicher automatisch die dynamische Bereitstellung von Volumes innerhalb eines Datenspeichers ermöglicht, der durch ein beliebiges iSCSI-, FC- oder NFS-Speichergerät gesichert wird, unterstützen viele der integrierten Plug-ins keine dynamische Bereitstellung. Sie erfordern, dass Sie PersistentVolumes manuell erstellen.

In der folgenden Tabelle werden mehrere integrierte Volume-Plug-ins beschrieben:

Integriertes Kubernetes-Volume-Plug-inBeschreibungUnterstützte ZugriffsmodiDynamische Bereitstellung
Fibre ChannelGenerisches Speicher-Plug-inEinzelnen Pod lesen/schreibenNein
iSCSIGenerisches Speicher-Plug-inEinzelnen Pod lesen/schreibenNein
NFSGenerisches Speicher-Plug-inMehrere Pods lesen/schreibenNein

Clusterspeicher konfigurieren

Wenn Sie andere Speicher-Volumes als vSphere-Datenspeicher bereitstellen möchten, können Sie eine neue StorageClass in einem Cluster erstellen, der einen anderen Speichertreiber verwendet. Anschließend können Sie die StorageClass als Standardcluster festlegen oder Ihre Arbeitslasten mithilfe der StorageClass konfigurieren (StatefulSet-Beispiel).

Fehlerbehebung

Siehe Fehlerbehebung für Speicher.

Weitere Informationen