Importar volúmenes
Puedes importar volúmenes de almacenamiento existentes como un PV de Kubernetes usando tridentctl import o creando una Persistent Volume Claim (PVC) con anotaciones de importación de Trident.
Descripción general y consideraciones
Es posible importar un volumen en Trident para lo siguiente:
-
Agrupe en contenedores una aplicación y vuelva a utilizar su conjunto de datos existente
-
Utilice el clon de un conjunto de datos para una aplicación efímera
-
Reconstruya un clúster de Kubernetes que haya fallado
-
Migración de datos de aplicaciones durante la recuperación ante desastres
Antes de importar un volumen, revise las siguientes consideraciones.
-
Trident solo puede importar volúmenes ONTAP de tipo RW (lectura y escritura). Los volúmenes del tipo DP (protección de datos) son volúmenes de destino de SnapMirror. Debe romper la relación de reflejo antes de importar el volumen a Trident.
-
Sugerimos importar volúmenes sin conexiones activas. Para importar un volumen que se usa activamente, clone el volumen y, a continuación, realice la importación.
Esto es especialmente importante en el caso de volúmenes de bloque, ya que Kubernetes no sabía que la conexión anterior y podría conectar fácilmente un volumen activo a un pod. Esto puede provocar daños en los datos. -
Aunque
StorageClassdebe especificarse en una RVP, Trident no utiliza este parámetro durante la importación. Durante la creación de volúmenes, se usan las clases de almacenamiento para seleccionar entre los pools disponibles según las características de almacenamiento. Como el volumen ya existe, no se requiere ninguna selección de pool durante la importación. Por lo tanto, la importación no fallará incluso si el volumen existe en un back-end o pool que no coincide con la clase de almacenamiento especificada en la RVP. -
El tamaño del volumen existente se determina y se establece en la RVP. Una vez que el controlador de almacenamiento importa el volumen, se crea el PV con un ClaimRef al PVC.
-
La política de reclamaciones se establece inicialmente en
retainel VP. Una vez que Kubernetes enlaza correctamente la RVP y el VP, se actualiza la política de reclamaciones para que coincida con la política de reclamaciones de la clase de almacenamiento. -
Si la política de reclamación de la clase de almacenamiento es
delete, el volumen de almacenamiento se eliminará al eliminar el VP.
-
-
De forma predeterminada, Trident administra la RVP y cambia el nombre de FlexVol y LUN en el back-end. Puede pasar
--no-managela marca para importar un volumen no gestionado. Si utiliza--no-manage, Trident no realiza ninguna operación adicional en la RVP o el VP durante el ciclo de vida de los objetos. El volumen de almacenamiento no se elimina cuando se elimina el VP, y también se ignoran otras operaciones como el clon de volumen y el cambio de tamaño de volumen.Esta opción es útil si desea usar Kubernetes para cargas de trabajo en contenedores, pero de lo contrario desea gestionar el ciclo de vida del volumen de almacenamiento fuera de Kubernetes. -
Se agrega una anotación a la RVP y al VP que tiene el doble propósito de indicar que el volumen se importó y si se administran la PVC y la VP. Esta anotación no debe modificarse ni eliminarse.
Importe un volumen
Puedes importar un volumen usando tridentctl import o creando un PVC con anotaciones de importación de Trident.
|
|
Si usas anotaciones de PVC, no necesitas descargar ni usar tridentctl para importar el volumen.
|
-
Crea un archivo PVC (por ejemplo,
pvc.yaml) que se usará para crear el PVC. El archivo PVC debe incluirname,namespace,accessModesystorageClassName. Opcionalmente, puedes especificarunixPermissionsen tu definición de PVC.A continuación se muestra un ejemplo de una especificación mínima:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my_claim namespace: my_namespace spec: accessModes: - ReadWriteOnce storageClassName: my_storage_classIncluye solo los parámetros necesarios. Parámetros adicionales como el nombre de PV o el tamaño del volumen pueden hacer que falle el comando de import. -
Utilice
tridentctl importel comando para especificar el nombre del back-end de Trident que contiene el volumen y el nombre que identifica de manera única el volumen en el almacenamiento (por ejemplo: ONTAP FlexVol, Element Volume, ruta Cloud Volumes Service). El-fargumento es necesario para especificar la ruta al archivo PVC.tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
-
Crea un archivo PVC YAML (por ejemplo,
pvc.yaml) con las anotaciones de importación de Trident necesarias. El archivo PVC debe incluir:-
nameynamespaceen metadatos -
accessModes,resources.requests.storageystorageClassNameen spec -
Anotaciones:
-
trident.netapp.io/importOriginalName: nombre del volumen en el backend -
trident.netapp.io/importBackendUUID: UUID del backend donde existe el volumen -
trident.netapp.io/notManaged(Opcional): configúralo en"true"para volúmenes no gestionados. El valor predeterminado es"false".El siguiente es un ejemplo de especificación para importar un volumen gestionado:
-
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> -
-
Aplica el archivo YAML de PVC a tu clúster de Kubernetes:
kubectl apply -f <pvc-file>.yaml
Trident importará automáticamente el volumen y lo vinculará al PVC.
Ejemplos
Revise los siguientes ejemplos de importación de volúmenes para los controladores compatibles.
NAS de ONTAP y NAS FlexGroup de ONTAP
Trident admite la importación de volúmenes mediante ontap-nas los controladores y. ontap-nas-flexgroup
|
|
|
Cada volumen creado con el ontap-nas controlador es un FlexVol en el clúster de ONTAP. La importación de FlexVols con ontap-nas el controlador funciona igual. Una FlexVol que ya existe en un clúster de ONTAP puede importarse como ontap-nas una RVP. Del mismo modo, los volúmenes de FlexGroup se pueden importar como ontap-nas-flexgroup RVP.
Los siguientes ejemplos muestran cómo importar volúmenes gestionados y no gestionados usando tridentctl.
En el ejemplo siguiente se importa un volumen managed_volume llamado en un back-end llamado 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Cuando se utiliza --no-manage el argumento, Trident no cambia el nombre del volumen.
El siguiente ejemplo importa unmanaged_volume en el 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Los siguientes ejemplos muestran cómo importar volúmenes gestionados y no gestionados usando anotaciones de PVC.
El siguiente ejemplo importa un volumen de 1GiB ontap-nas llamado ontap_volume1 desde backend 81abcb27-ea63-49bb-b606-0a5315ac5f21 con el modo de acceso RWO establecido usando anotaciones 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>
El siguiente ejemplo importa 1Gi ontap-nas volumen llamado ontap-volume2 desde backend 34abcb27-ea63-49bb-b606-0a5315ac5f34 con el modo de acceso RWO configurado usando anotaciones 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>
SAN de ONTAP
Trident admite la importación de volúmenes mediante ontap-san los controladores y. ontap-san-economy
Trident puede importar volúmenes flexibles de SAN de ONTAP que contengan una única LUN. Esto es coherente con ontap-san el controlador, que crea una FlexVol para cada RVP y una LUN dentro de la FlexVol. Trident importa el FlexVol y lo asocia con la definición de PVC.
Los siguientes ejemplos muestran cómo importar volúmenes gestionados y no gestionados:
Para los volúmenes gestionados, Trident cambia el nombre de FlexVol al pvc-<uuid> formato y a la LUN dentro de FlexVol a lun0.
El siguiente ejemplo importa el ontap-san-managed FlexVol que está presente en ontap_san_default el 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
El siguiente ejemplo importa unmanaged_example_volume en el 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Si tiene LUN asignadas a iGroups que comparten un IQN con un IQN de nodo de Kubernetes, como se muestra en el ejemplo siguiente, recibirá el error: LUN already mapped to initiator(s) in this group. Deberá quitar el iniciador o desasignar la LUN para importar el volumen.

