跨命名空間分享 NFS 卷
使用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 中的資料來源。
配置來源命名空間和目標命名空間
為確保安全,跨命名空間共用需要來源命名空間擁有者、叢集管理員和目標命名空間擁有者的協作和行動。使用者角色在每個步驟中都會被指定。
-
來源命名空間擁有者: 建立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: 100GiTrident建立 PV 及其後端 NFS 儲存磁碟區。
-
您可以使用逗號分隔的清單將 PVC 共用給多個命名空間。例如,
trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4。 -
您可以使用以下方式共用到所有命名空間
*。例如,trident.netapp.io/shareToNamespace: * -
您可以更新PVC以包含 `shareToNamespace`隨時可以添加註釋。
-
-
*叢集管理員:*確保已建立適當的 RBAC,以授予目標命名空間擁有者在目標命名空間中建立 TridentVolumeReference CR 的權限。
-
目標命名空間擁有者: 在目標命名空間中建立一個指向來源命名空間的 TridentVolumeReference CR。
pvc1。apiVersion: trident.netapp.io/v1 kind: TridentVolumeReference metadata: name: my-first-tvr namespace: namespace2 spec: pvcName: pvc1 pvcNamespace: namespace1 -
目標命名空間擁有者: 建立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。
-
從屬磁碟區無法進行快照、複製和鏡像操作。
更多資訊
要了解有關跨命名空間卷訪問的更多資訊:
-
觀看示範"NetAppTV"。