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

設定儲存類別

"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

storageDriverName

是的

字串

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 中看到 basic-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"
    }
  }
}

FSx for ONTAP 驅動程式詳細資料

您可以使用下列驅動程式將 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-economy

每個已配置的 PV 都是一個 LUN,每個 Amazon FSx for NetApp ONTAP 磁碟區可設定 LUN 的數量。

ontap-nas-economy

每個已配置的 PV 都是一個 qtree,每個 Amazon FSx for NetApp ONTAP 磁碟區可配置的 qtree 數量。

ontap-nas-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

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 中建立它。

步驟
  1. 這是一個 Kubernetes 物件,因此請使用 `kubectl`在 Kubernetes 中建立它。

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

後端進階組態和範例

請參閱下表以了解後端組態選項:

參數 說明 範例

version

始終為 1

storageDriverName

儲存驅動程式的名稱

ontap-nas, ontap-nas-economy, ontap-nas-flexgroup, ontap-san, ontap-san-economy

backendName

自訂名稱或儲存後端

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

managementLIF

叢集或 SVM 管理 LIF 的 IP 位址,可以指定完整網域名稱(FQDN)。如果 Trident 是使用 IPv6 旗標安裝的,則可以設定為使用 IPv6 位址。IPv6 位址必須以方括號定義,例如 [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。如果您在 fsxFilesystemID 下的 aws 欄位提供了 managementLIF,則不需要再提供 managementLIF,因為 Trident 會從 AWS 擷取 SVM 資訊。因此,您必須為 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 Selective LUN Map 來探索建立多路徑工作階段所需的 iSCSI LIF。如果明確定義了 dataLIF,則會產生警告。如果 Trident 是使用 IPv6 旗標安裝的,則可以設定為使用 IPv6 位址。IPv6 位址必須以方括號定義,例如 [28e8:d9fb:a825:b7bf:69a8:d02f:9e7b:3555]。

autoExportPolicy

啟用自動匯出原則建立和更新 [布林值]。使用 `autoExportPolicy`和 `autoExportCIDRs`選項,Trident 可以自動管理匯出原則。

false

autoExportCIDRs

啟用 `autoExportPolicy`時用於篩選 Kubernetes 節點 IP 的 CIDR 清單。使用 `autoExportPolicy`和 `autoExportCIDRs`選項,Trident 可以自動管理匯出原則。

"["0.0.0.0/0", "::/0"]"

labels

要套用於磁碟區的任意 JSON 格式標籤集

""

clientCertificate

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

""

clientPrivateKey

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

""

trustedCACertificate

受信任 CA 憑證的 Base64 編碼值。此參數為可選。用於憑證型驗證。

""

username

用於連接叢集或 SVM 的使用者名稱。用於基於憑證的身份驗證。例如, vsadmin 。

password

連接叢集或 SVM 的密碼。用於基於憑證的身份驗證。

svm

要使用的儲存虛擬機器

如果指定了 SVM 管理 LIF,則會衍生。

storagePrefix

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

trident

limitAggregateUsage

*請勿為 Amazon FSx for NetApp ONTAP 指定。*提供的 `fsxadmin`和 `vsadmin`不包含使用 Trident 檢索 Aggregate 使用情況並加以限制所需的權限。

請勿使用。

limitVolumeSize

如果請求的磁碟區大小超過此值,則配置失敗。此外,它還限制了其管理的 qtree 和 LUN 卷的最大大小,並且該 `qtreesPerFlexvol`選項允許自訂每個 FlexVol 磁碟區的最大 qtree 數量

" (預設不強制執行)

lunsPerFlexvol

每個 FlexVol volume 的最大 LUN 數量必須在 [50, 200] 範圍內。僅限 SAN。

“100”

debugTraceFlags

用於疑難排解的偵錯旗標。例如、{"api":false, "method":true}除非您正在進行疑難排解並需要詳細的記錄傾印、否則請勿使用 debugTraceFlags

null

nfsMountOptions

以逗號分隔的 NFS 掛載選項清單。Kubernetes 持久性磁碟區的掛載選項通常在儲存類別中指定,但如果儲存類別中未指定任何掛載選項, Trident 將回退到使用儲存後端設定檔中指定的掛載選項。如果儲存類別和設定檔中均未指定掛載選項, Trident 將不會在關聯的持久性磁碟區上設定任何掛載選項。

""

nasType

配置 NFS 或 SMB 磁碟區的建立。選項為 nfs、 `smb`或 null。*必須設定為 `smb`才能建立 SMB 磁碟區。*設定為 null 則預設建立 NFS 磁碟區。

nfs

qtreesPerFlexvol

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

"200"

smbShare

您可以指定下列名稱之一:使用 Microsoft Management Console 或 ONTAP CLI 建立的 SMB 共用名稱,或允許 Trident 建立 SMB 共用的名稱。此參數對於 Amazon FSx for ONTAP 後端是必要的。

smb-share

useREST

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

false

aws

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



""
""
""

credentials

指定要儲存在 AWS Secrets Manager 中的 FSx SVM 認證。- name:包含 SVM 認證的密碼的 Amazon Resource Name (ARN)。- type:設定為 awsarn。請參閱 "建立 AWS Secrets Manager 密碼" 以取得更多資訊。

磁碟區配置的後端組態選項

您可以使用 defaults 配置部分中的這些選項來控制預設配置。例如、請參閱下面的組態範例。

參數 說明 預設

spaceAllocation

LUN 的空間分配

true

spaceReserve

空間保留模式;「 none 」(精簡)或「 volume 」(完整)

none

snapshotPolicy

要使用的 Snapshot 原則

none

qosPolicy

要為建立的磁碟區指派 QoS 策略群組。每個儲存資源池或後端可選擇 qosPolicy 或 adaptiveQosPolicy 其中之一。搭配 Trident 使用 QoS 策略群組需要 ONTAP 9.8 或更新版本。您應該使用非共享的 QoS 策略群組,並確保該策略群組單獨套用至每個成員。共享的 QoS 策略群組會強制限制所有工作負載的總吞吐量上限。

""

adaptiveQosPolicy

為建立的磁碟區指派的自適應 QoS 原則群組。每個儲存資源池或後端可選擇 qosPolicy 或 adaptiveQosPolicy 其中之一。ontap-nas-economy 不支援。

""

snapshotReserve

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

如果 snapshotPolicy`是 `none, `else`""

splitOnClone

建立時將複本從其父項分割

false

encryption

在新磁碟區上啟用 NetApp Volume Encryption(NVE);預設值為 false。要使用此選項,叢集必須已獲得 NVE 許可並啟用 NVE。如果後端啟用了 NAE,則在 Trident 中佈建的任何磁碟區都會啟用 NAE。如需詳細資訊,請參閱:"Trident 與 NVE 和 NAE 的運作方式"

false

luksEncryption

啟用 LUKS 加密。請參閱"使用 Linux Unified Key Setup ( LUKS )"。僅限 SAN。

""

tieringPolicy

要使用的分層原則 none

unixPermissions

新磁碟區的模式。SMB 磁碟區請保留空白。

""

securityStyle

新磁碟區的安全樣式。NFS 支援 `mixed`和 `unix`安全樣式。SMB 支援 `mixed`和 `ntfs`安全樣式。

NFS 預設值為 unix。SMB 預設值為 ntfs