Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

进口量

贡献者 netapp-aruldeepa

您可以使用以下方式将现有存储卷导入为 Kubernetes PV: tridentctl import

概述和注意事项

您可以将卷导入Trident以执行以下操作:

  • 将应用程序容器化并重用其现有数据集

  • 为临时应用程序使用数据集的克隆版本

  • 重建失败的 Kubernetes 集群

  • 在灾难恢复期间迁移应用程序数据

注意事项

导入卷之前,请考虑以下事项。

  • Trident只能导入 RW(读写)类型的ONTAP卷。 DP(数据保护)类型卷是SnapMirror目标卷。在将卷导入Trident之前,应该先断开镜像关系。

  • 我们建议导入没有活动连接的卷。要导入正在使用的卷,请克隆该卷,然后执行导入操作。

    警告 这对于块卷来说尤其重要,因为 Kubernetes 不知道之前的连接,很容易将活动卷附加到 pod 上。这可能导致数据损坏。
  • 尽管 `StorageClass`必须在 PVC 上指定, Trident在导入过程中不使用此参数。在创建卷时,会使用存储类根据存储特性从可用存储池中进行选择。由于卷已存在,因此导入时无需选择存储池。因此,即使卷存在于与 PVC 中指定的存储类不匹配的后端或池中,导入也不会失败。

  • 现有容积尺寸在PVC中确定和设定。卷被存储驱动程序导入后,PV 会创建,并带有指向 PVC 的 ClaimRef。

    • 回收策略初始设置为 `retain`在PV中。 Kubernetes 成功绑定 PVC 和 PV 后,回收策略会更新为与存储类的回收策略相匹配。

    • 如果存储类的回收策略是 `delete`当 PV 被删除时,存储卷也会被删除。

  • 默认情况下, Trident管理 PVC,并在后端重命名FlexVol volume和 LUN。你可以通过 `--no-manage`导入非托管卷的标志。如果你使用 `--no-manage`在对象的生命周期内, Trident不会对 PVC 或 PV 执行任何额外的操作。删除 PV 时,存储卷不会被删除,其他操作(如卷克隆和卷调整大小)也会被忽略。

    提示 如果您想使用 Kubernetes 来管理容器化工作负载,但又想在 Kubernetes 之外管理存储卷的生命周期,则此选项非常有用。
  • 在 PVC 和 PV 中添加注释,其作用有两个:一是指示卷已导入,二是指示 PVC 和 PV 是否已管理。此注释不应修改或删除。

导入卷

您可以使用 `tridentctl import`导入卷。

步骤
  1. 创建持久卷声明 (PVC) 文件(例如, pvc.yaml ) 将用于制造PVC。 PVC文件应包含 namenamespaceaccessModes , 和 storageClassName。 (可选)您可以指定 `unixPermissions`在你的PVC定义中。

    以下是一个最低规格示例:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: my_claim
      namespace: my_namespace
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: my_storage_class
    警告 不要包含其他参数,例如 PV 名称或体积大小。这可能会导致导入命令失败。
  2. 使用 `tridentctl import`用于指定包含卷的Trident后端名称以及唯一标识存储上卷的名称的命令(例如: ONTAP FlexVol、Element Volume、 Cloud Volumes Service路径)。这 `-f`需要提供参数来指定PVC文件的路径。

    tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>

示例

请查看以下卷导入示例,了解支持的驱动程序。

ONTAP NAS 和ONTAP NAS FlexGroup

Trident支持使用以下方式导入卷: `ontap-nas`和 `ontap-nas-flexgroup`司机。

备注
  • Trident不支持使用 ontap-nas-economy 司机。

  • 这 `ontap-nas`和 `ontap-nas-flexgroup`驱动程序不允许重复的卷名称。

每卷都是用以下方式创建的 ontap-nas`driver 是ONTAP集群上的FlexVol volume。使用以下方式导入FlexVol卷 `ontap-nas`驱动程序的工作原理相同。已存在于ONTAP集群上的FlexVol卷可以作为卷导入。 `ontap-nas PVC。同样, FlexGroup卷也可以导入为 `ontap-nas-flexgroup`PVC。

ONTAP NAS 示例

下面展示了托管卷和非托管卷导入的示例。

托管卷

以下示例导入一个名为“ managed_volume`在名为 `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    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
未托管卷

使用时 `--no-manage`理由是, Trident不会重命名卷。

以下示例导入 `unmanaged_volume`在 `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   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

ONTAP SAN

Trident支持使用卷导入 ontap-san (iSCSI、NVMe/TCP 和 FC)和 ontap-san-economy 司机。

Trident可以导入包含单个 LUN 的ONTAP SAN FlexVol卷。这与 ontap-san 驱动程序,它为每个 PVC 创建一个FlexVol volume,并在FlexVol volume内创建一个 LUN。Trident导入FlexVol volume并将其与 PVC 定义关联。Trident可以导入 ontap-san-economy 包含多个 LUN 的卷。

ONTAP SAN 示例

下面展示了托管卷和非托管卷导入的示例。

托管卷

对于托管卷, Trident会将FlexVol volume重命名为 pvc-<uuid>`FlexVol volume中的 LUN 格式 `lun0

以下示例导入了 `ontap-san-managed`FlexVol volume存在于 `ontap_san_default`后端:

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    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
未托管卷

以下示例导入 `unmanaged_example_volume`在 `ontap_san`后端:

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   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

如果将 LUN 映射到与 Kubernetes 节点 IQN 共享同一 IQN 的 igroup,如下例所示,则会收到以下错误: LUN already mapped to initiator(s) in this group 。您需要移除启动器或取消映射 LUN 才能导入卷。

LUNS 映射到 iqn 和聚类 iqn 的图像。

Element

Trident支持使用NetApp Element软件和NetApp HCI卷导入 `solidfire-san`司机。

备注 Element驱动程序支持重复的卷名​​称。但是,如果卷名称重复, Trident会返回错误。作为一种变通方法,克隆卷,提供一个唯一的卷名称,然后导入克隆的卷。
元素示例

以下示例导入一个 element-managed`后端容量 `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支持使用以下方式导入卷: `gcp-cvs`司机。

备注 要将由NetApp Cloud Volumes Service支持的卷导入 Google Cloud Platform,请通过卷路径识别该卷。卷路径是卷导出路径中位于以下位置之后的部分: :/ 。例如,如果导出路径是 10.0.0.1:/adroit-jolly-swift`体积路径为 `adroit-jolly-swift
Google Cloud Platform 示例

以下示例导入一个 gcp-cvs`后端容量 `gcpcvs_YEppr`具有体积路径 `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支持使用以下方式导入卷: `azure-netapp-files`司机。

备注 要导入Azure NetApp Files卷,请通过卷路径识别该卷。卷路径是卷导出路径中位于以下位置之后的部分: :/ 。例如,如果挂载路径是 10.0.0.2:/importvol1`体积路径为 `importvol1
Azure NetApp Files示例

以下示例导入一个 azure-netapp-files`后端容量 `azurenetappfiles_40517`体积路径 `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支持使用以下方式导入卷: `google-cloud-netapp-volumes`司机。

Google Cloud NetApp Volumes示例

以下示例导入一个 google-cloud-netapp-volumes`后端容量 `backend-tbc-gcnv1`音量 `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    |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+

以下示例导入一个 `google-cloud-netapp-volumes`当两个体积存在于同一区域时,体积为:

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    |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+