Elemento
Trident admite el software NetApp Element y la importación de volúmenes NetApp HCI mediante solidfire-san el controlador.
|
|
El controlador Element admite los nombres de volúmenes duplicados. Sin embargo, Trident devuelve un error si hay nombres de volúmenes duplicados. Como solución alternativa, clone el volumen, proporcione un nombre de volumen único e importe el volumen clonado. |
En el siguiente ejemplo se importa un element-managed volumen en el back-end 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Google Cloud Platform
Trident admite la importación de volúmenes utilizando gcp-cvs el controlador.
|
|
Para importar un volumen respaldado por NetApp Cloud Volumes Service en Google Cloud Platform, identifique el volumen según la ruta de volumen. La ruta del volumen es la parte de la ruta de exportación del volumen después de :/ . Por ejemplo, si la ruta de exportación es 10.0.0.1:/adroit-jolly-swift, la ruta del volumen es adroit-jolly-swift.
|
En el ejemplo siguiente se importa gcp-cvs un volumen en el back-end gcpcvs_YEppr con la ruta de volumen de 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 admite la importación de volúmenes utilizando azure-netapp-files el controlador.
|
|
Para importar un volumen de Azure NetApp Files, identifique el volumen por su ruta de volumen. La ruta del volumen es la parte de la ruta de exportación del volumen después de :/ . Por ejemplo, si la ruta de montaje es 10.0.0.2:/importvol1, la ruta de volumen es importvol1.
|
En el ejemplo siguiente se importa azure-netapp-files un volumen en el back-end azurenetappfiles_40517 con la ruta de volumen 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+