Importmengen
Sie können vorhandene Speichervolumes als Kubernetes PV mit tridentctl import importieren oder indem Sie einen Persistent Volume Claim (PVC) mit Trident-Importannotationen erstellen.
Überblick und Überlegungen
Sie könnten ein Volume in Trident importieren, um:
-
Eine Anwendung containerisieren und ihren vorhandenen Datensatz wiederverwenden
-
Verwenden Sie einen Klon eines Datensatzes für eine kurzlebige Anwendung
-
Einen ausgefallenen Kubernetes-Cluster wiederherstellen
-
Anwendungsdaten während der Notfallwiederherstellung migrieren
Bevor Sie ein Volume importieren, beachten Sie die folgenden Hinweise.
-
Trident kann nur ONTAP-Volumes vom Typ RW (Read-Write) importieren. Volumes vom Typ DP (data protection) sind SnapMirror Ziel-Volumes. Sie sollten die Spiegelungsbeziehung aufheben, bevor Sie das Volume in Trident importieren.
-
Wir empfehlen, Volumes ohne aktive Verbindungen zu importieren. Um ein aktiv genutztes Volume zu importieren, klonen Sie das Volume und führen Sie dann den Import durch.
Dies ist besonders wichtig für Block-Volumes, da Kubernetes die vorherige Verbindung nicht erkennen und leicht ein aktives Volume an einen Pod anhängen könnte. Dies kann zu Datenbeschädigung führen. -
Obwohl
StorageClassauf einem PVC angegeben werden muss, verwendet Trident diesen Parameter beim Import nicht. Speicherklassen werden während der Volume-Erstellung verwendet, um anhand der Speichereigenschaften aus den verfügbaren Pools auszuwählen. Da das Volume bereits existiert, ist beim Import keine Poolauswahl erforderlich. Daher schlägt der Import nicht fehl, selbst wenn das Volume auf einem Backend oder in einem Pool existiert, der nicht der im PVC angegebenen Speicherklasse entspricht. -
Die vorhandene Volumengröße wird ermittelt und im PVC festgelegt. Nachdem das Volumen vom Speichertreiber importiert wurde, wird das PV mit einer ClaimRef auf das PVC erstellt.
-
Die Rückgewinnungsrichtlinie ist anfänglich auf
retainim PV festgelegt. Nachdem Kubernetes PVC und PV erfolgreich gebunden hat, wird die Rückgewinnungsrichtlinie aktualisiert, um der Rückgewinnungsrichtlinie der Storage Class zu entsprechen. -
Wenn die Rückgewinnungsrichtlinie der Storage Class
deleteist, wird das Speichervolume gelöscht, wenn das PV gelöscht wird.
-
-
Standardmäßig verwaltet Trident die PVC und benennt das FlexVol Volume und die LUN im Backend um. Sie können das
--no-manageFlag verwenden, um ein nicht verwaltetes Volume zu importieren, und das--no-renameFlag, um den Volume-Namen beizubehalten.-
--no-manage* - Wenn Sie das--no-manageFlag verwenden, führt Trident während des gesamten Lebenszyklus der Objekte keine zusätzlichen Operationen an der PVC oder PV durch. Das Speichervolume wird beim Löschen der PV nicht gelöscht und andere Operationen wie das Klonen und die Größenänderung von Volumes werden ebenfalls ignoriert. -
--no-rename* - Wenn Sie das--no-renameFlag verwenden, behält Trident beim Importieren von Volumes den vorhandenen Volume-Namen bei und verwaltet den Lebenszyklus der Volumes. Diese Option wird nur für dieontap-nas,ontap-san(einschließlich ASA r2-Systeme) undontap-san-economyTreiber unterstützt.Diese Optionen sind nützlich, wenn Sie Kubernetes für containerisierte Workloads verwenden möchten, aber ansonsten den Lebenszyklus des Speichervolumens außerhalb von Kubernetes verwalten möchten.
-
-
Dem PVC und PV wird eine Anmerkung hinzugefügt, die zwei Zwecken dient: Sie zeigt an, dass das Volume importiert wurde und ob der PVC und PV verwaltet werden. Diese Anmerkung sollte nicht verändert oder entfernt werden.
Importieren Sie ein Volume
Sie können ein Volume entweder mit tridentctl import oder durch das Erstellen einer PVC mit Trident-Importanmerkungen importieren.
|
|
Wenn Sie PVC-Anmerkungen verwenden, müssen Sie tridentctl nicht herunterladen oder verwenden, um das Volume zu importieren.
|
-
Erstellen Sie eine PVC-Datei (zum Beispiel
pvc.yaml), die zur Erstellung des PVC verwendet wird. Die PVC-Datei solltename,namespace,accessModesundstorageClassNameenthalten. Optional können SieunixPermissionsin Ihrer PVC-Definition angeben.Das Folgende ist ein Beispiel für eine Mindestspezifikation:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my_claim namespace: my_namespace spec: accessModes: - ReadWriteOnce storageClassName: my_storage_classGeben Sie nur die erforderlichen Parameter an. Zusätzliche Parameter wie PV-Name oder Volume-Größe können dazu führen, dass der Importbefehl fehlschlägt. -
Verwenden Sie den
tridentctl importBefehl, um den Namen des Trident Backend, das das Volume enthält, und den Namen, der das Volume auf dem Storage eindeutig identifiziert (zum Beispiel: ONTAP FlexVol, Element Volume), anzugeben. Das-fArgument ist erforderlich, um den Pfad zur PVC-Datei anzugeben.tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
-
Erstellen Sie eine PVC-YAML-Datei (zum Beispiel
pvc.yaml) mit den erforderlichen Trident-Importannotationen. Die PVC-Datei sollte Folgendes enthalten:-
nameandnamespacein Metadaten -
accessModes,resources.requests.storage, undstorageClassNamein Spezifikation -
Anmerkungen:
-
trident.netapp.io/importOriginalName: Volumenname auf dem Backend -
trident.netapp.io/importBackendUUID: Backend-UUID, wo das Volume existiert -
trident.netapp.io/notManaged(Optional): Auf"true"für nicht verwaltete Volumes festlegen. Standardwert ist"false".Im Folgenden finden Sie eine Beispielspezifikation für den Import eines verwalteten Volumes:
-
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: <pvc-name> namespace: <namespace> annotations: trident.netapp.io/importOriginalName: "<volume-name>" trident.netapp.io/importBackendUUID: "<backend-uuid>" spec: accessModes: - ReadWriteOnce resources: requests: storage: <size> storageClassName: <storage-class-name> -
-
Wenden Sie die PVC YAML-Datei auf Ihren Kubernetes-Cluster an:
kubectl apply -f <pvc-file>.yaml
Trident wird das Volumen automatisch importieren und es an das PVC binden.
Beispiele
Überprüfen Sie die folgenden Beispiele für den Volumenimport für unterstützte Treiber.
ONTAP NAS und ONTAP NAS FlexGroup
Trident unterstützt den Volumenimport mithilfe der ontap-nas und ontap-nas-flexgroup Treiber.
|
|
|
Jedes mit dem ontap-nas Treiber erstellte Volume ist ein FlexVol Volume auf dem ONTAP Cluster. Das Importieren von FlexVol Volumes mit dem ontap-nas Treiber funktioniert genauso. Ein FlexVol Volume, das bereits auf einem ONTAP Cluster existiert, kann als ontap-nas PVC importiert werden. Ebenso können FlexGroup Volumes als ontap-nas-flexgroup PVCs importiert werden.
Die folgenden Beispiele zeigen, wie verwaltete und nicht verwaltete Volumes mit tridentctl importiert werden.
Das folgende Beispiel importiert ein Volume mit dem Namen managed_volume auf einem Backend mit dem Namen ontap_nas:
tridentctl import volume ontap_nas managed_volume -f <path-to-pvc-file> +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-bf5ad463-afbb-11e9-8d9f-5254004dfdb7 | 1.0 GiB | standard | file | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Bei Verwendung des --no-manage Arguments benennt Trident das Volume nicht um.
Das folgende Beispiel importiert unmanaged_volume auf dem ontap_nas Backend:
tridentctl import volume nas_blog unmanaged_volume -f <path-to-pvc-file> --no-manage +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-df07d542-afbc-11e9-8d9f-5254004dfdb7 | 1.0 GiB | standard | file | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | false | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Die folgenden Beispiele zeigen, wie verwaltete und nicht verwaltete Volumes mithilfe von PVC-Annotationen importiert werden.
Das folgende Beispiel importiert ein 1GiB ontap-nas Volume namens ontap_volume1 vom Backend 81abcb27-ea63-49bb-b606-0a5315ac5f21 mit RWO-Zugriffsmodus, der mithilfe von PVC-Annotationen festgelegt ist:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: <managed-imported-volume>
namespace: <namespace>
annotations:
trident.netapp.io/importOriginalName: "ontap_volume1"
trident.netapp.io/importBackendUUID: "81abcb27-ea63-49bb-b606-0a5315ac5f21"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: <storage-class-name>
Das folgende Beispiel importiert ein 1Gi ontap-nas Volume mit dem Namen ontap-volume2 vom Backend 34abcb27-ea63-49bb-b606-0a5315ac5f34 mit festgelegtem RWO-Zugriffsmodus mithilfe von PVC-Annotationen:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: <umanaged-imported-volume>
namespace: <namespace>
annotations:
trident.netapp.io/importOriginalName: "ontap-volume2"
trident.netapp.io/importBackendUUID: "34abcb27-ea63-49bb-b606-0a5315ac5f34"
trident.netapp.io/notManaged: "true"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: <storage-class-name>
ONTAP SAN
Trident unterstützt den Volume-Import mit den ontap-san (iSCSI, NVMe/TCP und FC) und ontap-san-economy-Treibern.
Trident kann ONTAP SAN FlexVol Volumes importieren, die eine einzelne LUN enthalten. Dies entspricht dem ontap-san Treiber, der für jede PVC ein FlexVol Volume erstellt und eine LUN innerhalb des FlexVol Volumes anlegt. Trident importiert das FlexVol Volume und ordnet es der PVC-Definition zu. Trident kann ontap-san-economy Volumes importieren, die mehrere LUNs enthalten.
Die folgenden Beispiele zeigen, wie verwaltete und nicht verwaltete Volumes importiert werden:
Für verwaltete Volumes benennt Trident das FlexVol Volume in das pvc-<uuid> Format um und die LUN innerhalb des FlexVol Volume in lun0 um.
Das folgende Beispiel importiert das ontap-san-managed FlexVol Volume, das sich auf dem ontap_san_default Backend befindet:
tridentctl import volume ontapsan_san_default ontap-san-managed -f pvc-basic-import.yaml -n trident -d +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+ | pvc-d6ee4f54-4e40-4454-92fd-d00fc228d74a | 20 MiB | basic | block | cd394786-ddd5-4470-adc3-10c5ce4ca757 | online | true | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Das folgende Beispiel importiert unmanaged_example_volume auf dem ontap_san Backend:
tridentctl import volume -n trident san_blog unmanaged_example_volume -f pvc-import.yaml --no-manage +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-1fc999c9-ce8c-459c-82e4-ed4380a4b228 | 1.0 GiB | san-blog | block | e3275890-7d80-4af6-90cc-c7a0759f555a | online | false | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Wenn Sie LUNs Igroups zugeordnet haben, die denselben IQN wie ein Kubernetes-Knoten-IQN verwenden (siehe folgendes Beispiel), erhalten Sie die Fehlermeldung: LUN already mapped to initiator(s) in this group. Sie müssen den Initiator entfernen oder die Zuordnung der LUN aufheben, um das Volume zu importieren.

