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

ボリュームをインポート

`tridentctl import`を使用するか、Tridentインポート アノテーションを使用して永続ボリューム要求(PVC)を作成することで、既存のストレージ ボリュームをKubernetes PVとしてインポートできます。

概要と考慮事項

次の目的でボリュームをTridentにインポートすることができます:

  • アプリケーションをコンテナ化し、既存のデータセットを再利用する

  • 一時的なアプリケーションにデータセットのクローンを使用する

  • 障害が発生した Kubernetes クラスタを再構築する

  • 災害復旧時にアプリケーションデータを移行する

考慮事項

ボリュームをインポートする前に、次の考慮事項を確認してください。

  • TridentでインポートできるのはRW(読み書き)タイプのONTAPボリュームのみです。DP(データ保護)タイプのボリュームはSnapMirrorデスティネーションボリュームです。ボリュームをTridentにインポートする前に、ミラー関係を解除する必要があります。

  • アクティブな接続なしでボリュームをインポートすることをお勧めします。アクティブに使用されているボリュームをインポートするには、ボリュームのクローンを作成してからインポートを実行します。

    警告 これは、Kubernetes が以前の接続を認識せず、アクティブなボリュームをポッドに簡単に接続できるため、ブロックボリュームの場合に特に重要です。その結果、データ破損が発生する可能性があります。
  • ただし `StorageClass`PVCで指定する必要がありますが、Tridentはインポート時にこのパラメータを使用しません。ストレージクラスは、ボリュームの作成時に、ストレージ特性に基づいて使用可能なプールから選択するために使用されます。ボリュームはすでに存在するため、インポート時にプールを選択する必要はありません。したがって、PVCで指定されたストレージクラスと一致しないバックエンドまたはプールにボリュームが存在する場合でも、インポートは失敗しません。

  • 既存のボリュームサイズが決定され、PVCに設定されます。ボリュームがストレージドライバによってインポートされると、ClaimRefを使用してPVCへの参照を持つPVが作成されます。

    • 回収ポリシーは初期設定では PV で `retain`に設定されています。Kubernetes が PVC と PV を正常にバインドすると、回収ポリシーはストレージクラスの回収ポリシーと一致するように更新されます。

    • ストレージクラスの回収ポリシーが `delete`の場合、PV が削除されると、ストレージボリュームも削除されます。

  • デフォルトでは、TridentがPVCを管理し、バックエンドのFlexVolボリュームとLUNの名前を変更します。 `--no-manage`フラグを渡して管理されていないボリュームをインポートし、 `--no-rename`フラグを渡してボリューム名を保持できます。

    • --no-manage* - `--no-manage`フラグを使用する場合、Tridentはオブジェクトのライフサイクル中、PVCまたはPVに対して追加の操作は実行されません。PVが削除されてもストレージボリュームは削除されず、ボリュームのクローンやボリュームのサイズ変更などの他の操作も無視されます。

    • --no-rename* - --no-rename`フラグを使用する場合、Tridentはボリュームをインポートするときに既存のボリューム名を保持し、ボリュームのライフサイクルを管理します。このオプションは、 `ontap-nasontap-san(ASA r2システムを含む)、および `ontap-san-economy`ドライバーでのみサポートされます。

      ヒント これらのオプションは、コンテナ化されたワークロードに Kubernetes を使用するが、それ以外の場合は Kubernetes の外部でストレージボリュームのライフサイクルを管理する場合に役立ちます。
  • PVC と PV に注釈が追加されます。注釈には、ボリュームがインポートされたことと、PVC と PV が管理されているかどうかを示すという 2 つの目的があります。この注釈は変更または削除しないでください。

ボリュームをインポートする

`tridentctl import`を使用するか、Tridentインポートアノテーションを使用してPVCを作成することで、ボリュームをインポートできます。
メモ PVC アノテーションを使用する場合は、 `tridentctl`をダウンロードしたり使用してボリュームをインポートしたりする必要はありません。
tridentctlの使用
手順
  1. PVCを作成するために使用するPVCファイル(例: pvc.yaml)を作成します。PVCファイルには namenamespaceaccessModes、および `storageClassName`を含める必要があります。必要に応じて、PVC定義で `unixPermissions`を指定することもできます。

    以下は最小仕様の例です:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: my_claim
      namespace: my_namespace
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: my_storage_class
    メモ 必須パラメータのみを入力してください。PV名やボリュームサイズなどの追加パラメータは、インポートコマンドの失敗の原因となる可能性があります。
  2. `tridentctl import`コマンドを使用して、ボリュームを含むTridentバックエンドの名前と、ストレージ上のボリュームを一意に識別する名前(例:ONTAP FlexVol、Element Volume)を指定します。 `-f`引数は、PVCファイルへのパスを指定するために必要です。

    tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
