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 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 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.

Wenn Sie CSI in Ihrem Cluster verwenden möchten, müssen Sie den CSI-Treiber Ihres Speicheranbieters bereitstellen. Anschließend können Sie Arbeitslasten für die Verwendung der StorageClass des Treibers konfigurieren oder 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 ist die vSphere-Volume-Treiberimplementierung der Containerspeicher-Nutzeroberfläche und eine Komponente von VMware Cloud Native Storage. Er wird automatisch in Anthos-Cluster auf VMware bereitgestellt und ist ab Anthos-Cluster auf VMware Version 1.7 allgemein verfügbar.

Volume-Erweiterung

Die Volume-Erweiterung ist ein Beta-Feature in Kubernetes 1.20.

Sie können die Größe eines nichtflüchtigen Volumes nach seiner Bereitstellung erweitern, indem Sie die Kapazitätsanfrage im PersistentVolumeClaim (PVC) bearbeiten. Sie können eine Onlineerweiterung ausführen, während das Volume von einem Pod verwendet wird, oder eine Offlineerweiterung, wenn das Volume nicht verwendet wird.

Für den vSphere-CSI-Treiber ist die Offlineerweiterung in vSphere-Versionen >= 7.0 und die Onlineerweiterung in vSphere-Versionen >= 7.0 Update 2 verfügbar.

Die vSphere-CSI-Treiber-StorageClass standard-rwo, die in Nutzerclustern automatisch installiert wird, legt allowVolumeExpansion für neu erstellte Cluster, die unter vSphere 7.0 oder höher ausgeführt werden, standardmäßig auf "true" fest. Sie können mit dieser StorageClass sowohl die Online- als auch die Offlineerweiterung für Volumes verwenden. Da für einen aktualisierten Cluster StorageClasses bei Clusterupgrades nicht geändert werden, wenn ein Cluster von 1.7 auf 1.8 aktualisiert wird, bleibt die Einstellung allowVolumeExpansion in standard-rwo nicht festgelegt, d. h., eine Volume-Erweiterung ist nicht zulässig.

Weitere Informationen zur Volume-Erweiterung finden Sie unter Volume-Erweiterung verwenden.

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.

Ab Anthos-Cluster auf VMware 1.8 sind v1-Versionen von VolumeSnapshot-, VolumeSnapshotContent- und VolumeSnapshotClass-Objekten verfügbar. v1beta1-Versionen wurden verworfen und werden in einer späteren Version nicht mehr bereitgestellt.

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).

Problembehebung

Siehe Fehlerbehebung für Speicher.

Weitere Informationen