In diesem Dokument wird beschrieben, wie Sie einen vSphere-Datenspeicher zu Storage Policy Based Management (SPBM) migrieren.
Diese Seite richtet sich an Speicherspezialisten, die Speicherleistung, ‑nutzung und ‑kosten konfigurieren und verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
1.30: Allgemein verfügbar
1.29: Vorabversion
1.16 und älter: Nicht verfügbar
Kontext
Sie können einen Datenspeicher in Clusterkonfigurationsdateien an vier Stellen angeben:
Administratorcluster: vCenter.datastore
Nutzercluster auf Clusterebene, einschließlich Knoten der Steuerungsebene und aller Worker-Knotenpools: vCenter.datastore
Knoten der Steuerungsebene des Nutzerclusters: masterNode.vsphere.datastore
Worker-Knotenpools für Nutzercluster: nodePools[i].vsphere.datastore
Die Übernahme für diese Felder ist folgendermaßen:
adminCluster.vCenter.datastore -> userCluster.vCenter.datastore -> (userCluster.masterNode.vsphere.datastore and userCluster.nodePools[i].vsphere.datastore)
Beispiele:
Wenn
userCluster.vCenter.datastore
leer ist, wird der Wert vonadminCluster.vCenter.datastore
übernommen.Wenn
userCluster.nodePools[i].vsphere.datastore
leer ist, wird der Wert vonuserCluster.vCenter.datastore
übernommen.
Es gibt vier Stellen, an denen Sie eine Speicherrichtlinie angeben können:
Administratorcluster vCenter.storagePolicyName
Nutzercluster auf Clusterebene, einschließlich Knoten der Steuerungsebene und aller Worker-Knotenpools: vCenter.storagePolicyName
Knoten der Steuerungsebene des Nutzerclusters: masterNode.vsphere.storagePolicyName
Worker-Knotenpools des Nutzerclusters: nodePools[i].vsphere.storagePolicyName
Die Übernahme für die storagePolicyName
-Felder ist dieselbe wie für die datastore
-Felder.
Hinweise
- Dies ist eine einseitige Migration. Die Migration zum vorherigen Status wird nicht unterstützt.
- Der Datenspeicher muss mit der neuen Speicherrichtlinie kompatibel sein, die Sie festlegen möchten.
- Es werden nur Administratorcluster mit Hochverfügbarkeit (HA) unterstützt. Wenn Ihr Administratorcluster nicht hochverfügbar ist, müssen Sie ihn zuerst zu HA migrieren.
Nutzercluster migrieren
Die Schritte, die Sie für die Migration ausführen, hängen davon ab, ob Sie den gesamten Nutzercluster oder die Knoten der Steuerungsebene und die Worker-Knotenpools separat migrieren möchten. Mit dieser Option können Sie verschiedene Speicherrichtlinien für Knoten der Steuerungsebene und Worker-Knotenpools auswählen.
Beachten Sie bei der Planung eines Wartungsfensters Folgendes:
Für die Migration des gesamten Clusters ist nur ein Cluster-Update erforderlich.
Für die separate Migration der Steuerungsebenenknoten und Worker-Knotenpools sind zwei Clusterupdates erforderlich.
Gesamter Cluster
Führen Sie diese Schritte aus, wenn Sie den gesamten Cluster migrieren möchten, einschließlich aller Knoten der Steuerungsebene und Worker-Knotenpools. Die Version Ihres Nutzerclusters muss mindestens 1.30 sein.
Ändern Sie die Konfigurationsdatei des Nutzerclusters so:
Legen Sie für das Feld
vCenter.storagePolicyName
den Namen der Speicherrichtlinie fest.Entfernen oder kommentieren Sie Folgendes aus, falls es angegeben ist:
- Feld
vCenter.datastore
masterNode.vsphere
-Abschnittnodepools[i].vsphere.datastore
nodepools[i].vsphere.storagePolicyName
- Feld
Die folgenden Beispielkonfigurationen zeigen diese Änderungen.
Vor den Änderungen:
vCenter: datastore: ds-1
Nach den Änderungen:
vCenter: storagePolicyName: sp-1 # datastore: ds-1
Aktualisieren Sie den Nutzercluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
ADMIN_CLUSTER_KUBECONFIG
: Pfad der kubeconfig-Datei des Administratorclusters.USER_CLUSTER_CONFIG
: der Pfad zur Konfigurationsdatei des Nutzerclusters.
Mitgelieferte StorageClass
aktualisieren
Nachdem Sie die Konfigurationseinstellungen im Cluster aktualisiert haben, müssen Sie das gebündelte StorageClass
aktualisieren.
Rufen Sie den aktuellen Standardwert für
StorageClass
für das gebündeltevsphere-csi-driver
mit dem Namenstandard-rwo
ab und speichern Sie ihn in einer lokalen Datei mit dem Namenstorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Ersetzen Sie
USER_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig-Datei des Nutzerclusters.Erstellen Sie als Vorsichtsmaßnahme eine Kopie von
storage-class.yaml
, da Sie Änderungen an der Datei vornehmen müssen:cp storage-class.yaml storage-class.yaml-backup.yaml
Löschen Sie die Standard-
StorageClass
aus dem Cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Aktualisieren Sie die Konfiguration in
storage-class.yaml
so:Löschen Sie die folgenden Felder oder kommentieren Sie sie aus:
parameters.datastoreURL
resourceVersion
Fügen Sie das Feld
parameters.storagePolicyName
hinzu und legen Sie es auf den Namen der Speicherrichtlinie fest.
Die folgenden Beispielkonfigurationen zeigen diese Änderungen.
Vor den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Nach den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Wenden Sie die geänderte Datei
StorageClass
auf den Nutzercluster an:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Nur Kubeception-Nutzercluster
Bei Kubeception-Nutzerclustern müssen Sie die StorageClass
für die Knoten der Steuerungsebene des Nutzerclusters im Administratorcluster aktualisieren. In Kubeception-Clustern ist das Konfigurationsfeld enableControlplaneV2
auf false
festgelegt.
Wenn Controlplane V2 aktiviert ist, wird die Steuerungsebene für den Nutzercluster im Nutzercluster selbst ausgeführt. Wenn Controlplane V2 nicht aktiviert ist, wird die Steuerungsebene für den Nutzercluster im Administratorcluster ausgeführt. Dies wird als Kubeception bezeichnet.
Führen Sie den folgenden Befehl aus, um festzustellen, ob Controlplane V2 für den Cluster aktiviert ist:
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Wenn die Ausgabe false
ist, führen Sie die folgenden Schritte aus, um die Standard-StorageClass
für die Knoten der Steuerungsebene des Nutzerclusters im Administratorcluster zu aktualisieren:
Rufen Sie den aktuellen Standardwert für
StorageClass
für das gebündeltevsphere-csi-driver
mit dem NamenUSER_CLUSTER_NAME-csi
ab und speichern Sie ihn in einer lokalen Datei mit dem Namenstorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Ersetzen Sie
ADMIN_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig des Administratorclusters.Erstellen Sie als Vorsichtsmaßnahme eine Kopie von
storage-class-kubeception.yaml
, da Sie Änderungen an der Datei vornehmen müssen:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Löschen Sie die Standard-
StorageClass
aus dem Cluster:kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Aktualisieren Sie die Konfiguration in
storage-class-kubeception.yaml
so:Löschen Sie die folgenden Felder oder kommentieren Sie sie aus:
parameters.datastoreURL
resourceVersion
Fügen Sie das Feld
parameters.storagePolicyName
hinzu und legen Sie es auf den Namen der Speicherrichtlinie fest.
Die folgenden Beispielkonfigurationen zeigen diese Änderungen.
Vor den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Nach den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Wenden Sie die geänderte Datei
StorageClass
auf den Administratorcluster an:kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Nach der Migration
Wenn Sie nach einer Migration einen neuen Knotenpool erstellen, folgt der neue Pool den Übernahmeregeln des aktualisierten Clusters.
Angenommen, Sie haben vCenter.datastore
zu einer Speicherrichtlinie migriert.
Wenn Sie jetzt einen neuen Knotenpool erstellen und sowohl nodePools[i].vsphere.datastore
als auch nodePools[i].vsphere.storagePolicyName
leer lassen, wird die in vCenter.storagePolicyName
angegebene Speicherrichtlinie auf den neuen Knotenpool angewendet.
Knoten separat
Führen Sie diese Schritte aus, wenn Sie die Knoten der Steuerungsebene und die Worker-Knotenpools separat migrieren möchten.
Nur Version 1.29: Rufen Sie die aktuelle Clusterkonfiguration ab. Dieser Schritt ist nicht erforderlich, wenn der Nutzercluster Version 1.30 oder höher hat.
gkectl get-config cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster-name USER_CLUSTER_NAME \ --output-dir ./gen-files
Ersetzen Sie Folgendes:
ADMIN_CLUSTER_KUBECONFIG
: der Pfad der kubeconfig-Datei für den Administratorcluster.USER_CLUSTER_NAME
: Der Name des Nutzerclusters.
Suchen Sie in
./gen-files
nachuser-cluster.yaml
.Weitere Informationen zum Abrufen der Konfigurationsdatei finden Sie unter Konfigurationsdateien aus einem Cluster generieren.
In der generierten Konfigurationsdatei ist der Name
datastore
auf jeder Ebene festgelegt: Cluster,masterNode
(für Steuerungsebenenknoten) undnodepools
(für Worker-Knoten), wie im folgenden Beispiel gezeigt:apiVersion: v1 kind: UserCluster ... # VCenter config in cluster level: vCenter: datastore: ds-1 ... # VCenter config in master node level: masterNode: vsphere: datastore: ds-1 ... # VCenter config in nodepool level: nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Knoten der Steuerungsebene migrieren
Führen Sie die folgenden Schritte aus, um die Knoten der Steuerungsebene zu migrieren:
Nehmen Sie die folgenden Änderungen an der Konfigurationsdatei des Nutzerclusters vor:
- Legen Sie das Feld
masterNode.vsphere.storagePolicyName
mit dem Namen der Speicherrichtlinie fest. - Löschen Sie das Feld
masterNode.vsphere.datastore
oder kommentieren Sie es aus.
Die folgenden Beispielkonfigurationen zeigen diese Änderungen.
Vor den Änderungen:
masterNode: vsphere: datastore: ds-1
Nach den Änderungen:
masterNode: vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Legen Sie das Feld
Aktualisieren Sie den Nutzercluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
ADMIN_CLUSTER_KUBECONFIG
: Pfad der kubeconfig-Datei des Administratorclusters.USER_CLUSTER_CONFIG
: der Pfad zur Konfigurationsdatei des Nutzerclusters.
Warten Sie, bis der Aktualisierungsbefehl abgeschlossen ist, bevor Sie Knotenpools aktualisieren.
Knotenpools migrieren
Führen Sie die folgenden Schritte aus, um alle Knotenpools zu migrieren:
Nehmen Sie die folgenden Änderungen an der Konfigurationsdatei des Nutzerclusters vor:
- Legen Sie für jedes Feld
nodePools[i].vsphere.storagePolicyName
den Namen der Speicherrichtlinie fest. - Löschen Sie jedes
nodePools[i].vsphere.datastore
-Feld oder kommentieren Sie es aus.
Die folgenden Beispielkonfigurationen zeigen diese Änderungen.
Vor den Änderungen:
nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Nach den Änderungen:
nodepools: - name: pool-1 vsphere: # datastore: ds-1 storagePolicyName: sp-1 - name: pool-2 vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Legen Sie für jedes Feld
Aktualisieren Sie den Nutzercluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Optional: Speicherrichtlinie auf Clusterebene aktualisieren
Für Nutzercluster sind die Felder datastore
und storagePolicyName
im Abschnitt vCenter
auf Clusterebene ein Standardwert, der von den Abschnitten masterNode
und nodepools
verwendet wird. Nachdem Sie die vorherigen Schritte ausgeführt haben, werden die Einstellungen für vCenter
datastore
und storagePolicyName
auf Clusterebene von keinen Clusterkomponenten mehr verwendet. Sie können den Abschnitt vCenter
auf Clusterebene beibehalten oder ihn so aktualisieren, dass er mit masterNode
und nodepools
übereinstimmt.
Wenn Sie die Einstellung beibehalten, empfehlen wir, dass Sie über dem vCenter
-Abschnitt auf Clusterebene einen Kommentar hinzufügen, in dem Sie darauf hinweisen, dass die Einstellung ignoriert wird, weil sie durch Einstellungen in den Abschnitten masterNode
und nodepools
überschrieben wird.
Sie können den Abschnitt vCenter
auf Clusterebene an die Abschnitte masterNode
und nodepools
anpassen und den Cluster mit den folgenden Schritten aktualisieren:
Ändern Sie die Konfigurationsdatei des Nutzerclusters so:
- Legen Sie für das Feld
vCenter.storagePolicyName
den Namen der Speicherrichtlinie fest. - Entfernen Sie das Feld
vCenter.datastore
oder kommentieren Sie es aus.
- Legen Sie für das Feld
Aktualisieren Sie den Nutzercluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Mit diesem Updatebefehl werden keine Änderungen am Cluster vorgenommen, aber die Felder
OnPremUserCluster
,vCenter.datastore
undvCenter.storagePolicyName
auf der Serverseite werden aktualisiert.
Mitgelieferte StorageClass
aktualisieren
Nachdem Sie die Konfigurationseinstellungen aktualisiert haben, müssen Sie das gebündelte StorageClass
aktualisieren.
Rufen Sie den aktuellen Standardwert für
StorageClass
für das gebündeltevsphere-csi-driver
mit dem Namenstandard-rwo
ab und speichern Sie ihn in einer lokalen Datei mit dem Namenstorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Ersetzen Sie
USER_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig-Datei des Nutzerclusters.Erstellen Sie als Vorsichtsmaßnahme eine Kopie von
storage-class.yaml
, da Sie Änderungen an der Datei vornehmen müssen:cp storage-class.yaml storage-class.yaml-backup.yaml
Löschen Sie die Standard-
StorageClass
aus dem Cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Aktualisieren Sie die Konfiguration in
storage-class.yaml
so:Löschen Sie die folgenden Felder oder kommentieren Sie sie aus:
parameters.datastoreURL
resourceVersion
Fügen Sie das Feld
parameters.storagePolicyName
hinzu und legen Sie es auf den Namen der Speicherrichtlinie fest.
Die folgenden Beispielkonfigurationen zeigen diese Änderungen.
Vor den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Nach den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Wenden Sie die geänderte Datei
StorageClass
auf den Nutzercluster an:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Nur Kubeception-Nutzercluster
Bei Kubeception-Nutzerclustern müssen Sie die StorageClass
für die Knoten der Steuerungsebene des Nutzerclusters im Administratorcluster aktualisieren. In Kubeception-Clustern ist das Konfigurationsfeld enableControlplaneV2
auf false
festgelegt.
Wenn Controlplane V2 aktiviert ist, wird die Steuerungsebene für den Nutzercluster im Nutzercluster selbst ausgeführt. Wenn Controlplane V2 nicht aktiviert ist, wird die Steuerungsebene für den Nutzercluster im Administratorcluster ausgeführt. Dies wird als Kubeception bezeichnet.
Führen Sie den folgenden Befehl aus, um festzustellen, ob Controlplane V2 für den Cluster aktiviert ist:
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Wenn die Ausgabe false
ist, führen Sie die folgenden Schritte aus, um die Standard-StorageClass
für die Knoten der Steuerungsebene des Nutzerclusters im Administratorcluster zu aktualisieren:
Rufen Sie den aktuellen Standardwert für
StorageClass
für das gebündeltevsphere-csi-driver
mit dem NamenUSER_CLUSTER_NAME-csi
ab und speichern Sie ihn in einer lokalen Datei mit dem Namenstorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Ersetzen Sie
ADMIN_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig des Administratorclusters.Erstellen Sie als Vorsichtsmaßnahme eine Kopie von
storage-class-kubeception.yaml
, da Sie Änderungen an der Datei vornehmen müssen:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Löschen Sie die Standard-
StorageClass
aus dem Cluster:kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Aktualisieren Sie die Konfiguration in
storage-class-kubeception.yaml
so:Löschen Sie die folgenden Felder oder kommentieren Sie sie aus:
parameters.datastoreURL
resourceVersion
Fügen Sie das Feld
parameters.storagePolicyName
hinzu und legen Sie es auf den Namen der Speicherrichtlinie fest.
Die folgenden Beispielkonfigurationen zeigen diese Änderungen.
Vor den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Nach den Änderungen:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Wenden Sie die geänderte
StorageClass
auf den Administratorcluster an:kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Administratorcluster migrieren
Achten Sie darauf, dass der Administratorcluster auch mit dem Namen der Speicherrichtlinie aktualisiert wird.
Nehmen Sie die folgenden Änderungen an der Konfigurationsdatei des Administratorclusters vor:
- Entfernen Sie das Feld
vCenter.datastore
oder kommentieren Sie es aus. - Legen Sie für das Feld
vCenter.storagePolicyName
den Namen der Speicherrichtlinie fest.
- Entfernen Sie das Feld
Aktualisieren Sie den Administratorcluster:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
ADMIN_CLUSTER_KUBECONFIG
: Der Pfad zur kubeconfig-Datei des Administratorclusters.ADMIN_CLUSTER_CONFIG
: der Pfad zur Konfigurationsdatei des Administratorclusters.
Speichermigration mit richtlinienbasierter Verwaltung
Nach der Migration von Datenspeicher zu SPBM verwenden Ihre Cluster jetzt SPBM. Bei der Migration werden jedoch keine Speicherarbeitslasten (z. B. Maschinendatenlaufwerke oder Container-Volumes) aus dem alten Datenspeicher verschoben.
Informationen zum Verschieben von Speicherarbeitslasten finden Sie unter Speichermigration mit richtlinienbasierter Verwaltung.