設定儲存類別
此 "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 |
「torageDriverName」 |
是的 |
字串 |
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 中同時看到 * base-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"
}
}
}
適用於 ONTAP 驅動程式詳細資料的 FSX
您可以使用下列驅動程式、將 Trident 與 Amazon FSX for NetApp ONTAP 整合:
| 驅動程式名稱 | 說明 |
|---|---|
「ONTAP-SAN」 |
每個已配置的 PV 都是其自身 Amazon FSx for NetApp ONTAP 磁碟區中的一個 LUN。建議用於區塊儲存設備。 |
「ONTAP-NAS」 |
每個已配置的 PV 都是一個完整的 Amazon FSx for NetApp ONTAP 磁碟區。推薦用於 NFS 和 SMB。 |
《ONTAP-san經濟》 |
每個已配置的 PV 都是一個 LUN,每個 Amazon FSx for NetApp ONTAP 磁碟區可設定 LUN 的數量。 |
《ONTAP-NANAS經濟》 |
每個已配置的 PV 都是一個 qtree,每個 Amazon FSx for NetApp ONTAP 磁碟區可配置的 qtree 數量。 |
「ONTAP-NAA-flexgroup」 |
每個已配置的 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 |
資源池包含此類型的媒體、混合式表示兩者 |
指定的媒體類型 |
ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS-flexgroup、ONTAP-SAN、solidfire-san |
資源配置類型 |
字串 |
纖薄、厚實 |
Pool支援此資源配置方法 |
指定的資源配置方法 |
厚:全ONTAP 是邊、薄:全ONTAP 是邊、邊、邊、邊、邊、邊、邊、邊、邊、邊、邊 |
後端類型 |
字串 |
ontap-nas、ontap-nas-economy、ontap-nas-flexgroup、ontap-san、solidfire-san、azure-netapp-files、ontap-san-economy |
集區屬於此類型的後端 |
指定後端 |
所有驅動程式 |
快照 |
布爾 |
對、錯 |
集區支援具有快照的磁碟區 |
已啟用快照的Volume |
ontap-nas、ontap-san、solidfire-san |
複製 |
布爾 |
對、錯 |
資源池支援複製磁碟區 |
已啟用複本的Volume |
ontap-nas、ontap-san、solidfire-san |
加密 |
布爾 |
對、錯 |
資源池支援加密磁碟區 |
已啟用加密的Volume |
ONTAP-NAS、ONTAP-NAS-經濟型、ONTAP-NAS- FlexGroups、ONTAP-SAN |
IOPS |
內部 |
正整數 |
集區能夠保證此範圍內的IOPS |
Volume保證這些IOPS |
solidfire-san |
1:ONTAP Select 或 FSx for ONTAP 系統不支援此功能
如需儲存類別如何與互動的詳細資訊 PersistentVolumeClaim、以及控制 Trident 配置磁碟區的參數、請參閱"Kubernetes和Trident物件"。
建立儲存類別
配置完成 StorageClass 後,即可在 Kubernetes 中建立它。
-
這是 Kubernetes 物件、請使用
kubectl在Kubernetes中建立。kubectl create -f storage-class-ontapnas.yaml -
現在您應該會在 Kubernetes 和 Trident 中同時看到 * base-csi* 儲存類別、而 Trident 應該已經在後端上探索到這些集區。
kubectl get sc basic-csi
NAME PROVISIONER AGE basic-csi csi.trident.netapp.io 15h
提供 SMB 卷
您可以使用 ontap-nas 驅動程式來配置 SMB 磁碟區。但是,若要執行此操作,您必須完成以下步驟:"準備配置SMB磁碟區"。
後端進階組態和範例
如需後端組態選項、請參閱下表:
| 參數 | 說明 | 範例 |
|---|---|---|
「分度」 |
永遠為1 |
|
「torageDriverName」 |
儲存驅動程式名稱 |
|
「後端名稱」 |
自訂名稱或儲存後端 |
驅動程式名稱 + "_" + dataLIF |
《馬納格門達利》 |
叢集或 SVM 管理 LIF 的 IP 位址可以指定完整網域名稱( FQDN )。如果使用 IPv6 旗標安裝 Trident 、則可設定為使用 IPv6 位址。IPv6位址必須以方括弧來定義、例如[28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。如果您在欄位下方 |
"10.0.0.1 " , "[2001:1234:abcd::fefe] |
「DataLIF」 |
協定 LIF 的 IP 位址。ONTAP NAS 驅動程式:NetApp 建議指定 dataLIF。如果未提供,Trident 將從 SVM 取得 dataLIF。您可以指定一個完全限定網域名稱(FQDN)用於 NFS 掛載操作,從而建立輪詢 DNS 以在多個 dataLIF 之間進行負載平衡。初始設定後可以更改。ONTAP SAN 驅動程式:iSCSI 無需指定。Trident 使用 ONTAP 選擇性 LUN 對應來發現建立多路徑會話所需的 iSCSI LIF。如果明確定義了 dataLIF,則會產生警告。如果 Trident 是使用 IPv6 旗標安裝的,可以設定為使用 IPv6 位址。IPv6 位址必須用中括號定義,例如[28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。 |
|
「AutoExpportPolicy」 |
啟用自動匯出原則建立及更新[布 林值]。使用 `autoExportPolicy`和 `autoExportCIDRs`選項、 Trident 可以自動管理匯出原則。 |
「假」 |
《AutoExpportCIDR》(自動匯出CTR) |
將 Kubernetes 節點 IP 篩選在啟用時的 CIDR 清單 |
"["0.0.0/0" , ":/0"]" |
《標籤》 |
套用到磁碟區的任意JSON-格式化標籤集 |
" |
「用戶端憑證」 |
用戶端憑證的Base64編碼值。用於憑證型驗證 |
" |
「clientPrivate Key」 |
用戶端私密金鑰的Base64編碼值。用於憑證型驗證 |
" |
「可信賴的CACertifcate」 |
受信任CA憑證的Base64編碼值。選用。用於憑證型驗證。 |
" |
《使用者名稱》 |
連線至叢集或SVM的使用者名稱。用於認證型驗證。例如、vsadmin。 |
|
密碼 |
連線至叢集或SVM的密碼。用於認證型驗證。 |
|
《虛擬機器》 |
要使用的儲存虛擬機器 |
指定SVM管理LIF時衍生。 |
「toragePrefix」 |
在SVM中配置新磁碟區時所使用的前置碼。無法在建立後修改。若要更新此參數、您需要建立新的後端。 |
|
「限制Aggregateusage」 |
* 請勿指定 Amazon FSX for NetApp ONTAP 。 *提供的 `fsxadmin`和 `vsadmin`不包含使用 Trident 擷取彙總使用量並加以限制所需的權限。 |
請勿使用。 |
《限制Volume大小》 |
如果要求的磁碟區大小高於此值、則資源配置失敗。也會限制其管理 qtree 和 LUN 的最大磁碟區大小,而且此 `qtreesPerFlexvol`選項可讓您自訂每個 FlexVol volume 的最大 qtree 數量 |
""(預設不強制執行) |
《lunsPerFlexvol》 |
每個 FlexVol volume 的最大 LUN 數必須在 [50 , 200] 範圍內。僅限 SAN 。 |
“100” |
「DebugTraceFlags」 |
疑難排解時要使用的偵錯旗標。例如、 { "api" : false 、 "method" : true} |
null |
「nfsMountOptions」 |
以逗號分隔的NFS掛載選項清單。Kubernetes-Persistent Volume 的掛載選項通常是在儲存類別中指定、但如果儲存類別中未指定掛載選項、則 Trident 會回復為使用儲存後端組態檔案中指定的掛載選項。如果儲存類別或組態檔案中未指定任何掛載選項、 Trident 將不會在關聯的持續磁碟區上設定任何掛載選項。 |
" |
|
設定NFS或SMB磁碟區建立。選項包括 |
|
"qtreesPerFlexvol" |
每個 FlexVol volume 的最大 qtree 數必須在範圍 [50 , 300] |
|
|
您可以指定下列其中一項:使用 Microsoft 管理主控台或 ONTAP CLI 建立的 SMB 共用名稱、或是允許 Trident 建立 SMB 共用的名稱。ONTAP 後端的 Amazon FSX 需要此參數。 |
|
《useREST》 |
使用ONTAP Isrest API的布林參數。設為 |
「假」 |
|
您可以在 AWS FSX for ONTAP 的組態檔中指定下列項目: |
|
|
指定要儲存在 AWS Secrets Manager 中的 FSX SVM 認證。- |
用於資源配置磁碟區的後端組態選項
您可以使用中的這些選項來控制預設資源配置 defaults 組態區段。如需範例、請參閱下列組態範例。
| 參數 | 說明 | 預設 |
|---|---|---|
"paceAllocate(配置)" |
LUN的空間分配 |
"真的" |
《保護區》 |
空間保留模式;「無」(精簡)或「 Volume 」(粗) |
無 |
「快照原則」 |
要使用的Snapshot原則 |
無 |
「qosPolicy」 |
要指派給所建立磁碟區的QoS原則群組。選擇每個儲存集區或後端的其中一個qosPolicy或adaptiveQosPolicy。搭配 Trident 使用 QoS 原則群組需要 ONTAP 9 8 或更新版本。您應該使用非共用的 QoS 原則群組、並確保個別將原則群組套用至每個成員。共享 QoS 原則群組會強制執行所有工作負載總處理量的上限。 |
" |
《adaptiveQosPolicy》 |
要指派給所建立磁碟區的調適性QoS原則群組。選擇每個儲存集區或後端的其中一個qosPolicy或adaptiveQosPolicy。不受ONTAP-NAS-經濟支援。 |
" |
「快照保留區」 |
為快照保留的磁碟區百分比「 0 」 |
如果 |
「PlitOnClone」 |
建立複本時、從其父複本分割複本 |
「假」 |
加密 |
在新磁碟區上啟用 NetApp Volume Encryption ( NVE );預設為 |
「假」 |
|
啟用LUKS加密。請參閱 "使用Linux統一金鑰設定(LUKS)"。僅限SAN。 |
" |
「分層政策」 |
要使用的分層原則 |
|
「unixPermissions」 |
新磁碟區的模式。如果是SMB磁碟區、請保留空白。 |
" |
《生態樣式》 |
新磁碟區的安全樣式。NFS支援 |
NFS預設為 |