Volumes de importação
Você pode importar volumes de armazenamento existentes como um PV do Kubernetes usando tridentctl import ou criando uma Persistent Volume Claim (PVC) com anotações de importação do Trident.
Visão geral e considerações
Você pode importar um volume para o Trident para:
-
Containerize uma aplicação e reutilize seu conjunto de dados existente.
-
Utilize um clone de um conjunto de dados para uma aplicação efêmera.
-
Reconstruir um cluster Kubernetes com falha
-
Migrar dados de aplicativos durante a recuperação de desastres
Antes de importar um volume, revise as seguintes considerações.
-
O Trident só pode importar volumes ONTAP do tipo RW (leitura e gravação). Os volumes do tipo DP (proteção de dados) são volumes de destino do SnapMirror . Você deve quebrar a relação de espelhamento antes de importar o volume para o Trident.
-
Sugerimos importar volumes sem conexões ativas. Para importar um volume que esteja sendo usado ativamente, clone o volume e, em seguida, execute a importação.
Isso é especialmente importante para volumes de bloco, pois o Kubernetes não teria conhecimento da conexão anterior e poderia facilmente anexar um volume ativo a um pod. Isso pode resultar em corrupção de dados. -
No entanto
StorageClassDeve ser especificado em um PVC; o Trident não usa esse parâmetro durante a importação. As classes de armazenamento são usadas durante a criação de volumes para selecionar entre os pools disponíveis com base nas características de armazenamento. Como o volume já existe, não é necessário selecionar um pool durante a importação. Portanto, a importação não falhará mesmo que o volume exista em um backend ou pool que não corresponda à classe de armazenamento especificada no PVC. -
O volume existente é determinado e definido no PVC. Após o volume ser importado pelo driver de armazenamento, o PV é criado com uma referência ClaimRef para o PVC.
-
A política de recuperação é inicialmente definida como
retainno PV. Após o Kubernetes vincular com sucesso o PVC e o PV, a política de recuperação é atualizada para corresponder à política de recuperação da classe de armazenamento. -
Se a política de recuperação da Classe de Armazenamento for
deleteO volume de armazenamento será excluído quando o PV for excluído.
-
-
Por padrão, o Trident gerencia o PVC e renomeia o FlexVol volume e o LUN no backend. Você pode passar o
--no-managesinalizador para importar um volume não gerenciado. Se você usar--no-manageA Trident não realiza nenhuma operação adicional no PVC ou PV durante o ciclo de vida dos objetos. O volume de armazenamento não é excluído quando o PV é excluído, e outras operações como clonagem e redimensionamento de volume também são ignoradas.Essa opção é útil se você deseja usar o Kubernetes para cargas de trabalho em contêineres, mas, fora isso, prefere gerenciar o ciclo de vida do volume de armazenamento fora do Kubernetes. -
Uma anotação é adicionada ao PVC e ao PV com a dupla função de indicar que o volume foi importado e se o PVC e o PV são gerenciados. Esta anotação não deve ser modificada nem removida.
Importar um volume
Você pode importar um volume usando tridentctl import ou criando um PVC com anotações de importação do Trident.
|
|
Se você utiliza anotações PVC, não precisa baixar ou usar tridentctl para importar o volume.
|
-
Crie um arquivo PVC (por exemplo,
pvc.yaml) que será usado para criar o PVC. O arquivo PVC deve incluirname,namespace,accessModesestorageClassName. Opcionalmente, você pode especificarunixPermissionsna sua definição de PVC.Segue abaixo um exemplo de especificação mínima:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my_claim namespace: my_namespace spec: accessModes: - ReadWriteOnce storageClassName: my_storage_classInclua apenas os parâmetros necessários. Parâmetros adicionais, como o nome do PV ou o tamanho do volume, podem fazer com que o comando de importação falhe. -
Use o
tridentctl importComando para especificar o nome do backend Trident que contém o volume e o nome que identifica exclusivamente o volume no armazenamento (por exemplo: ONTAP FlexVol, Element Volume, caminho do Cloud Volumes Service ). O-fÉ necessário fornecer o argumento para especificar o caminho para o arquivo PVC.tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
-
Crie um arquivo YAML de PVC (por exemplo,
pvc.yaml) com as anotações de importação do Trident necessárias. O arquivo de PVC deve incluir:-
nameenamespaceem metadados -
accessModes,resources.requests.storage, estorageClassNameem especificação -
Anotações:
-
trident.netapp.io/importOriginalName: Nome do volume no backend -
trident.netapp.io/importBackendUUID: UUID do backend onde o volume existe -
trident.netapp.io/notManaged(Opcional): Defina como"true"para volumes não gerenciados. O padrão é"false".A seguir está um exemplo de especificação para importar um volume gerenciado:
-
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> -
-
Aplique o arquivo YAML do PVC ao seu cluster Kubernetes:
kubectl apply -f <pvc-file>.yaml
Trident importará automaticamente o volume e o vinculará ao PVC.
Exemplos
Consulte os exemplos de importação de volume a seguir para obter informações sobre os drivers compatíveis.
ONTAP NAS e ONTAP NAS FlexGroup
O Trident suporta a importação de volumes usando o ontap-nas e ontap-nas-flexgroup motoristas.
|
|
|
Cada volume criado com o ontap-nas O driver é um FlexVol volume no cluster ONTAP . Importando volumes FlexVol com o ontap-nas O driver funciona da mesma forma. Um volume FlexVol que já existe em um cluster ONTAP pode ser importado como um ontap-nas PVC. Da mesma forma, os volumes do FlexGroup podem ser importados como ontap-nas-flexgroup PVCs.
A seguir, apresentamos um exemplo de importação de um volume gerenciado e de um volume não gerenciado.
O exemplo a seguir importa um volume chamado managed_volume em um backend chamado 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Ao usar o --no-manage argumento: Trident não renomeia o volume.
O exemplo a seguir importa unmanaged_volume no 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Os exemplos a seguir mostram como importar volumes gerenciados e não gerenciados usando anotações PVC.
O exemplo a seguir importa um volume de 1GiB ontap-nas nomeado ontap_volume1 do backend 81abcb27-ea63-49bb-b606-0a5315ac5f21 com o modo de acesso RWO definido usando anotações 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>
O exemplo a seguir importa 1Gi ontap-nas volume nomeado ontap-volume2 do backend 34abcb27-ea63-49bb-b606-0a5315ac5f34 com o modo de acesso RWO definido usando anotações 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
O Trident suporta importação de volume usando o ontap-san (iSCSI, NVMe/TCP e FC) e ontap-san-economy motoristas.
O Trident pode importar volumes ONTAP SAN FlexVol que contêm um único LUN. Isto é consistente com o ontap-san driver, que cria um FlexVol volume para cada PVC e um LUN dentro do FlexVol volume. O Trident importa o FlexVol volume e o associa à definição de PVC. Trident pode importar ontap-san-economy volumes que contêm vários LUNs.
Os exemplos a seguir mostram como importar volumes gerenciados e não gerenciados:
Para volumes gerenciados, o Trident renomeia o FlexVol volume para pvc-<uuid> formato e o LUN dentro do FlexVol volume para lun0 .
O exemplo a seguir importa o ontap-san-managed FlexVol volume que está presente no 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
O exemplo a seguir importa unmanaged_example_volume no 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 você tiver LUNs mapeadas para igroups que compartilham um IQN com o IQN de um nó do Kubernetes, como mostrado no exemplo a seguir, você receberá o seguinte erro: LUN already mapped to initiator(s) in this group . Você precisará remover o iniciador ou desvincular o LUN para importar o volume.

