Importa volumi
È possibile importare volumi di archiviazione esistenti come PV Kubernetes utilizzando tridentctl import o creando un Persistent Volume Claim (PVC) con annotazioni di importazione Trident.
Panoramica e considerazioni
È possibile importare un volume in Trident in:
-
Containerizzare un'applicazione e riutilizzare il set di dati esistente
-
Utilizzare un clone di un set di dati per un'applicazione temporanea
-
Ricostruire un cluster Kubernetes guasto
-
Migrazione dei dati delle applicazioni durante il disaster recovery
Prima di importare un volume, esaminare le seguenti considerazioni.
-
Trident può importare solo volumi ONTAP di tipo RW (lettura-scrittura). I volumi di tipo DP (data Protection) sono volumi di destinazione SnapMirror. Interrompere la relazione di mirroring prima di importare il volume in Trident.
-
Si consiglia di importare volumi senza connessioni attive. Per importare un volume utilizzato attivamente, clonare il volume ed eseguire l'importazione.
Ciò è particolarmente importante per i volumi a blocchi, in quanto Kubernetes non sarebbe a conoscenza della connessione precedente e potrebbe facilmente collegare un volume attivo a un pod. Ciò può causare il danneggiamento dei dati. -
Sebbene
StorageClassdebba essere specificato su un PVC, Trident non utilizza questo parametro durante l'importazione. Le classi di storage vengono utilizzate durante la creazione del volume per selezionare i pool disponibili in base alle caratteristiche dello storage. Poiché il volume esiste già, durante l'importazione non è richiesta alcuna selezione del pool. Pertanto, l'importazione non avrà esito negativo anche se il volume esiste in un backend o in un pool che non corrisponde alla classe di storage specificata nel PVC. -
La dimensione del volume esistente viene determinata e impostata nel PVC. Una volta importato il volume dal driver di storage, il PV viene creato con un ClaimRef sul PVC.
-
La politica di recupero viene inizialmente impostata su
retainnel PV. Dopo che Kubernetes ha eseguito il binding con PVC e PV, la policy di recupero viene aggiornata in modo da corrispondere alla policy di recupero della classe di storage. -
Se il criterio di recupero della classe di archiviazione è
delete, il volume di archiviazione verrà eliminato quando il PV viene eliminato.
-
-
Per impostazione predefinita, Trident gestisce il PVC e rinomina FlexVol e LUN del backend. È possibile passare il
--no-manageflag per importare un volume non gestito. Se si utilizza--no-manage, Trident non esegue alcuna operazione aggiuntiva sul PVC o sul PV per il ciclo di vita degli oggetti. Il volume di storage non viene cancellato quando il PV viene cancellato e vengono ignorate anche altre operazioni come il clone del volume e il ridimensionamento del volume.Questa opzione è utile se si desidera utilizzare Kubernetes per carichi di lavoro containerizzati, ma altrimenti si desidera gestire il ciclo di vita del volume di storage al di fuori di Kubernetes. -
Al PVC e al PV viene aggiunta un'annotazione che serve a doppio scopo per indicare che il volume è stato importato e se il PVC e il PV sono gestiti. Questa annotazione non deve essere modificata o rimossa.
Importare un volume
È possibile importare un volume utilizzando tridentctl import oppure creando un PVC con annotazioni di importazione Trident.
|
|
Se si utilizzano annotazioni PVC, non è necessario scaricare o utilizzare tridentctl per importare il volume.
|
-
Crea un file PVC (ad esempio,
pvc.yaml) che verrà utilizzato per creare il PVC. Il file PVC dovrebbe includerename,namespace,accessModesestorageClassName. Facoltativamente, puoi specificareunixPermissionsnella definizione del PVC.Di seguito viene riportato un esempio di specifica minima:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my_claim namespace: my_namespace spec: accessModes: - ReadWriteOnce storageClassName: my_storage_classIncludere solo i parametri obbligatori. Parametri aggiuntivi come il nome del PV o la dimensione del volume possono causare il fallimento del comando di importazione. -
Utilizzare il
tridentctl importcomando per specificare il nome del backend Trident contenente il volume e il nome che identifica in modo univoco il volume sullo storage (ad esempio: ONTAP FlexVol, Element Volume, Cloud Volumes Service path). L' `-f`argomento è necessario per specificare il percorso del file PVC.tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
-
Creare un file PVC YAML (ad esempio,
pvc.yaml) con le annotazioni di importazione Trident richieste. Il file PVC deve includere:-
nameandnamespacenei metadati -
accessModes,resources.requests.storage, estorageClassNamenelle specifiche -
Annotazioni:
-
trident.netapp.io/importOriginalName: Nome volume sul backend -
trident.netapp.io/importBackendUUID: UUID del backend in cui esiste il volume -
trident.netapp.io/notManaged(Facoltativo): Impostare su"true"per i volumi non gestiti. L'impostazione predefinita è"false".Di seguito è riportato un esempio di specifica per l'importazione di un volume gestito:
-
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> -
-
Applica il file PVC YAML al tuo cluster Kubernetes:
kubectl apply -f <pvc-file>.yaml
Trident importerà automaticamente il volume e lo assocerà al PVC.
Esempi
Consultare i seguenti esempi di importazione di volumi per i driver supportati.
NAS ONTAP e NAS FlexGroup ONTAP
Trident supporta l'importazione dei volumi utilizzando ontap-nas driver e ontap-nas-flexgroup .
|
|
|
Ogni volume creato con il ontap-nas driver è un FlexVol nel cluster ONTAP. L'importazione di FlexVols con il ontap-nas driver funziona allo stesso modo. Un FlexVol già esistente in un cluster ONTAP può essere importato come ontap-nas PVC. Analogamente, i FlexGroup vol possono essere importati come ontap-nas-flexgroup PVC.
Gli esempi seguenti mostrano come importare volumi gestiti e non gestiti utilizzando tridentctl.
Nell'esempio seguente viene importato un volume denominato managed_volume in un backend denominato 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Quando si utilizza l' `--no-manage`argomento, Trident non rinomina il volume.
Nell'esempio seguente vengono importate unmanaged_volume sul 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
I seguenti esempi mostrano come importare volumi gestiti e non gestiti utilizzando annotazioni PVC.
Il seguente esempio importa un volume da 1GiB ontap-nas denominato ontap_volume1 dal backend 81abcb27-ea63-49bb-b606-0a5315ac5f21 con modalità di accesso RWO impostata tramite annotazioni PVC:
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>
Il seguente esempio importa 1Gi ontap-nas volume denominato ontap-volume2 dal backend 34abcb27-ea63-49bb-b606-0a5315ac5f34 con modalità di accesso RWO impostata tramite annotazioni PVC:
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 supporta l'importazione dei volumi utilizzando ontap-san driver e ontap-san-economy .
Trident può importare i FlexVol SAN di ONTAP che contengono un singolo LUN. Questa operazione è coerente con il ontap-san driver, che crea una FlexVol per ogni PVC e un LUN all'interno della FlexVol. Trident importa il FlexVol e lo associa alla definizione PVC.
I seguenti esempi mostrano come importare volumi gestiti e non gestiti:
Per i volumi gestiti, Trident rinomina FlexVol nel pvc-<uuid> formato e il LUN all'interno di FlexVol in lun0.
Nell'esempio seguente viene importato il ontap-san-managed FlexVol presente sul ontap_san_default backend:
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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Nell'esempio seguente vengono importate unmanaged_example_volume sul 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Se hai LUN mappate ad igroup che condividono un IQN con un nodo Kubernetes IQN, come mostrato nell'esempio seguente, riceverai l'errore: LUN already mapped to initiator(s) in this group. Per importare il volume, è necessario rimuovere l'iniziatore o annullare la mappatura del LUN.

