ボリュームをインポート
`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-nas、ontap-san(ASA r2システムを含む)、および `ontap-san-economy`ドライバーでのみサポートされます。これらのオプションは、コンテナ化されたワークロードに Kubernetes を使用するが、それ以外の場合は Kubernetes の外部でストレージボリュームのライフサイクルを管理する場合に役立ちます。
-
-
PVC と PV に注釈が追加されます。注釈には、ボリュームがインポートされたことと、PVC と PV が管理されているかどうかを示すという 2 つの目的があります。この注釈は変更または削除しないでください。
ボリュームをインポートする
`tridentctl import`を使用するか、Tridentインポートアノテーションを使用してPVCを作成することで、ボリュームをインポートできます。
|
|
PVC アノテーションを使用する場合は、 `tridentctl`をダウンロードしたり使用してボリュームをインポートしたりする必要はありません。 |
-
PVCを作成するために使用するPVCファイル(例:
pvc.yaml)を作成します。PVCファイルにはname、namespace、accessModes、および `storageClassName`を含める必要があります。必要に応じて、PVC定義で `unixPermissions`を指定することもできます。以下は最小仕様の例です:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my_claim namespace: my_namespace spec: accessModes: - ReadWriteOnce storageClassName: my_storage_class必須パラメータのみを入力してください。PV名やボリュームサイズなどの追加パラメータは、インポートコマンドの失敗の原因となる可能性があります。 -
`tridentctl import`コマンドを使用して、ボリュームを含むTridentバックエンドの名前と、ストレージ上のボリュームを一意に識別する名前(例:ONTAP FlexVol、Element Volume)を指定します。 `-f`引数は、PVCファイルへのパスを指定するために必要です。
tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
-
必要なTridentインポートアノテーションを含むPVC YAMLファイル(例:
pvc.yaml)を作成します。PVCファイルには以下を含める必要があります:-
`name`および `namespace`メタデータ内
-
accessModes、resources.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> -
-
PVC YAML ファイルを Kubernetes クラスターに適用します:
kubectl apply -f <pvc-file>.yaml
Trident はボリュームを自動的にインポートし、PVC にバインドします。
例
サポートされているドライバーの次のボリュームインポート例を確認してください。
ONTAP NAS と ONTAP NAS FlexGroup
Tridentは、 `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`というバックエンド上の `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 アノテーションを使用して管理対象ボリュームと管理対象外ボリュームをインポートする方法を示しています。
次の例では、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 のマップを解除する必要があります。

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