Elemento
O Trident oferece suporte ao software NetApp Element e à importação de volumes NetApp HCI usando o solidfire-san motorista.
|
|
O driver Element suporta nomes de volume duplicados. No entanto, o Trident retorna um erro se houver nomes de volume duplicados. Como solução alternativa, clone o volume, forneça um nome exclusivo para o volume e importe o volume clonado. |
O exemplo a seguir importa um element-managed volume no 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Plataforma Google Cloud
O Trident suporta a importação de volumes usando o gcp-cvs motorista.
|
|
Para importar um volume com suporte do NetApp Cloud Volumes Service no Google Cloud Platform, identifique o volume pelo seu caminho. O caminho do volume é a porção do caminho de exportação do volume após o :/ . Por exemplo, se o caminho de exportação for 10.0.0.1:/adroit-jolly-swift , o caminho do volume é adroit-jolly-swift .
|
O exemplo a seguir importa um gcp-cvs volume no backend gcpcvs_YEppr com o caminho de volume 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
O Trident suporta a importação de volumes usando o azure-netapp-files motorista.
|
|
Para importar um volume do Azure NetApp Files , identifique o volume pelo seu caminho. O caminho do volume é a porção do caminho de exportação do volume após o :/ . Por exemplo, se o caminho de montagem for 10.0.0.2:/importvol1 , o caminho do volume é importvol1 .
|
O exemplo a seguir importa um azure-netapp-files volume no backend azurenetappfiles_40517 com o caminho do 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
O Trident suporta a importação de volumes usando o google-cloud-netapp-volumes motorista.
O exemplo a seguir importa um volume no backend backend-tbc-gcnv1 com o 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 | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
O exemplo a seguir importa um google-cloud-netapp-volumes Volume quando dois volumes estão presentes na mesma região:
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 | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+