Mit dem StatefulSet-CSI-Migrationstool können Sie StatefulSets vom integrierten vSphere-Volume-Plug-in zum vSphere-CSI-Treiber in Google Distributed Cloud migrieren. Das Tool migriert Ihre PersistentVolumes ohne Anwendungsausfallzeiten oder Datenverlust, sodass Ihre Arbeitslasten den vollständigen Umfang von CSI-Funktionen wie Volume Expansion und Volume Snapshot nutzen können.
Das Tool wird nur für vollständig unterstützte Google Distributed Cloud-Versionen unterstützt.
Übersicht
Google Distributed Cloud 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 integrieren.
Wenn die Kubernetes-CSI-Migrationsfunktion standardmäßig in 1.15 aktiviert ist, funktioniert ein PersistentVolume, das vom In-Tree-vSphere-Volume-Plug-in unterstützt wird, weiterhin in einer reinen CSI-Umgebung. Die CSI-Migrationsfunktion leitet In-Tree-Plug-in-Vorgangsaufrufe an den CSI-Treiber weiter. Da die PersistentVolume-Spezifikation unveränderlich ist, wird sie weiterhin vom integrierten Plug-in unterstützt. Die verfügbaren Funktionen sind dieselben wie beim in-tree-volume plugin.
Der vollständige Umfang von CSI-Funktionen, z. B. Volume Expansion und Volume Snapshot, ist für solche Volumes nicht verfügbar. Damit Sie diese Funktionen nutzen können, müssen zustandsorientierte Arbeitslasten vollständig zu CSI migriert werden. Dazu müssen die PersistentVolumes, die vom vSphere CSI-Treiber unterstützt werden, neu erstellt werden. Mit dem CSI-Migrationstool können Sie zustandsorientierte Arbeitslasten zu CSI migrieren und alle CSI-Funktionen nutzen.
Mit diesem Tool können Sie das PersistentVolume und den PersistentVolumeClaim eines StatefulSets per Rolling Update zu CSI migrieren, ohne dass es zu Ausfallzeiten der Anwendung kommt. Dieses Tool sichert die Kubernetes-Ressourcen in einem lokalen Verzeichnis und setzt ReclaimPolicy vor der Migration auf Retain. Es gehen also keine Daten verloren.
Beschränkung
Die automatisierten Tools werden nur für Google Distributed Cloud-Versionen unterstützt, die vollständig unterstützt werden.
Es funktioniert nur mit StatefulSets. Sie können Preflight-Prüfungen mithilfe des Tools ausführen, um ein paar Sicherheitsprüfungen vor der Verwendung der Tools auszuführen.
./statefulset-csi-migration-tool preflight \
--kubeconfig ADMIN_KUBECONFIG \
--cluster-name USER_CLUSTER_NAME \
--sts-name STS_NAME \
--sts-namespace STS_NAMESPACE \
--intree-storageclass INTREE_STORAGECLASS \
--csi-storageclass CSI_STORAGECLASS
Ersetzen Sie dabei Folgendes:
ADMIN_KUBECONFIG: Pfad der Datei "kubeconfig" Ihres AdministratorclustersUSER_CLUSTER_NAME: Wenn das StatefulSet im Nutzercluster ausgeführt wird, geben Sie den Namen des Nutzerclusters an. Überspringen Sie dieses Flag, wenn die Arbeitslast auf dem Administratorcluster ausgeführt wird.STS_NAME: Name des StatefulSet.STS_NAMESPACE: Namespace des StatefulSet.INTREE_STORAGECLASS: der Name der in-tree-StorageClass, der das PersistentVolume des StatefulSets unterstützt.CSI_STORAGECLASS: der Name der CSI-StorageClass, die das PersistentVolume des StatefulSets nach der Migration unterstützt.
Herunterladen
Laden Sie das Tool unter gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool herunter.
Dieses Tool befindet sich in der Vorabversion.
Vorgehensweise
In diesem Abschnitt werden die Schritte beschrieben, die zum Migrieren von StatefulSets vom integrierten internen vCP-Bereitsteller (kubernetes.io/vsphere-volume) in vSphere zum CSI-Bereitsteller (csi.vsphere.vmware.com) in vSphere erforderlich sind.
./statefulset-csi-migration-tool rolling-migration all \
--kubeconfig ADMIN_KUBECONFIG \
--cluster-name USER_CLUSTER_NAME \
--sts-name STS_NAME \
--sts-namespace STS_NAMESPACE \
--intree-storageclass INTREE_STORAGECLASS \
--csi-storageclass CSI_STORAGECLASS \
--working-directory WORKING_DIRECTORY
Ersetzen Sie dabei Folgendes:
ADMIN_KUBECONFIG: Pfad der Datei "kubeconfig" Ihres Administratorclusters
USER_CLUSTER_NAME: Wenn das StatefulSet im Nutzercluster ausgeführt wird, geben Sie den Namen des Nutzerclusters an. Überspringen Sie dieses Flag, wenn die Arbeitslast auf dem Administratorcluster ausgeführt wird.
STS_NAME: Name des StatefulSet.
STS_NAMESPACE: Namespace des StatefulSet.
INTREE_STORAGECLASS: der Name der in-tree-StorageClass, der das PersistentVolume des StatefulSets unterstützt.
CSI_STORAGECLASS: der Name der CSI-StorageClass, die das PersistentVolume des StatefulSets nach der Migration unterstützt.
WORKING_DIRECTORY: das lokale Verzeichnis, in dem die Kubernetes-Ressourcenspezifikation von StatefulSet und dessen Pod, PersistentVolumeClaim und PersistentVolume gespeichert werden soll. Der Verzeichnisname muss für jedes StatefulSet eindeutig sein. Dieses Verzeichnis sollte leer sein oder nicht existieren. Am besten erstellen Sie dieses Verzeichnis nicht, damit das Tooling eines für Sie erstellen kann.
Mit diesem Befehl werden die folgenden Aufgaben ausgeführt:
Erstellt eine Sicherung des StatefulSet und seiner Abhängigkeiten wie PersistentVolume, PersistentVolumeClaim und Pod-Replikat-Spezifikationen im lokalen Arbeitsverzeichnis.
Löscht das StatefulSet mit der Richtlinie zum Löschen von verwaisten Ressourcen. In diesem Schritt wird nur das StatefulSet gelöscht, nicht aber seine Abhängigkeiten wie die Pod-Replikate, PersistentVolume und PersistentVolumeClaim.
Migriert jeden Pod zu CSI-Treibern (ähnlich wie Option 1) und führt Folgendes aus:
a. Legt das Feld „ReclaimPolicy“ des PersistentVolume auf „Retain“ fest.
b. Löscht den Pod, das PersistentVolume und den PersistentVolumeClaim.
c. Konvertiert die vorhandene VMDK in FCD.
d. Erstellt PersistentVolume, PersistentVolumeClaim und Pod neu.
Das StatefulSet wird neu erstellt, aber das Feld „PVCTemplate“ in der Spezifikation verweist auf die CSI-StorageClass. Der StatefulSet-Controller sollte sich den verwaisten Replikaten wieder zuordnen.