CSI-Migrationstool für StatefulSet verwenden

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

Überblick

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

Wenn das CSI-Migrationsfeature von Kubernetes in 1.15 standardmäßig aktiviert ist, funktioniert ein vom integrierten vSphere-Volume-Plug-in unterstütztes nichtflüchtiges Volume weiterhin in einer reinen CSI-Umgebung. Die CSI-Migrationsfunktion leitet vorhandene Plug-in-Vorgangsaufrufe an den CSI-Treiber weiter. Da die Persistent-Spezifikation unveränderlich ist, wird sie weiterhin vom integrierten Plug-in unterstützt. Die verfügbaren Features sind dieselben wie beim integrierten Volume-Plug-in.

Für solche Volumes ist nicht der vollständige Satz von CSI-Features wie Volume-Erweiterung und Volume-Snapshot verfügbar. Damit Sie diese Features nutzen können, müssen zustandsorientierte Arbeitslasten vollständig zu CSI migriert werden. Dazu müssen Sie die vom vSphere-CSI-Treiber unterstützten nichtflüchtige Speicher neu erstellen. Mit dem CSI-Migrationstool können Sie zustandsorientierte Arbeitslasten zu CSI migrieren und alle CSI-Features nutzen.

Dieses Tool bietet eine Möglichkeit zum rollierenden Migrieren des StatefulSets und des StatefulSets in CSI. Es kommt nicht zu Ausfallzeiten der Anwendung. Dieses Tool erstellt die Sicherung von Kubernetes-Ressourcen in einem lokalen Verzeichnis und setzt ReclaimPolicy vor der Migration auf Retain. Es gibt also keinen Datenverlust.

Beschränkung

  • Die automatisierten Tools werden nur in GKE in VMware-Versionen unterstützt, die vollständig unterstützt werden.

  • Er funktioniert nur mit StatefulSets. Sie können mit dem Tool Preflight-Prüfungen ausfü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 Name der integrierten Speicherklasse, der das StatefulSet des StatefulSets unterstützt.

  • CSI_STORAGECLASS: Der Name der CSI-Speicherklasse, der das StatefulSet des StatefulSets nach der Migration sichert.

Herunterladen

Laden Sie das Tool unter gs://gke-on-prem-release/statefulset-csi-migration-tool/v0.1/statefulset-csi-migration-tool herunter. Hinweis: Dieses Tool befindet sich in der Vorschau.

Prozedur

In diesem Abschnitt werden die Schritte beschrieben, die für die Migration von StatefulSet vom internen vCP-Bereitsteller (kubernetes.io/vsphere-volume) von vSphere zum CSI-Bereitsteller (csi.vsphere.vmware.com) von 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 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 Name der integrierten Speicherklasse, der das StatefulSet des StatefulSets unterstützt.

  • CSI_STORAGECLASS: Der Name der CSI-Speicherklasse, der das StatefulSet des StatefulSets nach der Migration sichert.

  • WORKING_DIRECTORY: das lokale Verzeichnis, in dem die Kubernetes-Ressourcenspezifikation des StatefulSets und des zugehörigen Pods, nichtflüchtiger Anspruch und nichtflüchtiger Speicher gespeichert werden soll. Der Verzeichnisname muss für jedes StatefulSet eindeutig sein. Dieses Verzeichnis sollte leer oder nicht vorhanden sein. Es empfiehlt sich, dieses Verzeichnis nicht zu erstellen, damit die Tools eines für Sie erstellen können.

Mit diesem Befehl werden die folgenden Aufgaben ausgeführt:

  1. Sie erstellt im lokalen Arbeitsverzeichnis eine Sicherung des StatefulSets und seiner Abhängigkeiten, z. B. nichtflüchtiger Speicher, nichtflüchtiger Anspruch und Pod-Replikatspezifikationen.

  2. Löscht das StatefulSet mit der Richtlinie für verwaiste Elemente. Mit diesem Schritt wird nur das StatefulSet gelöscht, jedoch nicht die zugehörigen Abhängigkeiten wie die Pod-Replikate, nichtflüchtiger Speicher und nichtflüchtiger Anspruch.

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

    a. Legt das Feld "ReclaimPolicy" des Persistentes als "Halten" fest.

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

    c. Konvertiert das vorhandene VMDK in FCD.

    d. Erstellt das nichtflüchtige Speichermedium, den PersistentVolumeClaim und den Pod noch einmal.

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