設定儲存類別
此 "Kubernetes StorageClass 對象"可識別資源配置程式,並指示資源配置程式如何配置磁碟區。本節說明如何設定 Kubernetes StorageClass 物件,以指定 Trident 作為資源配置程式。
建立 StorageClass 物件
當您為 FSx for ONTAP 建立 StorageClass 時,Trident 將自動建立後端組態。
|
|
如果您想要手動設定儲存後端,請參閱[create-a-kubernetes-storageclass-without-automatic-backend-configuration]章節,瞭解如何分別建立 Trident 後端和儲存類別。 |
指定所需的 StorageClass 參數
建立 StorageClass 時需要定義以下三個參數:
| 參數 | 必填 | 類型 | 說明 |
|---|---|---|---|
|
是的 |
字串 |
FSx for NetApp ONTAP 檔案系統 ID |
|
是的 |
字串 |
Trident 儲存驅動程式(例如、 |
|
是的 |
字串 |
包含 FSx for ONTAP 憑證的 Kubernetes Secret 名稱 |
指定選用參數
您可以透過 StorageClass 傳遞可選的後端參數。在 StorageClass parameters 部分中將所有可選值定義為字串。有關後端參數的完整列表、請參閱:"FSx for NetApp ONTAP 後端組態"。
範例 StorageClass 設定檔。
以下範例展示 StorageClass 如何觸發自動後端配置。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-fsx-demo
annotations:
description: "Demo StorageClass for FSx for NetApp ONTAP"
provisioner: csi.trident.netapp.io
parameters:
fsxFilesystemID: "fs-0abc123"
storageDriverName: "ontap-nas"
credentialsName: trident-fsx-credentials
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
{
"apiVersion": "storage.k8s.io/v1",
"kind": "StorageClass",
"metadata": {
"name": "ontap-fsx-demo",
"annotations": {
"description": "Demo StorageClass for FSx for NetApp ONTAP"
}
},
"provisioner": "csi.trident.netapp.io",
"parameters": {
"fsxFilesystemID": "fs-0abc123",
"storageDriverName": "ontap-nas",
"credentialsName": "trident-fsx-credentials"
},
"allowVolumeExpansion": true,
"reclaimPolicy": "Delete",
"volumeBindingMode": "Immediate"
}
建立 StorageClass
建立設定檔案後,執行以下命令以建立儲存類別。
kubectl create -f storage-class-ontapnas.yaml
現在您應該在 Kubernetes 和 Trident 中看到 basic-csi 儲存類別,而 Trident 應該已經發現了後端上的儲存池。
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
套用 StorageClass 後,Trident 會自動建立後端。然後您可以建立 PersistentVolumeClaims 來參照此 StorageClass。
驗證後端組態狀態
Trident 會將後端建立的結果記錄在 StorageClass 註解中。
| 註解 | 說明 |
|---|---|
|
組態結果 ( |
|
詳細狀態或錯誤訊息 |
|
內部配置器資源的名稱 |
|
表示 StorageClass 由 Trident 管理 |
|
為此後端建立的儲存資源池 |
若要驗證狀態、請執行:
kubectl get storageclass ontap-fsx-demo -o yaml
確認 trident.netapp.io/configuratorStatus 是否已設定為 Success。如果值為 Failure,請檢查 trident.netapp.io/configuratorMessage 以瞭解錯誤。
新增其他 FSxN 檔案系統
如果您在繼續使用相同 StorageClass 的情況下需要額外的儲存容量,請新增額外的 FSxN 檔案系統 ID。
編輯 StorageClass 並新增以下註釋:
metadata:
annotations:
trident.netapp.io/additionalFsxNFileSystemID: '["fs-xxxxxxxxxxxxxxxxxx"]'
套用變更後, Trident 會更新後端組態並更新 StorageClass 註釋。
操作考量與限制
-
刪除具有自動後端組態的 StorageClass 通常會刪除相關的 Trident 後端。這可能會中斷儲存連線並導致執行中的工作負載中斷。在刪除託管的 StorageClass 之前,請先驗證其影響。
-
僅 AWS FSx for NetApp ONTAP 支援自動後端組態。
建立一個不帶自動後端配置的 Kubernetes StorageClass
如果您想單獨建立 Trident 後端和 StorageClass,請依照下列步驟操作。
了解自動後端組態的運作方式
Trident 從 StorageClass 定義中派生後端配置。當您套用 StorageClass 時,Trident 會驗證必要的參數、建立後端,並使用狀態標記 StorageClass。
Trident 只會建立一次 VolumeSnapshotClass。Trident 會為後續的 StorageClasses 重複使用相同的 VolumeSnapshotClass。
建立 Trident 後端
要建立 Trident 後端,您需要建立一個 JSON 或 YAML 格式的設定檔案。該檔案需要指定所需的儲存類型(NAS 或 SAN)、檔案系統、要從中取得資料的 SVM 以及如何進行驗證。以下範例展示如何定義基於 NAS 的儲存,以及如何使用 AWS Secret 來儲存要使用的 SVM 的憑證:
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-nas
namespace: trident
spec:
version: 1
storageDriverName: ontap-nas
backendName: tbc-ontap-nas
svm: svm-name
aws:
fsxFilesystemID: fs-xxxxxxxxxx
credentials:
name: "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name"
type: awsarn
{
"apiVersion": "trident.netapp.io/v1",
"kind": "TridentBackendConfig",
"metadata": {
"name": "backend-tbc-ontap-nas"
"namespace": "trident"
},
"spec": {
"version": 1,
"storageDriverName": "ontap-nas",
"backendName": "tbc-ontap-nas",
"svm": "svm-name",
"aws": {
"fsxFilesystemID": "fs-xxxxxxxxxx"
},
"managementLIF": null,
"credentials": {
"name": "arn:aws:secretsmanager:us-west-2:xxxxxxxx:secret:secret-name",
"type": "awsarn"
}
}
}
FSx for ONTAP 驅動程式詳細資料
您可以使用下列驅動程式將 Trident 與 Amazon FSx for NetApp ONTAP 整合:
| 驅動程式名稱 | 說明 |
|---|---|
|
每個已配置的 PV 都是其自身 Amazon FSx for NetApp ONTAP 磁碟區中的一個 LUN。建議用於區塊儲存設備。 |
|
每個已配置的 PV 都是一個完整的 Amazon FSx for NetApp ONTAP 磁碟區。推薦用於 NFS 和 SMB。 |
|
每個已配置的 PV 都是一個 LUN,每個 Amazon FSx for NetApp ONTAP 磁碟區可設定 LUN 的數量。 |
|
每個已配置的 PV 都是一個 qtree,每個 Amazon FSx for NetApp ONTAP 磁碟區可配置的 qtree 數量。 |
|
每個已配置的 PV 都是一個完整的 Amazon FSx for NetApp ONTAP FlexGroup 磁碟區。 |
有關驅動程式詳細資料、請參閱 "NAS 驅動程式" 和 "SAN 驅動程式" 。
建立後端
建立設定檔案後,執行以下命令來建立和驗證 Trident 後端設定(TBC):
-
從 yaml 檔案建立 Trident 後端組態(TBC),並執行下列命令:
kubectl create -f backendconfig.yaml -n tridenttridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created
-
驗證 Trident 後端組態(TBC)是否已成功建立:
Kubectl get tbc -n tridentNAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-ontap-nas tbc-ontap-nas 933e0071-66ce-4324-b9ff-f96d916ac5e9 Bound Success
如需其他組態選項的詳細資訊,請參閱下方的[Backend-advanced-configuration-and-examples]區段。
在*不使用*自動後端配置的情況下配置儲存類別
以下是與 Trident 和 FSx for ONTAP 一起使用的儲存類別設定範例。
NFS 儲存類別
您可以參考此範例來設定使用 NFS 的磁碟區 StorageClass(有關完整的屬性列表,請參閱下面的 Trident 屬性部分):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
provisioningType: "thin"
snapshots: "true"
iSCSI 儲存類別
請使用以下範例設定使用 iSCSI 的磁碟區的 StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
provisioningType: "thin"
snapshots: "true"
使用 NFSv3 和 AWS Bottlerocket 的儲存類別
若要在 AWS Bottlerocket 上配置 NFSv3 磁碟區,請將所需內容新增 `mountOptions`至儲存類別:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-gold
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-nas"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
mountOptions:
- nfsvers=3
- nolock
Trident StorageClass 屬性
這些參數決定了應使用哪些 Trident 管理的儲存資源池來配置給定類型的磁碟區。
| 屬性 | 類型 | 價值觀 | 優惠 | 要求 | 支援者 |
|---|---|---|---|---|---|
媒體1 |
字串 |
HDD、混合式、SSD |
Pool 包含此類型的媒體;混合型表示兩者兼具 |
指定的媒體類型 |
ontap-nas 、 ontap-nas-economy 、 ontap-nas-flexgroup 、 ontap-san 、 solidfire-san |
provisioningType |
字串 |
薄、厚 |
資源池支援此佈建方法 |
已指定佈建方法 |
thick :所有 ONTAP ;thin :所有 ONTAP 和 SolidFire-SAN |
backendType |
字串 |
ontap-nas、ontap-nas-economy、ontap-nas-flexgroup、ontap-san、solidfire-san、azure-netapp-files、ontap-san-economy |
Pool 屬於這種類型的後端 |
指定後端 |
所有驅動程式 |
快照 |
布林值 |
true、false |
Pool 支援帶快照的磁碟區 |
已啟用快照的磁碟區 |
ontap-nas、ontap-san、solidfire-san |
複製 |
布林值 |
true、false |
儲存池支援複製磁碟區 |
已啟用複本的磁碟區 |
ontap-nas、ontap-san、solidfire-san |
加密 |
布林值 |
true、false |
儲存池支援加密磁碟區 |
已啟用加密的磁碟區 |
ontap-nas、ontap-nas-economy、ontap-nas-flexgroups、ontap-san |
IOPS |
int |
正整數 |
Pool 能夠保證此範圍內的 IOPS |
Volume 保證了這些 IOPS |
solidfire-san |
1:ONTAP Select 或 FSx for ONTAP 系統不支援此功能
請參閱"Kubernetes 和 Trident 物件"以瞭解儲存類別如何與 `PersistentVolumeClaim`互動,以及控制 Trident 配置磁碟區的參數詳細資訊。
建立儲存類別
配置完成 StorageClass 後,即可在 Kubernetes 中建立它。
-
這是一個 Kubernetes 物件,因此請使用 `kubectl`在 Kubernetes 中建立它。
kubectl create -f storage-class-ontapnas.yaml -
現在您應該在 Kubernetes 和 Trident 中看到 basic-csi 儲存類別,而 Trident 應該已經發現了後端上的儲存池。
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
配置 SMB Volume
您可以使用 ontap-nas 驅動程式來配置 SMB 磁碟區。但是,若要執行此操作,您必須完成以下步驟:"準備配置 SMB Volume"。
後端進階組態和範例
請參閱下表以了解後端組態選項:
| 參數 | 說明 | 範例 |
|---|---|---|
|
始終為 1 |
|
|
儲存驅動程式的名稱 |
|
|
自訂名稱或儲存後端 |
驅動程式名稱 + "_" + dataLIF |
|
叢集或 SVM 管理 LIF 的 IP 位址,可以指定完整網域名稱(FQDN)。如果 Trident 是使用 IPv6 旗標安裝的,則可以設定為使用 IPv6 位址。IPv6 位址必須以方括號定義,例如 [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。如果您在 |
"10.0.0.1", "[2001:1234:abcd::fefe]" |
|
協定 LIF 的 IP 位址。ONTAP NAS 驅動程式:NetApp 建議指定 dataLIF。如果未提供,Trident 將從 SVM 取得 dataLIF。您可以指定一個完全限定網域名稱 (FQDN) 用於 NFS 掛載作業,從而建立輪詢 DNS 以在多個 dataLIF 之間進行負載平衡。初始設定後可以變更。ONTAP SAN 驅動程式:iSCSI 無需指定。Trident 使用 ONTAP Selective LUN Map 來探索建立多路徑工作階段所需的 iSCSI LIF。如果明確定義了 dataLIF,則會產生警告。如果 Trident 是使用 IPv6 旗標安裝的,則可以設定為使用 IPv6 位址。IPv6 位址必須以方括號定義,例如 [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。 |
|
|
啟用自動匯出原則建立和更新 [布林值]。使用 `autoExportPolicy`和 `autoExportCIDRs`選項,Trident 可以自動管理匯出原則。 |
|
|
啟用 `autoExportPolicy`時用於篩選 Kubernetes 節點 IP 的 CIDR 清單。使用 `autoExportPolicy`和 `autoExportCIDRs`選項,Trident 可以自動管理匯出原則。 |
"["0.0.0.0/0", "::/0"]" |
|
要套用於磁碟區的任意 JSON 格式標籤集 |
"" |
|
用戶端憑證的 Base64 編碼值。用於憑證型驗證 |
"" |
|
用戶端私密金鑰的 Base64 編碼值。用於憑證型驗證 |
"" |
|
受信任 CA 憑證的 Base64 編碼值。此參數為可選。用於憑證型驗證。 |
"" |
|
用於連接叢集或 SVM 的使用者名稱。用於基於憑證的身份驗證。例如, vsadmin 。 |
|
|
連接叢集或 SVM 的密碼。用於基於憑證的身份驗證。 |
|
|
要使用的儲存虛擬機器 |
如果指定了 SVM 管理 LIF,則會衍生。 |
|
在 SVM 中配置新磁碟區時所使用的前綴。建立後無法修改。若要更新此參數、您需要建立新的後端。 |
|
|
*請勿為 Amazon FSx for NetApp ONTAP 指定。*提供的 `fsxadmin`和 `vsadmin`不包含使用 Trident 檢索 Aggregate 使用情況並加以限制所需的權限。 |
請勿使用。 |
|
如果請求的磁碟區大小超過此值,則配置失敗。此外,它還限制了其管理的 qtree 和 LUN 卷的最大大小,並且該 `qtreesPerFlexvol`選項允許自訂每個 FlexVol 磁碟區的最大 qtree 數量 |
" (預設不強制執行) |
|
每個 FlexVol volume 的最大 LUN 數量必須在 [50, 200] 範圍內。僅限 SAN。 |
“100” |
|
用於疑難排解的偵錯旗標。例如、{"api":false, "method":true}除非您正在進行疑難排解並需要詳細的記錄傾印、否則請勿使用 |
null |
|
以逗號分隔的 NFS 掛載選項清單。Kubernetes 持久性磁碟區的掛載選項通常在儲存類別中指定,但如果儲存類別中未指定任何掛載選項, Trident 將回退到使用儲存後端設定檔中指定的掛載選項。如果儲存類別和設定檔中均未指定掛載選項, Trident 將不會在關聯的持久性磁碟區上設定任何掛載選項。 |
"" |
|
配置 NFS 或 SMB 磁碟區的建立。選項為 |
|
|
每個 FlexVol volume 的最大 Qtree 數量必須在 [50, 300] 範圍內 |
|
|
您可以指定下列名稱之一:使用 Microsoft Management Console 或 ONTAP CLI 建立的 SMB 共用名稱,或允許 Trident 建立 SMB 共用的名稱。此參數對於 Amazon FSx for ONTAP 後端是必要的。 |
|
|
布林參數,用於使用 ONTAP REST API。當設定為 `true`時,Trident 將使用 ONTAP REST API 與後端通訊。此功能需要 ONTAP 9.11.1 或更新版本。此外,使用的 ONTAP 登入角色必須具有 `ontap`應用程式的存取權限。預先定義的 `vsadmin`和 `cluster-admin`角色可滿足此要求。 |
|
|
您可以在 AWS FSx for ONTAP 的組態檔中指定下列項目:- |
|
|
指定要儲存在 AWS Secrets Manager 中的 FSx SVM 認證。- |
磁碟區配置的後端組態選項
您可以使用 defaults 配置部分中的這些選項來控制預設配置。例如、請參閱下面的組態範例。
| 參數 | 說明 | 預設 |
|---|---|---|
|
LUN 的空間分配 |
|
|
空間保留模式;「 none 」(精簡)或「 volume 」(完整) |
|
|
要使用的 Snapshot 原則 |
|
|
要為建立的磁碟區指派 QoS 策略群組。每個儲存資源池或後端可選擇 qosPolicy 或 adaptiveQosPolicy 其中之一。搭配 Trident 使用 QoS 策略群組需要 ONTAP 9.8 或更新版本。您應該使用非共享的 QoS 策略群組,並確保該策略群組單獨套用至每個成員。共享的 QoS 策略群組會強制限制所有工作負載的總吞吐量上限。 |
"" |
|
為建立的磁碟區指派的自適應 QoS 原則群組。每個儲存資源池或後端可選擇 qosPolicy 或 adaptiveQosPolicy 其中之一。ontap-nas-economy 不支援。 |
"" |
|
為快照保留的磁碟區百分比 "0" |
如果 |
|
建立時將複本從其父項分割 |
|
|
在新磁碟區上啟用 NetApp Volume Encryption(NVE);預設值為 |
|
|
啟用 LUKS 加密。請參閱"使用 Linux Unified Key Setup ( LUKS )"。僅限 SAN。 |
"" |
|
要使用的分層原則 |
|
|
新磁碟區的模式。SMB 磁碟區請保留空白。 |
"" |
|
新磁碟區的安全樣式。NFS 支援 `mixed`和 `unix`安全樣式。SMB 支援 `mixed`和 `ntfs`安全樣式。 |
NFS 預設值為 |