Element
Trident unterstützt NetApp Element Software und NetApp HCI Volume-Import mit dem solidfire-san Treiber.
|
|
Der Element-Treiber unterstützt doppelte Volume-Namen. Trident gibt jedoch einen Fehler zurück, wenn doppelte Volume-Namen vorhanden sind. Als Workaround klonen Sie das Volume, vergeben einen eindeutigen Volume-Namen und importieren das geklonte Volume. |
Das folgende Beispiel importiert ein element-managed Volume auf Backend element_default.
tridentctl import volume element_default element-managed -f pvc-basic-import.yaml -n trident -d +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+ | pvc-970ce1ca-2096-4ecd-8545-ac7edc24a8fe | 10 GiB | basic-element | block | d3ba047a-ea0b-43f9-9c42-e38e58301c49 | online | true | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Azure NetApp Files
Trident unterstützt den Volumenimport mithilfe des azure-netapp-files Treibers.
|
|
Um ein Azure NetApp Files-Volume zu importieren, identifizieren Sie das Volume anhand seines Volume-Pfads. Der Volume-Pfad ist der Teil des Exportpfads des Volumes nach dem :/. Wenn der Mount-Pfad beispielsweise 10.0.0.2:/importvol1 ist, ist der Volume-Pfad importvol1.
|
Das folgende Beispiel importiert ein azure-netapp-files Volume auf Backend azurenetappfiles_40517 mit dem Volume-Pfad importvol1.
tridentctl import volume azurenetappfiles_40517 importvol1 -f <path-to-pvc-file> -n trident +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-0ee95d60-fd5c-448d-b505-b72901b3a4ab | 100 GiB | anf-storage | file | 1c01274f-d94b-44a3-98a3-04c953c9a51e | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Google Cloud NetApp Volumes
Trident unterstützt den Volumenimport mithilfe des google-cloud-netapp-volumes Treibers.
Das folgende Beispiel importiert ein Volume auf Backend backend-tbc-gcnv1 mit dem Volume testvoleasiaeast1.
tridentctl import volume backend-tbc-gcnv1 "testvoleasiaeast1" -f < path-to-pvc> -n trident +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+ | pvc-a69cda19-218c-4ca9-a941-aea05dd13dc0 | 10 GiB | gcnv-nfs-sc-identity | file | 8c18cdf1-0770-4bc0-bcc5-c6295fe6d837 | online | true | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
Das folgende Beispiel importiert ein google-cloud-netapp-volumes Volume, wenn sich zwei Volumes in derselben Region befinden:
tridentctl import volume backend-tbc-gcnv1 "projects/123456789100/locations/asia-east1-a/volumes/testvoleasiaeast1" -f <path-to-pvc> -n trident +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+ | pvc-a69cda19-218c-4ca9-a941-aea05dd13dc0 | 10 GiB | gcnv-nfs-sc-identity | file | 8c18cdf1-0770-4bc0-bcc5-c6295fe6d837 | online | true | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+