PVCアノテーションの使用
手順
  1. 必要なTridentインポートアノテーションを含むPVC YAMLファイル(例: pvc.yaml)を作成します。PVCファイルには以下を含める必要があります:

    • `name`および `namespace`メタデータ内

    • accessModesresources.requests.storage、および `storageClassName`仕様

    • 注釈:

      • trident.netapp.io/importOriginalName:バックエンドのボリューム名

      • trident.netapp.io/importBackendUUID:ボリュームが存在するバックエンドUUID

      • trident.netapp.io/notManagedオプション):管理されていないボリュームの場合は `"true"`に設定します。デフォルトは `"false"`です。

        以下は、管理対象ボリュームをインポートするための仕様例です:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <pvc-name>
      namespace: <namespace>
      annotations:
        trident.netapp.io/importOriginalName: "<volume-name>"
        trident.netapp.io/importBackendUUID: "<backend-uuid>"
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: <size>
      storageClassName: <storage-class-name>
  2. PVC YAML ファイルを Kubernetes クラスターに適用します:

    kubectl apply -f <pvc-file>.yaml

    Trident はボリュームを自動的にインポートし、PVC にバインドします。

サポートされているドライバーの次のボリュームインポート例を確認してください。

ONTAP NAS と ONTAP NAS FlexGroup

Tridentは、 `ontap-nas`および `ontap-nas-flexgroup`ドライバーを使用したボリュームインポートをサポートしています。

メモ
  • Tridentは `ontap-nas-economy`ドライバを使用したボリュームインポートをサポートしていません。

  • `ontap-nas`および `ontap-nas-flexgroup`ドライバは、重複するボリューム名を許可しません。

`ontap-nas`ドライバーで作成された各ボリュームは、ONTAPクラスタ上のFlexVolボリュームです。 `ontap-nas`ドライバーを使用したFlexVolボリュームのインポートも同様に機能します。ONTAPクラスタにすでに存在するFlexVolボリュームは、 `ontap-nas` PVCとしてインポートできます。同様に、FlexGroupボリュームは `ontap-nas-flexgroup` PVCとしてインポートできます。
tridentctl を使用した ONTAP NAS の例

次の例は、 `tridentctl`を使用して管理対象ボリュームと管理対象外ボリュームをインポートする方法を示しています。

管理ボリューム

