Skip to main content
本製品の最新リリースがご利用いただけます。
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

名前空間間でNFSボリュームを共有する

Tridentを使用すると、プライマリ名前空間にボリュームを作成し、それを1つ以上のセカンダリ名前空間で共有できます。

機能

TridentVolumeReference CR を使用すると、ReadWriteMany(RWX)NFS ボリュームを 1 つ以上の Kubernetes 名前空間にわたって安全に共有できます。この Kubernetes ネイティブソリューションには、次の利点があります:

  • セキュリティを確保するための複数レベルのアクセス制御

  • すべての Trident NFS ボリュームドライバーに対応

  • tridentctl やその他の非ネイティブ Kubernetes 機能に依存しない

この図は、2 つの Kubernetes 名前空間間での NFS ボリュームの共有を示しています。

ネームスペース間共有の概念図。

クイック スタート

わずか数ステップで NFS ボリューム共有を設定できます。

1 ボリュームを共有するようにソース PVC を設定する

ソース名前空間の所有者は、ソース PVC 内のデータにアクセスする権限を付与します。

2 宛先ネームスペースに CR を作成する権限を付与します

クラスタ管理者は、宛先名前空間の所有者にTridentVolumeReference CRを作成する権限を付与します。

3つ 宛先名前空間にTridentVolumeReferenceを作成する

宛先名前空間の所有者は、ソースPVCを参照するTridentVolumeReference CRを作成します。

4 宛先ネームスペースに従属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. 宛先ネームスペースの所有者: 宛先ネームスペース(namespace2)でPVC(pvc2)を作成し、ソースPVCを指定するために `shareFromPVC`アノテーションを使用します。

    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は、デスティネーションPVCの `shareFromPVC`アノテーションを読み取り、デスティネーションPVを、独自のストレージリソースを持たず、ソースPVを指してソースPVストレージリソースを共有する従属ボリュームとして作成します。デスティネーションPVCとPVは正常にバインドされているように見えます。

共有ボリュームを削除する

複数の名前空間間で共有されているボリュームを削除できます。Tridentは、ソース名前空間のボリュームへのアクセスを削除し、ボリュームを共有する他の名前空間へのアクセスを維持します。ボリュームを参照するすべての名前空間が削除されると、Tridentはボリュームを削除します。

`tridentctl get`を使用して従属ボリュームを照会する

[`tridentctl`ユーティリティを使用して、 `get`コマンドを実行すると、従属ボリュームを取得できます。詳細については、link:../trident-reference/trident-cl.html[`tridentctl`コマンドとオプション]を参照してください。

Usage:
  tridentctl get [option]

フラグ:

  • `-h, --help:ボリュームのヘルプ。

  • --parentOfSubordinate string:クエリを従属ソースボリュームに制限します。

  • --subordinateOf string:ボリュームの下位にクエリを制限します。

制限事項

  • Tridentは、宛先ネームスペースが共有ボリュームに書き込むのを防ぐことはできません。共有ボリュームのデータが上書きされないようにするには、ファイルロックまたはその他のプロセスを使用する必要があります。

  • ソースPVCへのアクセスを取り消すには、 `shareToNamespace`または `shareFromNamespace`アノテーションを削除するか、 `TridentVolumeReference`CRを削除しても取り消すことはできません。アクセスを取り消すには、従属PVCを削除する必要があります。

  • 従属ボリュームではスナップショット、クローン、ミラーリングは実行できません。

詳細情報

クロスネームスペースボリュームアクセスの詳細については、次を参照してください: