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 zwei Möglichkeiten zum Migrieren des StatefulSets und des StatefulSets in CSI. Der erste Unterbefehl migration-with-downtime umfasst Ausfallzeiten von Anwendungen und die Migration zu CSI. Mit dem zweiten Unterbefehl rolling-migration wird eine rollierende Migration zu CSI ohne Ausfallzeiten der Anwendung ausgeführt. 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 erst ab GKE on VMware Version 1.14 unterstützt.

  • 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 eines StatefulSets vom internen vCP-Bereitsteller (kubernetes.io/vsphere-volume) von vSphere zum CSI-Bereitsteller (csi.vsphere.vmware.com) von vSphere erforderlich sind. Dafür gibt es zwei Möglichkeiten:

  1. Die erste Methode umfasst das Herunterfahren der zustandsorientierten Arbeitslast und das Neuerstellen von nichtflüchtigem Speicher und nichtflüchtigem Speicher mit CSI-Feldwerten.

  2. Die zweite Methode umfasst eine rollierende Migration, bei der ein einzelnes Replikat des StatefulSets und dessen Volumes mit CSI-Feldwerten neu erstellt werden.

StatefulSet zu CSI mit Ausfallzeit migrieren

./statefulset-csi-migration-tool migration-with-downtime 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. Es erstellt im lokalen Arbeitsverzeichnis eine Sicherung des StatefulSets und seiner Abhängigkeiten, wie der Pod-Replikate, der PersistentVolumeClaim und der nichtflüchtigen Volumesspezifikationen.

  2. Legt das Feld "ReclaimPolicy" des Persistent Disk auf "Hold" fest, um zu verhindern, dass das zugrunde liegende Laufwerk gelöscht wird.

  3. Löscht die StatefulSet-Ressource. Dies führt dazu, dass die StatefulSet-Pods gelöscht werden und zu Ausfallzeiten führen.

  4. Löscht die Ressourcen 5 und 5,5 nichtflüchtige Speicher.

  5. Konvertiert für jedes Paar aus nichtflüchtigem Speicher und nichtflüchtigem Anspruch das vorhandene VMDK in FCD. Erstellt das PV und den PVC mit demselben Ressourcennamen wie zuvor, aber mit CSI-Feldern und CSI-Speicherklasse.

  6. Das StatefulSet wird wieder erstellt, aber die PVCTemplate in seiner Spezifikation verweist auf die CSI-Speicherklasse.

Rollierende Migration eines StatefulSets zu CSI ohne Ausfallzeit

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