次の例では、 `ontap_nas`というバックエンド上の `managed_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    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
管理されていないボリューム
`--no-manage`引数を使用する場合、Tridentはボリュームの名前を変更しません。

次の例は、 `unmanaged_volume`を `ontap_nas`バックエンドでインポートします:

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   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
PVC アノテーションを使用した ONTAP NAS の例

次の例は、PVC アノテーションを使用して管理対象ボリュームと管理対象外ボリュームをインポートする方法を示しています。

管理ボリューム

次の例では、PVC アノテーションを使用して RWO アクセス モードが設定された、 `81abcb27-ea63-49bb-b606-0a5315ac5f21`から `ontap_volume1`という名前の `ontap-nas`ボリュームをインポートします:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: <managed-imported-volume>
  namespace: <namespace>
  annotations:
    trident.netapp.io/importOriginalName: "ontap_volume1"
    trident.netapp.io/importBackendUUID: "81abcb27-ea63-49bb-b606-0a5315ac5f21"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: <storage-class-name>
管理されていないボリューム

次の例では、PVC アノテーションを使用して RWO アクセス モードが設定された、バックエンド 34abcb27-ea63-49bb-b606-0a5315ac5f34`からという名前 `ontap-volume2`の 1Gi `ontap-nas ボリュームをインポートします:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: <umanaged-imported-volume>
  namespace: <namespace>
  annotations:
    trident.netapp.io/importOriginalName: "ontap-volume2"
    trident.netapp.io/importBackendUUID: "34abcb27-ea63-49bb-b606-0a5315ac5f34"
    trident.netapp.io/notManaged: "true"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: <storage-class-name>

ONTAP SAN

Tridentは、 ontap-san(iSCSI、NVMe/TCP、FC)および `ontap-san-economy`ドライバーを使用したボリュームインポートをサポートしています。

Tridentは、単一のLUNを含むONTAP SAN FlexVolボリュームをインポートできます。これは `ontap-san`ドライバと一致しており、各PVCに対してFlexVolボリュームを作成し、FlexVolボリューム内にLUNを作成します。TridentはFlexVolボリュームをインポートし、PVC定義に関連付けます。Tridentは、複数のLUNを含む `ontap-san-economy`ボリュームをインポートできます。

次の例は、管理対象ボリュームと管理対象外ボリュームをインポートする方法を示しています:

管理ボリューム

管理対象ボリュームの場合、TridentはFlexVolボリュームの名前を `pvc-<uuid>`形式に変更し、FlexVolボリューム内のLUNの名前も `lun0`に変更します。

次の例では、 `ontap-san-managed`バックエンド上に存在するFlexVol volumeを `ontap_san_default`インポートします:

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    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
管理されていないボリューム

次の例は、 `unmanaged_example_volume`を `ontap_san`バックエンドでインポートします:

tridentctl import volume -n trident san_blog unmanaged_example_volume -f pvc-import.yaml --no-manage
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-1fc999c9-ce8c-459c-82e4-ed4380a4b228 | 1.0 GiB | san-blog      | block    | e3275890-7d80-4af6-90cc-c7a0759f555a | online | false   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

次の例に示すように、Kubernetes ノード IQN と IQN を共有する igroup にマップされた LUN がある場合は、次のエラーが表示されます: `LUN already mapped to initiator(s) in this group`ボリュームをインポートするには、イニシエーターを削除するか、LUN のマップを解除する必要があります。

iqn およびクラスター iqn にマップされた LUN のイメージ。

要素

Tridentは、 `solidfire-san`ドライバを使用して、NetApp Element ソフトウェアおよびNetApp HCI ボリュームのインポートをサポートします。

メモ Element ドライバは重複したボリューム名をサポートします。ただし、 Trident は重複したボリューム名がある場合はエラーを返します。回避策として、ボリュームのクローンを作成し、一意のボリューム名を指定して、クローンされたボリュームをインポートします。

次の例は、バックエンド `element_default`上の `element-managed`ボリュームをインポートします。

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

Azure NetApp Files

Tridentは `azure-netapp-files`ドライバを使用したボリュームインポートをサポートしています。

メモ Azure NetApp Files ボリュームをインポートするには、ボリュームパスでボリュームを識別します。ボリュームパスは、 `:/`の後のボリュームのエクスポートパスの部分です。たとえば、マウントパスが `10.0.0.2:/importvol1`の場合、ボリュームパスは `importvol1`です。

次の例は、バックエンド `azurenetappfiles_40517`上の `azure-netapp-files`ボリュームを、ボリュームパス `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    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

Google Cloud NetApp Volumes

Tridentは `google-cloud-netapp-volumes`ドライバを使用したボリュームインポートをサポートしています。

次の例では、ボリューム `testvoleasiaeast1`を持つバックエンド `backend-tbc-gcnv1`上のボリュームをインポートします。

tridentctl import volume backend-tbc-gcnv1 "testvoleasiaeast1" -f < path-to-pvc> -n trident

+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS        | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
| pvc-a69cda19-218c-4ca9-a941-aea05dd13dc0 |  10 GiB | gcnv-nfs-sc-identity | file     | 8c18cdf1-0770-4bc0-bcc5-c6295fe6d837 | online | true    |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+

次の例では、同じリージョンに2つのボリュームが存在する場合に `google-cloud-netapp-volumes`ボリュームをインポートします:

tridentctl import volume backend-tbc-gcnv1 "projects/123456789100/locations/asia-east1-a/volumes/testvoleasiaeast1" -f <path-to-pvc> -n trident

+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS        | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
| pvc-a69cda19-218c-4ca9-a941-aea05dd13dc0 |  10 GiB | gcnv-nfs-sc-identity | file     | 8c18cdf1-0770-4bc0-bcc5-c6295fe6d837 | online | true    |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+