Importer des volumes
Vous pouvez importer des volumes de stockage existants en tant que PV Kubernetes en utilisant tridentctl import ou en créant une revendication de volume persistant (PVC) avec des annotations d'importation Trident.
Aperçu et considérations
Vous pouvez importer un volume dans Trident pour :
-
Conteneurisez une application et réutilisez son ensemble de données existant
-
Utilisez un clone d'un ensemble de données pour une application éphémère
-
Reconstruire un cluster Kubernetes défaillant
-
Migrer les données d'application lors d'une reprise après sinistre
Avant d'importer un volume, examinez les considérations suivantes.
-
Trident peut importer uniquement les volumes ONTAP de type RW (lecture-écriture). Les volumes de type DP (protection des données) sont des volumes de destination SnapMirror. Vous devez rompre la relation de miroir avant d'importer le volume dans Trident.
-
Nous suggérons d'importer les volumes sans connexion active. Pour importer un volume utilisé activement, clonez le volume, puis effectuez l'importation.
Ceci est particulièrement important pour les volumes de blocs, car Kubernetes ignorerait la connexion précédente et pourrait facilement associer un volume actif à un pod. Cela peut entraîner une corruption des données. -
Bien que
StorageClassdoive être spécifié sur un PVC, Trident ne l'utilise pas lors de l'importation. Les classes de stockage sont utilisées lors de la création du volume pour sélectionner parmi les pools disponibles en fonction des caractéristiques de stockage. Parce que le volume existe déjà, aucune sélection de pool n'est requise lors de l'importation. Par conséquent, l'importation ne sera pas un échec même si le volume existe sur un backend ou un pool qui ne correspond pas à la classe de stockage spécifiée dans le PVC. -
La taille du volume existant est déterminée et définie dans le PVC. Après que le volume a été importé par le pilote de stockage, le PV est créé avec un ClaimRef vers le PVC.
-
La politique de récupération est initialement définie sur
retaindans le PV. Après que Kubernetes a correctement lié le PVC et le PV, la politique de récupération est mise à jour pour correspondre à la politique de récupération de la Storage Class. -
Si la politique de récupération de la Storage Class est
delete, le volume de stockage sera supprimé lorsque le PV sera supprimé.
-
-
Par défaut, Trident gère le PVC et renomme le FlexVol volume et le LUN sur le backend. Vous pouvez passer l' `--no-manage`option pour importer un volume non géré et l' `--no-rename`option pour conserver le nom du volume.
-
--no-manage* - Si vous utilisez le--no-manageflag, Trident n’effectue aucune opération supplémentaire sur le PVC ou le PV pendant tout le cycle de vie des objets. Le volume de stockage n’est pas supprimé lorsque le PV est supprimé et d’autres opérations telles que le clonage de volume et le redimensionnement de volume sont également ignorées. -
--no-rename* - Si vous utilisez le--no-renameindicateur, Trident conserve le nom du volume existant lors de l'importation des volumes et gère le cycle de vie des volumes. Cette option est prise en charge uniquement pour lesontap-nas,ontap-san(y compris les systèmes ASA r2), et les pilotesontap-san-economy.Ces options sont utiles si vous souhaitez utiliser Kubernetes pour les charges de travail conteneurisées mais que vous souhaitez par ailleurs gérer le cycle de vie du volume de stockage en dehors de Kubernetes.
-
-
Une annotation est ajoutée aux PVC et PV et sert à la fois à indiquer que le volume a été importé et si les PVC et PV sont gérés. Cette annotation ne doit pas être modifiée ni supprimée.
Importer un volume
Vous pouvez importer un volume en utilisant soit tridentctl import soit en créant un PVC avec des annotations d'importation Trident.
|
|
Si vous utilisez des annotations PVC, vous n'avez pas besoin de télécharger ou d'utiliser tridentctl pour importer le volume.
|
-
Créez un fichier PVC (par exemple,
pvc.yaml) qui sera utilisé pour créer le PVC. Le fichier PVC doit inclurename,namespace,accessModesetstorageClassName. Vous pouvez éventuellement spécifierunixPermissionsdans la définition de votre PVC.Voici un exemple de spécification minimale :
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my_claim namespace: my_namespace spec: accessModes: - ReadWriteOnce storageClassName: my_storage_classN'indiquez que les paramètres requis. Les paramètres supplémentaires tels que le nom du PV ou la taille du volume peuvent entraîner l'échec de la commande d'importation. -
Utilisez la commande
tridentctl importpour spécifier le nom du backend Trident contenant le volume et le nom qui identifie de manière unique le volume sur le stockage (par exemple : ONTAP FlexVol, Element Volume). L’argument-fest obligatoire pour spécifier le chemin d’accès au fichier PVC.tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
-
Créez un fichier YAML PVC (par exemple,
pvc.yaml) avec les annotations d'importation Trident requises. Le fichier PVC doit inclure :-
nameetnamespacedans les métadonnées -
accessModes,resources.requests.storage, etstorageClassNamedans les spécifications -
Annotations :
-
trident.netapp.io/importOriginalName: Nom du volume sur le backend -
trident.netapp.io/importBackendUUID: UUID du backend où le volume existe -
trident.netapp.io/notManaged(Facultatif) : Définir sur"true"pour les volumes non gérés. La valeur par défaut est"false".Voici un exemple de spécification pour l'importation d'un volume géré :
-
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> -
-
Appliquez le fichier YAML PVC à votre cluster Kubernetes :
kubectl apply -f <pvc-file>.yaml
Trident importera automatiquement le volume et le liera au PVC.
Exemples
Consultez les exemples d'importation de volumes suivants pour les pilotes pris en charge.
ONTAP NAS et ONTAP NAS FlexGroup
Trident prend en charge l'importation de volumes à l'aide des ontap-nas et ontap-nas-flexgroup pilotes.
|
|
|
Chaque volume créé avec le ontap-nas driver est un volume FlexVol sur le cluster ONTAP. L'importation de volumes FlexVol avec le ontap-nas driver fonctionne de la même manière. Un volume FlexVol qui existe déjà sur un cluster ONTAP peut être importé comme un ontap-nas PVC. De même, les volumes FlexGroup peuvent être importés comme des ontap-nas-flexgroup PVC.
Les exemples suivants montrent comment importer des volumes gérés et non gérés à l'aide de tridentctl.
L'exemple suivant importe un volume nommé managed_volume sur un backend nommé 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Lors de l'utilisation de l' `--no-manage`argument, Trident ne renomme pas le volume.
L'exemple suivant importe unmanaged_volume sur le backend ontap_nas :
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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Les exemples suivants montrent comment importer des volumes gérés et non gérés à l'aide d'annotations PVC.
L'exemple suivant importe un volume de 1 GiB ontap-nas nommé ontap_volume1 à partir du backend 81abcb27-ea63-49bb-b606-0a5315ac5f21 avec le mode d'accès RWO défini à l'aide d'annotations 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>
L'exemple suivant importe 1Gi ontap-nas volume nommé ontap-volume2 depuis le backend 34abcb27-ea63-49bb-b606-0a5315ac5f34 avec le mode d'accès RWO défini à l'aide d'annotations 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 prend en charge l'importation de volumes à l'aide des ontap-san (iSCSI, NVMe/TCP et FC) et ontap-san-economy pilotes.
Trident peut importer des volumes SAN ONTAP FlexVol qui contiennent un seul LUN. Cela est cohérent avec le ontap-san driver, qui crée un volume FlexVol pour chaque PVC et un LUN dans le volume FlexVol. Trident importe le volume FlexVol et l’associe à la définition du PVC. Trident peut importer des volumes ontap-san-economy qui contiennent plusieurs LUN.
Les exemples suivants montrent comment importer des volumes gérés et non gérés :
Pour les volumes gérés, Trident renomme le volume FlexVol au format pvc-<uuid> et le LUN à l'intérieur du volume FlexVol en lun0.
L'exemple suivant importe le ontap-san-managed volume FlexVol qui est présent sur le 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
L'exemple suivant importe unmanaged_example_volume sur le 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 vous avez des LUN mappés à des igroups qui partagent un IQN avec l'IQN d'un nœud Kubernetes, comme illustré dans l'exemple suivant, vous recevrez l'erreur : LUN already mapped to initiator(s) in this group. Vous devrez supprimer l'initiateur ou dissocier le LUN pour importer le volume.

