StatefulSet CSI-Migrationstool verwenden

In diesem Dokument wird beschrieben, wie Sie mit dem StatefulSet CSI Migration Tool zustandsorientierte Arbeitslasten von einem In-Tree-vSphere-Volume-Plug-in zum vSphere CSI-Treiber in der Google Distributed Cloud migrieren.

In der folgenden Liste ist die Einführungsphase dieses Tools nach Version aufgeführt:

Unterstützte Google Distributed Cloud-Versionen: 1.30 bis 1.28

Überblick

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.

Da die Kubernetes-CSI-Migrationsfunktion in 1.15 standardmäßig aktiviert ist, funktioniert ein PersistentVolume, das vom In-Tree-vSphere-Volume-Plug-in unterstützt wird, auch in einer reinen CSI-Umgebung weiter. 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 In-Tree-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.

Dieses Tool bietet eine Möglichkeit, das PersistentVolume und den PersistentVolumeClaim eines StatefulSets schrittweise zu CSI zu migrieren, ohne dass es zu Anwendungsausfällen kommt. Dieses Tool erstellt eine Sicherung der Kubernetes-Ressourcen in einem lokalen Verzeichnis und setzt ReclaimPolicy vor der Migration auf Retain. Es kommt also zu keinem Datenverlust.

Beschränkung

  • Die automatisierten Tools werden nur auf vollständig unterstützten Google Distributed Cloud-Versionen unterstützt.

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

  • STS_NAMESPACE: Namespace des StatefulSets.

  • INTREE_STORAGECLASS: der Name der in-tree-StorageClass, der das PersistentVolume des StatefulSets unterstützt.

  • CSI_STORAGECLASS: der Name der CSI-StorageClass, der 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. Hinweis: 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 StatefulSets.

  • STS_NAMESPACE: Namespace des StatefulSets.

  • INTREE_STORAGECLASS: der Name der in-tree-StorageClass, der das PersistentVolume des StatefulSets unterstützt.

  • CSI_STORAGECLASS: der Name der CSI-StorageClass, der das PersistentVolume des StatefulSets nach der Migration unterstützt.

  • WORKING_DIRECTORY: das lokale Verzeichnis, in dem die Kubernetes-Ressourcenspezifikation von StatefulSet und sein Pod, PersistentVolumeClaim und PersistentVolume gespeichert werden. Der Verzeichnisname muss für jedes StatefulSet eindeutig sein. Dieses Verzeichnis sollte leer sein oder nicht vorhanden sein. Idealerweise erstellen Sie dieses Verzeichnis nicht, damit es von den Tools erstellt werden kann.

Dieser Befehl führt die folgenden Aufgaben aus:

  1. Erstellt eine Sicherung des StatefulSet und seiner Abhängigkeiten wie PersistentVolume, PersistentVolumeClaim und Pod-Replikatspezifikationen im lokalen Arbeitsverzeichnis.

  2. Löscht das StatefulSet mit der Richtlinie zum Löschen von Waisen. Bei diesem Schritt wird nur das StatefulSet gelöscht, aber nicht seine Abhängigkeiten wie die Pod-Replikate, das PersistentVolume und der PersistentVolumeClaim.

  3. Hier werden alle Pods zu CSI-Treibern migriert (ähnlich wie bei Option 1). Dabei geschieht Folgendes:

    a. Das Feld „ReclaimPolicy“ des PersistentVolumes wird auf „Retain“ gesetzt.

    b. Löscht den Pod, das PersistentVolume und den PersistentVolumeClaim.

    c. Konvertiert die vorhandene VMDK in FCD.

    d. PersistentVolume, PersistentVolumeClaim und Pod werden noch einmal erstellt.

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