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

导入卷

提供者

您可以使用 tridentctl import 将现有存储卷作为 Kubernetes PV 导入。

支持卷导入的驱动程序

下表介绍了支持导入卷的驱动程序及其引入的版本。

驱动程序 版本。

ontap-NAS

19.04

ontap-nas-flexgroup

19.04

solidfire-san

19.04

AWS-CVS

19.04

azure-netapp-files

19.04

GCP-CVS

19.04

ontap-san

19.04

为什么应导入卷?

将卷导入到 Trident 的使用情形有多种:

  • 对应用程序进行容器化并重复使用其现有数据集

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

  • 重建发生故障的 Kubernetes 集群

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

导入的工作原理是什么?

卷导入过程使用永久性卷声明( PVC )文件创建 PVC 。PVC 文件应至少包含 name , namespace , accessModes 和 storageClassName 字段,如以下示例所示。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: my_claim
  namespace: my_namespace
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: my_storage_class

使用 tridentctl 客户端导入现有存储卷。Trident 通过保留卷元数据并创建 PVC 和 PV 来导入卷。

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

要导入存储卷,请指定包含该卷的 Astra Trident 后端的名称以及用于唯一标识存储上的卷的名称(例如: ONTAP FlexVol , Element Volume , CVS 卷路径)。存储卷必须允许读 / 写访问,并可由指定的 Astra Trident 后端访问。需要 ` -f` 字符串参数,并指定 YAML 或 JSON PVC 文件的路径。

当 Astra Trident 收到导入卷请求时,系统会在 PVC 中确定并设置现有卷大小。存储驱动程序导入卷后,系统将创建 PV ,并为其创建一个 Claims Ref 。在 PV 中,回收策略最初设置为 retain 。Kubernetes 成功绑定 PVC 和 PV 后,将更新回收策略以匹配存储类的回收策略。如果存储类的回收策略为 delete ,则在删除 PV 时,存储卷将被删除。

使用 ` -no-manage` 参数导入卷时, Trident 不会在对象的生命周期内对 PVC 或 PV 执行任何其他操作。由于 Trident 会忽略 ` -no-manage` 对象的 PV 和 PVC 事件,因此删除 PV 时不会删除存储卷。卷克隆和卷大小调整等其他操作也会被忽略。如果要对容器化工作负载使用 Kubernetes ,但希望在 Kubernetes 外部管理存储卷的生命周期,则此选项非常有用。

PVC 和 PV 中会添加一个标注,用于指示卷已导入以及 PVC 和 PV 是否已管理。不应修改或删除此标注。

Trident 19.07 及更高版本可处理 PV 的连接,并在导入卷时挂载该卷。对于使用早期版本的 Astra Trident 进行的导入,数据路径中不会执行任何操作,卷导入将不会验证是否可以挂载卷。如果卷导入出错(例如 StorageClass 不正确),您可以通过将 PV 上的回收策略更改为 retain ,删除 PVC 和 PV 并重试 volume import 命令来恢复。

ontap-nas 和 ontap-nas-flexgroup 导入

使用 ontap-nas 驱动程序创建的每个卷都是 ONTAP 集群上的一个 FlexVol 。使用 ontap-NAS 驱动程序导入 FlexVol 的工作原理相同。ONTAP 集群上已存在的 FlexVol 可以导入为 ONONTAP -NAS PVC 。同样,可以将 FlexGroup vols 导入为 ontap-nas-flexgroup PVC 。

重要 要由 Trident 导入 ONTAP 卷,必须为 rw 类型。如果卷的类型为 DP ,则为 SnapMirror 目标卷;应先中断镜像关系,然后再将卷导入到 Trident 中。
重要 ontap-NAS 驱动程序无法导入和管理 qtree 。ontap-nasontap-nas-flexgroup 驱动程序不允许使用重复的卷名称。

例如,要在名为 ontap_NAS 的后端导入名为 manage_volume 的卷,请使用以下命令:

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

要导入名为 unmanageed_volume 的卷(位于 ontap_NAS 后端 上),而 Trident 不会管理该卷,请使用以下命令:

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

使用 ` -no-manage` 参数时, Trident 不会重命名卷或验证卷是否已挂载。如果卷未手动挂载,则卷导入操作将失败。

注 先前存在的使用自定义 UnixPermissions 导入卷的错误已得到修复。您可以在 PVC 定义或后端配置中指定 unixPermissions ,并指示 Astra Trident 相应地导入卷。

ontap-san 导入

Astra Trident 还可以导入包含单个 LUN 的 ONTAP SAN FlexVol 。这与 ontap-san 驱动程序一致,该驱动程序会为 FlexVol 中的每个 PVC 和 LUN 创建一个 FlexVol 。您可以像在其他情况下一样使用 tridentctl import 命令:

  • 请输入 ontap-san 后端的名称。

  • 提供需要导入的 FlexVol 的名称。请记住,此 FlexVol 仅包含一个必须导入的 LUN 。

  • 提供必须与 ` -f` 标志结合使用的 PVC 定义路径。

  • 可以选择对 PVC 进行管理,也可以选择不对其进行管理。默认情况下, Trident 将管理 PVC 并重命名后端的 FlexVol 和 LUN 。要作为非受管卷导入,请传递 ` -no-manage` 标志。

提示 导入非受管 ontap-san 卷时,应确保 FlexVol 中的 LUN 名为 lun0 ,并已映射到具有所需启动程序的 igroup 。Astra Trident 会自动为受管导入处理此问题。

然后, Astra Trident 将导入 FlexVol 并将其与 PVC 定义关联。Astra Trident 还会将 FlexVol 重命名为 vc-<uid> 格式,并将 FlexVol 中的 LUN 重命名为 lun0

提示 建议导入没有活动连接的卷。如果要导入当前使用的卷,请先克隆该卷,然后再执行导入。

示例

要导入 ontap_san_default 后端上存在的 ontap-san-managed FlexVol ,请运行 tridentctl import 命令:

$ 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    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
重要 ONTAP 卷的类型必须为 RW ,才能由 Astra Trident 导入。如果卷的类型为 DP ,则为 SnapMirror 目标卷;在将卷导入到 Astra Trident 之前,应中断镜像关系。

元素导入

您可以使用 Trident 将 NetApp Element 软件 /NetApp HCI 卷导入到 Kubernetes 集群中。您需要提供 Astra Trident 后端的名称以及卷和 PVC 文件的唯一名称作为 tridentctl import 命令的参数。

$ 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    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
注 Element 驱动程序支持重复的卷名称。如果卷名称重复,则 Trident 的卷导入过程将返回错误。作为临时解决策,克隆卷并提供唯一的卷名称。然后导入克隆的卷。

AWS-CVS 导入

提示 要在 AWS 中导入由 NetApp Cloud Volumes Service 支持的卷,请按卷路径而非名称来标识该卷。

要在后端导入名为 awscvs_YEpprAWS-CVS 卷,并且卷路径为 adrot-joly-swift ,请使用以下命令:

$ tridentctl import volume awscvs_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 | aws-storage   | file     | e1a6e65b-299e-4568-ad05-4f0a105c888f | online | true    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
注 卷路径是卷导出路径中: / 之后的部分。例如,如果导出路径为 10.0.0.1 : /adrot-joly-swift ,则卷路径为 adrot-joly-swift

GCP-CVS 导入

导入 GCP-CVS 卷与导入 AWS-CVS 卷的工作原理相同。

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    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
注 ANF 卷的卷路径位于: / 之后的挂载路径中。例如,如果挂载路径为 10.0.0.2 : /importvol1 ,则卷路径为 importvol1