Élément
Trident prend en charge le logiciel NetApp Element et l'importation de volumes NetApp HCI à l'aide du pilote solidfire-san.
|
|
Le pilote Element prend en charge les noms de volumes identiques. Cependant, Trident renvoie une erreur s'il existe des noms de volumes en double. Pour contourner ce problème, clonez le volume, attribuez un nom de volume unique et importez le volume cloné. |
L'exemple suivant importe un element-managed volume sur le 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 prend en charge l'importation de volumes à l'aide du azure-netapp-files driver.
|
|
Pour importer un volume Azure NetApp Files, identifiez le volume par son chemin de volume. Le chemin de volume est la partie du chemin d'exportation du volume après le :/. Par exemple, si le chemin de montage est 10.0.0.2:/importvol1, le chemin de volume est importvol1.
|
L'exemple suivant importe un azure-netapp-files volume sur le backend azurenetappfiles_40517 avec le chemin de 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Google Cloud NetApp Volumes
Trident prend en charge l'importation de volumes à l'aide du google-cloud-netapp-volumes driver.
L'exemple suivant importe un volume sur le backend backend-tbc-gcnv1 avec le 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 | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
L'exemple suivant importe un google-cloud-netapp-volumes volume lorsque deux volumes sont présents dans la même région :
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 | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+