CSI-Migrationstool für StatefulSet verwenden

In diesem Dokument wird erläutert, wie Sie mit dem CSI-Migrationstool StatefulSet zustandsorientierte Arbeitslasten von einem integrierten vSphere-Volume-Plug-in zum vSphere-CSI-Treiber in Google Distributed Cloud migrieren.

Überblick

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

Wenn die CSI-Migrationsfunktion von Kubernetes in Version 1.15 standardmäßig aktiviert ist, funktioniert ein nichtflüchtiges Volume, das vom integrierten vSphere-Volume-Plug-in gestützt wird, auch in einer reinen CSI-Umgebung. Das Feature für die CSI-Migration leitet die Vorgangsaufrufe des integrierten Plug-ins an den CSI-Treiber weiter. Da die PersistentVolume-Spezifikation unveränderlich ist, wird sie dennoch vom integrierten Plug-in gestützt. Die verfügbaren Funktionen entsprechen denen des integrierten Volume-Plug-ins.

Alle CSI-Funktionen wie Volume-Erweiterung und Volume-Snapshot sind für solche Volumes nicht verfügbar. Damit Sie diese Features nutzen können, müssen zustandsorientierte Arbeitslasten vollständig zu CSI migriert werden. Dazu müssen die nichtflüchtige Speicher mithilfe des vSphere-CSI-Treibers neu erstellt werden. Mit dem CSI-Migrationstool können Sie zustandsorientierte Arbeitslasten zu CSI migrieren und alle CSI-Features nutzen.

Dieses Tool bietet eine Möglichkeit, die Persistent- und PersistentClaim-Objekte eines StatefulSets zu CSI zu migrieren, ohne Ausfallzeiten der Anwendung zu berücksichtigen. Dieses Tool erstellt für die Sicherung von Kubernetes-Ressourcen in einem lokalen Verzeichnis und legt ReclaimPolicy vor der Migration auf Retain fest. Es kommt also nicht zu Datenverlusten.

Beschränkung

  • Die automatisierten Tools werden nur in Google Distributed Cloud-Versionen unterstützt, die vollständig unterstützt werden.

  • Es funktioniert nur mit StatefulSets. Sie können Preflight-Prüfungen mit dem Tool ausführen, um einige Sicherheitschecks durchzuführen, bevor Sie die Tools verwenden.

./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 Folgendes:

  • ADMIN_KUBECONFIG: der Pfad der kubeconfig-Datei Ihres Administratorclusters.

  • USER_CLUSTER_NAME: Wenn das StatefulSet auf dem 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 ist der Name des StatefulSets.

  • STS_NAMESPACE: Namespace des StatefulSets.

  • INTREE_STORAGECLASS: der integrierte Name der Speicherklasse, der das nichtflüchtige Volume des StatefulSets unterstützt.

  • CSI_STORAGECLASS: Name der CSI-Speicherklasse, der das nichtflüchtige Volume des StatefulSets nach der Migration unterstützt.

Herunterladen

Sie können das Tool unter gs://gke-on-prem-release/statefulset-csi-migration-tool/v0.1/statefulset-csi-migration-tool herunterladen. Dieses Tool befindet sich in der Vorschau.

Prozedur

In diesem Abschnitt werden die Schritte beschrieben, die zum Migrieren eines StatefulSets vom integrierten vCP-Bereitsteller (kubernetes.io/vsphere-volume) von vSphere zum CSI-Bereitsteller von vSphere (csi.vsphere.vmware.com) 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 Folgendes:

  • ADMIN_KUBECONFIG: der Pfad der kubeconfig-Datei Ihres Administratorclusters.

  • USER_CLUSTER_NAME: Wenn das StatefulSet auf dem 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 ist der Name des StatefulSets.

  • STS_NAMESPACE: Namespace des StatefulSets.

  • INTREE_STORAGECLASS: der integrierte Name der Speicherklasse, der das nichtflüchtige Volume des StatefulSets unterstützt.

  • CSI_STORAGECLASS: Name der CSI-Speicherklasse, der das nichtflüchtige Volume des StatefulSets nach der Migration unterstützt.

  • WORKING_DIRECTORY: das lokale Verzeichnis, in dem die Kubernetes-Ressourcenspezifikation von StatefulSet und dessen Pod, nichtflüchtiger Anspruch und nichtflüchtiges Volume gespeichert werden sollen. Der Verzeichnisname muss für jedes StatefulSet eindeutig sein. Dieses Verzeichnis sollte leer oder nicht vorhanden sein. Es ist ideal, dieses Verzeichnis nicht zu erstellen, damit die Tools eines für Sie erstellen können.

Dieser Befehl führt die folgenden Aufgaben aus:

  1. Sie erstellt eine Sicherung des StatefulSets und seiner Abhängigkeiten wie nichtflüchtiger Speicher, nichtflüchtigem Speicher und Pod-Replikat im lokalen Arbeitsverzeichnis.

  2. Löscht das StatefulSet mit einer Richtlinie für verwaistes Löschen. Mit diesem Schritt wird nur das StatefulSet gelöscht, aber nicht seine Abhängigkeiten wie die Pod-Replikate, nichtflüchtige Speicher und PersistentVolumeClaim.

  3. Migriert jeden Pod zu CSI-Treibern (ähnlich wie Option 1) und führt Folgendes aus:

    a. Legt das Feld „ReclaimPolicy“ des nichtflüchtiges Volumes auf „Retain“ fest.

    b. Löscht den Pod, das nichtflüchtige Volume und den PersistentVolumeClaim.

    c. Konvertiert das vorhandene VMDK in FCD.

    d. Sie erstellt nichtflüchtige Speicher, nichtflüchtiger Speicher und Pod neu.

  4. Es wird das StatefulSet neu erstellt, aber das PVCTemplate-Feld in seiner Spezifikation verweist auf die CSI-Speicherklasse. Der StatefulSet-Controller sollte den verwaisten Replikaten wieder zugeordnet werden.