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

在命名空间之间共享NFS卷

贡献者

使用Astra Trident、您可以在主命名空间中创建卷、并在一个或多个二级命名空间中共享该卷。

功能

使用Astra TridentVolumeReference CR、您可以在一个或多个Kubernetes命名空间之间安全地共享ReadWriteMany (rwx) NFS卷。此Kubernetes本机解决方案 具有以下优势:

  • 可通过多个级别的访问控制来确保安全性

  • 适用于所有Trident NFS卷驱动程序

  • 不依赖于tridentctl或任何其他非本机Kubernetes功能

此图显示了两个Kubernetes命名空间之间的NFS卷共享。

跨命名空间共享的概念图。

快速入门

只需几个步骤即可设置NFS卷共享。

一个配置源PVC以共享卷

源命名空间所有者授予访问源PVC中数据的权限。

两个授予在目标命名空间中创建CR的权限

集群管理员向目标命名空间的所有者授予创建TridentVolumeReference CR的权限。

三个在目标命名空间中创建Trident卷 引用

目标命名空间的所有者将创建TridentVolumeReference CR以引用源PVC。

四个在目标命名空间中创建从属PVC

目标命名空间的所有者创建从属PVC以使用源PVC中的数据源。

配置源和目标命名空间

为了确保安全性、跨命名空间共享需要源命名空间所有者、集群管理员和目标命名空间所有者的协作和操作。每个步骤都会指定用户角色。

步骤
  1. Source命名空间owner:(pvc1`在源命名空间中创建PVC,该PVC用于授予与目标命名空间共享的权限(`namespace2)。 shareToNamespace

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc1
      namespace: namespace1
      annotations:
        trident.netapp.io/shareToNamespace: namespace2
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: trident-csi
      resources:
        requests:
          storage: 100Gi

    Astra Trident会创建PV及其后端NFS存储卷。

    备注
    • 您可以使用逗号分隔列表将PVC共享给多个命名空间。例如, trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4

    • 您可以使用共享到所有 *`的文件。例如、 `trident.netapp.io/shareToNamespace: *

    • 您可以随时更新PVC以包含 `shareToNamespace`标注。

  2. *集群管理员:*创建自定义角色并执行kubeconfig、以授予目标命名空间所有者在目标命名空间中创建TridentVolumeReference CR的权限。

  3. *目标命名空间所有者:*在目标命名空间中创建引用源命名空间的trident卷 引用CR pvc1

    apiVersion: trident.netapp.io/v1
    kind: TridentVolumeReference
    metadata:
      name: my-first-tvr
      namespace: namespace2
    spec:
      pvcName: pvc1
      pvcNamespace: namespace1
  4. Destination命名空间owner:(pvc2`在目标命名空间中创建PVC(`namespace2)使用 `shareFromPVC`标注指定源PVC。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      annotations:
        trident.netapp.io/shareFromPVC: namespace1/pvc1
      name: pvc2
      namespace: namespace2
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: trident-csi
      resources:
        requests:
          storage: 100Gi
    备注 目标PVC的大小必须小于或等于源PVC。
结果

Asta Trident读取 `shareFromPVC`目标PVC上的标注、并将目标PV创建为其自身没有指向源PV的存储资源的子卷、同时共享源PV存储资源。目标PVC和PV显示为正常绑定。

删除共享卷

您可以删除跨多个命名空间共享的卷。Astra Trident将删除对源命名空间上卷的访问、并保持对共享该卷的其他命名空间的访问。删除引用卷的所有命名空间后、Astra Trident将删除该卷。

`tridentctl get`用于查询子卷

您可以使用[tridentctl`实用程序运行 `get`命令以获取子卷。有关详细信息、请参阅链接:Trident tridentctl.html[`tridentctl commands and options ]。

Usage:
  tridentctl get [option]

flags

  • `-h, --help:卷帮助。

  • --parentOfSubordinate string:将查询限制为从属源卷。

  • --subordinateOf string:将查询限制为卷的子卷。

限制

  • Astra Trident无法阻止目标命名空间写入共享卷。您应使用文件锁定或其他进程来防止覆盖共享卷数据。

  • 您不能通过删除或 shareFromNamespace`标注或删除CR来撤消对源PVC的 `TridentVolumeReference`访问 `shareToNamespace。要撤消访问、必须删除从属PVC。

  • 无法在从属卷上执行快照、克隆和镜像。

了解更多信息

要了解有关跨命名空间卷访问的详细信息、请执行以下操作: