Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

跨命名空間分享 NFS 卷

貢獻者 netapp-aruldeepa

使用Trident,您可以在主命名空間中建立磁碟區,並在一個或多個輔助命名空間中共用該磁碟區。

特徵

TridentVolumeReference CR 可讓您在一個或多個 Kubernetes 命名空間之間安全地共用 ReadWriteMany (RWX) NFS 磁碟區。這種 Kubernetes 原生解決方案具有以下優點:

  • 多層級存取控制以確保安全性

  • 適用於所有Trident NFS 磁碟區驅動程式

  • 不依賴 tridentctl 或任何其他非原生 Kubernetes 功能

此圖展示了跨兩個 Kubernetes 命名空間的 NFS 磁碟區共用。

跨命名空間共享的概念圖。

快速啟動

只需幾個步驟即可設定NFS卷共享。

一配置源PVC以共享體積

來源命名空間擁有者授予存取來源 PVC 中資料的權限。

二授予在目標命名空間中建立 CR 的權限

叢集管理員授予目標命名空間的擁有者建立 TridentVolumeReference CR 的權限。

三在目標命名空間中建立 TridentVolumeReference

目標命名空間的擁有者建立 TridentVolumeReference CR 以引用來源 PVC。

四在目標命名空間中建立從屬 PVC

目標命名空間的擁有者建立從屬 PVC,以使用來源 PVC 中的資料來源。

配置來源命名空間和目標命名空間

為確保安全,跨命名空間共用需要來源命名空間擁有者、叢集管理員和目標命名空間擁有者的協作和行動。使用者角色在每個步驟中都會被指定。

步驟
  1. 來源命名空間擁有者: 建立PVC(pvc1 )在來源命名空間中,授予與目標命名空間共享的權限(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

    Trident建立 PV 及其後端 NFS 儲存磁碟區。

    註
    • 您可以使用逗號分隔的清單將 PVC 共用給多個命名空間。例如, trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4

    • 您可以使用以下方式共用到所有命名空間 *。例如, trident.netapp.io/shareToNamespace: *

    • 您可以更新PVC以包含 `shareToNamespace`隨時可以添加註釋。

  2. *叢集管理員:*確保已建立適當的 RBAC,以授予目標命名空間擁有者在目標命名空間中建立 TridentVolumeReference CR 的權限。

  3. 目標命名空間擁有者: 在目標命名空間中建立一個指向來源命名空間的 TridentVolumeReference CR。 pvc1

    apiVersion: trident.netapp.io/v1
    kind: TridentVolumeReference
    metadata:
      name: my-first-tvr
      namespace: namespace2
    spec:
      pvcName: pvc1
      pvcNamespace: namespace1
  4. 目標命名空間擁有者: 建立PVC(pvc2 )在目標命名空間(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管的尺寸。
結果

Trident讀取 `shareFromPVC`在目標 PVC 上新增註釋,並將目標 PV 建立為沒有自身儲存資源的從屬卷,該磁碟區指向來源 PV 並共用來源 PV 儲存資源。目的地 PVC 和 PV 看起來已正常綁定。

刪除共享卷

您可以刪除跨多個命名空間共享的磁碟區。 Trident將移除對來源命名空間中該磁碟區的存取權限,並保留對共用該磁碟區的其他命名空間的存取權限。當所有引用該磁碟區的命名空間都被刪除後, Trident會刪除該磁碟區。

使用 `tridentctl get`查詢子卷

使用[`tridentctl`實用程序,您可以運行 `get`取得子卷的指令。更多信息,請參閱連結:../trident-reference/tridentctl.html[`tridentctl`命令和選項]。

Usage:
  tridentctl get [option]

標誌:

  • `-h, --help:有關卷的幫助。

  • --parentOfSubordinate string:將查詢限制在子來源磁碟區上。

  • --subordinateOf string:將查詢限制在磁碟區的下級。

限制

  • Trident無法阻止目標命名空間寫入共享磁碟區。您應該使用文件鎖定或其他方法來防止覆蓋共享卷資料。

  • 您無法透過移除來源PVC來撤銷對來源PVC的存取權限。 `shareToNamespace`或者 `shareFromNamespace`註釋或刪除 `TridentVolumeReference`CR。若要撤銷存取權限,必須刪除從屬 PVC。

  • 從屬磁碟區無法進行快照、複製和鏡像操作。

更多資訊

要了解有關跨命名空間卷訪問的更多資訊: