Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

設定儲存類別

貢獻者 netapp-aruldeepa kcantrel

"Kubernetes StorageClass 物件"可識別資源配置程式,並指示資源配置程式如何配置磁碟區。本節說明如何設定 Kubernetes StorageClass 物件,以指定 Trident 作為資源配置程式。

建立 StorageClass 物件

當您為 FSx for ONTAP 建立 StorageClass 時,Trident 將自動建立後端組態。

註 如果您想要手動設定儲存後端,請參閱[create-a-kubernetes-storageclass-without-automatic-backend-configuration]章節,瞭解如何分別建立 Trident 後端和儲存類別。

指定所需的 StorageClass 參數

建立 StorageClass 時需要定義以下三個參數:

參數 必要 類型 說明

fsxFilesystemID

是的

字串

FSx for NetApp ONTAP 檔案系統 ID

「torageDriverName」

是的

字串

Trident 儲存驅動程式(例如、 ontap-nasontap-san

credentialsName

是的

字串

包含 FSx for ONTAP 憑證的 Kubernetes Secret 名稱

指定選用參數

您可以透過 StorageClass 傳遞可選的後端參數。在 StorageClass parameters 部分中將所有可選值定義為字串。有關後端參數的完整列表、請參閱:FSx for NetApp ONTAP 後端組態

範例 StorageClass 設定檔。

以下範例展示 StorageClass 如何觸發自動後端配置。

YAML
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
JSON
{
  "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 註解中。

註釋 說明

trident.netapp.io/configuratorStatus

組態結果 (SuccessFailure

trident.netapp.io/configuratorMessage

詳細狀態或錯誤訊息

trident.netapp.io/configuratorName

內部配置器資源的名稱

trident.netapp.io/managed

表示 StorageClass 由 Trident 管理

trident.netapp.io/additionalStoragePools

為此後端建立的儲存資源池

若要驗證狀態、請執行:

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 的憑證:

YAML
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
JSON
{
  "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 trident
    tridentbackendconfig.trident.netapp.io/backend-tbc-ontap-nas created
  • 驗證已成功建立 Trident 後端組態( TBC ):

    Kubectl get tbc -n trident
    NAME                         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 中建立它。

步驟
  1. 這是 Kubernetes 物件、請使用 kubectl 在Kubernetes中建立。

    kubectl create -f storage-class-ontapnas.yaml
  2. 現在您應該會在 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」

儲存驅動程式名稱

ontap-nasontap-nas-economyontap-nas-flexgroupontap-sanontap-san-economy

「後端名稱」

自訂名稱或儲存後端

驅動程式名稱 + "_" + dataLIF

《馬納格門達利》

叢集或 SVM 管理 LIF 的 IP 位址可以指定完整網域名稱( FQDN )。如果使用 IPv6 旗標安裝 Trident 、則可設定為使用 IPv6 位址。IPv6位址必須以方括弧來定義、例如[28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。如果您在欄位下方 aws`提供、則 `fsxFilesystemID`不需要提供、 `managementLIF`因為 Trident 會從 AWS 擷取 SVM `managementLIF 資訊。因此、您必須在 SVM 下提供使用者的認證(例如: vsadmin )、且使用者必須具有該 vsadmin 角色。

"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 清單 autoExportPolicy。使用 `autoExportPolicy`和 `autoExportCIDRs`選項、 Trident 可以自動管理匯出原則。

"["0.0.0/0" , ":/0"]"

《標籤》

套用到磁碟區的任意JSON-格式化標籤集

"

「用戶端憑證」

用戶端憑證的Base64編碼值。用於憑證型驗證

"

「clientPrivate Key」

用戶端私密金鑰的Base64編碼值。用於憑證型驗證

"

「可信賴的CACertifcate」

受信任CA憑證的Base64編碼值。選用。用於憑證型驗證。

"

《使用者名稱》

連線至叢集或SVM的使用者名稱。用於認證型驗證。例如、vsadmin。

密碼

連線至叢集或SVM的密碼。用於認證型驗證。

《虛擬機器》

要使用的儲存虛擬機器

指定SVM管理LIF時衍生。

「toragePrefix」

在SVM中配置新磁碟區時所使用的前置碼。無法在建立後修改。若要更新此參數、您需要建立新的後端。

trident

「限制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}

請勿使用 debugTraceFlags 除非您正在疑難排解並需要詳細的記錄傾印。

null

「nfsMountOptions」

以逗號分隔的NFS掛載選項清單。Kubernetes-Persistent Volume 的掛載選項通常是在儲存類別中指定、但如果儲存類別中未指定掛載選項、則 Trident 會回復為使用儲存後端組態檔案中指定的掛載選項。如果儲存類別或組態檔案中未指定任何掛載選項、 Trident 將不會在關聯的持續磁碟區上設定任何掛載選項。

"

nasType

設定NFS或SMB磁碟區建立。選項包括 nfssmb`或null。*必須設定為 `smb 對於SMB Volume。*設定為null、預設為NFS Volume。

nfs

"qtreesPerFlexvol"

每個 FlexVol volume 的最大 qtree 數必須在範圍 [50 , 300]

"200"

smbShare

您可以指定下列其中一項:使用 Microsoft 管理主控台或 ONTAP CLI 建立的 SMB 共用名稱、或是允許 Trident 建立 SMB 共用的名稱。ONTAP 後端的 Amazon FSX 需要此參數。

smb-share

《useREST》

使用ONTAP Isrest API的布林參數。設為 true`時、 Trident 將使用 ONTAP REST API 與後端通訊。此功能需要ONTAP 使用更新版本的版本。此外、使用的 ONTAP 登入角色必須具有應用程式存取權 `ontap 。這是預先定義的和角色所滿足 vsadmin cluster-admin 的。

「假」

aws

您可以在 AWS FSX for ONTAP 的組態檔中指定下列項目:
- fsxFilesystemID:指定 AWS FSX 檔案系統的 ID 。
- apiRegion: AWS API 區域名稱。
- apikey: AWS API 金鑰。
- secretKey: AWS 秘密金鑰。





""
""
""

credentials

指定要儲存在 AWS Secrets Manager 中的 FSX SVM 認證。- name:機密的 Amazon 資源名稱( ARN )、其中包含 SVM 的認證。- type:設為 awsarn。如需詳細資訊、請參閱 "建立 AWS Secrets Manager 密碼"

用於資源配置磁碟區的後端組態選項

您可以使用中的這些選項來控制預設資源配置 defaults 組態區段。如需範例、請參閱下列組態範例。

參數 說明 預設

"paceAllocate(配置)"

LUN的空間分配

"真的"

《保護區》

空間保留模式;「無」(精簡)或「 Volume 」(粗)

「快照原則」

要使用的Snapshot原則

「qosPolicy」

要指派給所建立磁碟區的QoS原則群組。選擇每個儲存集區或後端的其中一個qosPolicy或adaptiveQosPolicy。搭配 Trident 使用 QoS 原則群組需要 ONTAP 9 8 或更新版本。您應該使用非共用的 QoS 原則群組、並確保個別將原則群組套用至每個成員。共享 QoS 原則群組會強制執行所有工作負載總處理量的上限。

"

《adaptiveQosPolicy》

要指派給所建立磁碟區的調適性QoS原則群組。選擇每個儲存集區或後端的其中一個qosPolicy或adaptiveQosPolicy。不受ONTAP-NAS-經濟支援。

"

「快照保留區」

為快照保留的磁碟區百分比「 0 」

如果 snapshotPolicy`是 `noneelse

「PlitOnClone」

建立複本時、從其父複本分割複本

「假」

加密

在新磁碟區上啟用 NetApp Volume Encryption ( NVE );預設為 false。必須在叢集上授權並啟用NVE、才能使用此選項。如果在後端啟用 NAE 、則 Trident 中配置的任何 Volume 都將啟用 NAE 。如需更多資訊、請參閱"Trident 如何與 NVE 和 NAE 搭配運作":。

「假」

luksEncryption

啟用LUKS加密。請參閱 "使用Linux統一金鑰設定(LUKS)"。僅限SAN。

"

「分層政策」

要使用的分層原則 none

「unixPermissions」

新磁碟區的模式。如果是SMB磁碟區、請保留空白。

"

《生態樣式》

新磁碟區的安全樣式。NFS支援 mixedunix 安全樣式:SMB支援 mixedntfs 安全樣式:

NFS預設為 unix。SMB預設為 ntfs