匯入磁碟區
您可以使用 `tridentctl import`或透過使用 Trident 匯入註解建立持久性磁碟區宣告(PVC),將現有儲存磁碟區匯入為 Kubernetes PV。
概述和注意事項
您可以將磁碟區匯入 Trident 以:
-
將應用程式容器化並重複使用其現有資料集
-
為臨時應用程式使用資料集的複本
-
重建失敗的 Kubernetes 叢集
-
在災難復原期間遷移應用程式資料
在匯入磁碟區之前,請檢閱下列考量事項。
-
Trident 只能匯入 RW(讀寫)類型的 ONTAP 磁碟區。DP(資料保護)類型的磁碟區是 SnapMirror 目標磁碟區。在將磁碟區匯入 Trident 之前,您應該中斷鏡射關係。
-
我們建議匯入沒有作用中連線的磁碟區。若要匯入正在使用的磁碟區,請複製該磁碟區,然後執行匯入。
這一點對於區塊磁碟區尤其重要,因為 Kubernetes 無法感知先前的連線,很容易將作用中磁碟區附加到 Pod 上。這可能導致資料毀損。 -
雖然 `StorageClass`必須在 PVC 上指定,但 Trident 在匯入期間不會使用此參數。儲存類別用於在建立磁碟區時根據儲存特性從可用的儲存池中進行選擇。由於磁碟區已存在,因此在匯入期間不需要選擇儲存池。因此,即使磁碟區存在於與 PVC 中指定的儲存類別不符的後端或儲存池上,匯入也不會失敗。
-
現有磁碟區的大小在 PVC 中決定和設定。儲存驅動程式匯入磁碟區後,會建立 PV 並將其 ClaimRef 與 PVC 關聯起來。
-
回收原則最初在 PV 中設定為
retain。在 Kubernetes 成功繫結 PVC 和 PV 後,回收原則會更新為與 Storage Class 的回收原則相符。 -
如果 Storage Class 的回收策略為
delete,則當 PV 被刪除時,儲存磁碟區也會被刪除。
-
-
預設情況下, Trident 會管理 PVC ,並在後端重新命名 FlexVol Volume 和 LUN 。您可以傳遞 `--no-manage`旗標來匯入非託管 Volume ,以及 `--no-rename`旗標來保留 Volume 名稱。
-
--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 是否受管理。此註釋不應修改或刪除。
匯入磁碟區
您可以使用 tridentctl import 或透過建立具有 Trident 匯入註解的 PVC 來匯入磁碟區。
|
|
如果使用 PVC 註釋,則無需下載或使用 `tridentctl`匯入磁碟區。 |
-
建立 PVC 檔案(例如
pvc.yaml),用於建立 PVC。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>
-
建立一個 PVC YAML 檔案(例如,
pvc.yaml),其中包含所需的 Trident 匯入註解。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`匯入託管磁碟區和非託管磁碟區。
以下範例匯入名為 `managed_volume`的 Volume,該 Volume 位於名為 `ontap_nas`的後端:
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 不會重新命名磁碟區。
以下範例會在 ontap_nas 後端匯入 unmanaged_volume:
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 註解匯入託管和非託管磁碟區。
以下範例從後端 81abcb27-ea63-49bb-b606-0a5315ac5f21`匯入一個名為 `ontap_volume1`的 1GiB `ontap-nas 磁碟區,並使用 PVC 註解設定了 RWO 存取模式:
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>
以下範例從後端 34abcb27-ea63-49bb-b606-0a5315ac5f34`匯入名為 `ontap-volume2`的 1Gi `ontap-nas 磁碟區,並使用 PVC 註解設定 RWO 存取模式:
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 Volume 。這與 `ontap-san`驅動程式一致、此驅動程式會為每個 PVC 建立一個 FlexVol Volume 、並在 FlexVol Volume 內建立一個 LUN 。Trident 會匯入 FlexVol Volume 並將其與 PVC 定義建立關聯。Trident 可以匯入 `ontap-san-economy`包含多個 LUN 的 Volume 。
以下範例展示如何匯入託管和非託管磁碟區:
對於託管磁碟區、 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
如果您將 LUN 對應到與 Kubernetes 節點 IQN 共用相同 IQN 的 igroup,如下例所示,您將收到以下錯誤: LUN already mapped to initiator(s) in this group。您需要移除啟動器或取消映射 LUN 才能匯入磁碟區。

元素
Trident 支援使用 `solidfire-san`驅動程式匯入 NetApp Element 軟體和 NetApp HCI 磁碟區。
|
|
Element 驅動程式支援重複的磁碟區名稱。但是,如果存在重複的磁碟區名稱,Trident 會傳回錯誤。因應措施是複製磁碟區、提供唯一的磁碟區名稱,然後匯入複製的磁碟區。 |
以下範例會在後端 element_default 匯入一個 element-managed volume。
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 volume,並使用 volume 路徑 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 | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
以下範例示範如何在同一區域存在兩個磁碟區時匯入 `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 | +------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+