Elemento
Trident supporta il software NetApp Element e l'importazione di volumi NetApp HCI utilizzando il solidfire-san driver.
|
|
Il driver Element supporta nomi di volumi duplicati. Tuttavia, Trident restituisce un errore se sono presenti nomi di volume duplicati. Come soluzione alternativa, clonare il volume, fornire un nome di volume univoco e importare il volume clonato. |
Nell'esempio seguente viene importato un element-managed volume sul 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Piattaforma Google Cloud
Trident supporta l'importazione di volumi utilizzando il gcp-cvs driver.
|
|
Per importare un volume supportato da NetApp Cloud Volumes Service in Google Cloud Platform, identificare il volume in base al relativo percorso. Il percorso del volume è la parte del percorso di esportazione del volume dopo :/ . Ad esempio, se il percorso di esportazione è 10.0.0.1:/adroit-jolly-swift, il percorso del volume è adroit-jolly-swift.
|
Nell'esempio seguente viene importato un gcp-cvs volume sul backend gcpcvs_YEppr con il percorso del volume di adroit-jolly-swift.
tridentctl import volume gcpcvs_YEppr adroit-jolly-swift -f <path-to-pvc-file> -n trident +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+ | pvc-a46ccab7-44aa-4433-94b1-e47fc8c0fa55 | 93 GiB | gcp-storage | file | e1a6e65b-299e-4568-ad05-4f0a105c888f | online | true | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Azure NetApp Files
Trident supporta l'importazione di volumi utilizzando il azure-netapp-files driver.
|
|
Per importare un volume Azure NetApp Files, identificare il volume in base al relativo percorso. Il percorso del volume è la parte del percorso di esportazione del volume dopo :/ . Ad esempio, se il percorso di montaggio è 10.0.0.2:/importvol1, il percorso del volume è importvol1.
|
Nell'esempio seguente viene importato un azure-netapp-files volume sul backend azurenetappfiles_40517 con il percorso del volume 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+