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

在 Red Hat OpenShift 叢集上安裝 Trident 並建立儲存物件

貢獻者 banum-netapp netapp-jsnyder kevin-hoke

使用經過 Red Hat 認證的 Trident Operator 安裝 Trident,並為 ONTAP 和 Amazon FSx for NetApp ONTAP 建立儲存物件,以啟用容器和 VM 的動態磁碟區資源配置。必要時準備工作節點以進行區塊存取。

開始之前
  • 請先完成此頁面上的步驟,然後再安裝 OpenShift Virtualization。OpenShift Virtualization 需要一個預設的 Trident 支援的 StorageClass 和 VolumeSnapshotClass 用於建立虛擬機範本的黃金鏡像。

  • 如果您在設定 Trident 之前已安裝 OpenShift Virtualization,請刪除所有使用其他儲存類別建立的黃金鏡像。將 Trident 設為預設儲存空間後,OpenShift Virtualization 將使用 Trident 儲存重新建立黃金鏡像。

    oc delete dv,VolumeSnapshot -n openshift-virtualization-os-images --selector=cdi.kubevirt.io/dataImportCron

步驟 1:安裝 Trident

Red Hat 認證的 Trident Operator 由 NetApp 支援,適用於 OpenShift 內部部署、公有雲以及 ROSA 等託管服務。從 Trident 25.02 開始,當您使用 Amazon FSx for NetApp ONTAP 並計劃執行 OpenShift Virtualization VM 工作負載時,該 Operator 也可以為 iSCSI 準備工作節點。

有關其他安裝選項,請參閱 "Trident 說明文件"

步驟
  1. OperatorHub 中、選取 Certified NetApp Trident

    顯示範例

    營運商樞紐

  2. Install 頁面上,保持最新版本並選擇 Install

    顯示範例

    安裝

  3. 安裝操作員後,選擇 View operator 並建立 Trident Orchestrator 實例。

    如果要為 iSCSI 準備工作節點,請切換到 YAML 視圖並新增 iscsi`至 `nodePrep

    顯示範例

    新增 iscsi 以準備節點

  4. 確認叢集中所有 Trident Pod 都正在運作。

    顯示範例

    安裝Trident

  5. 如果您啟用了 iSCSI 節點準備,請登入工作節點並驗證 `iscsid`和 `multipathd`是否處於活動狀態,以及 `multipath.conf`是否具有條目。

    顯示範例

    iscsid 正在運行

    顯示範例

    多路徑運行

    顯示範例

    multipath.conf 檔案執行中

影片示範

以下影片示範如何使用紅帽認證的 Trident Operator 安裝 Trident。

在 OpenShift 中使用經過認證的Trident Operator 安裝Trident 25.02.1

步驟 2:為您的環境準備儲存後端和 StorageClass 設定檔

為您的環境建立 TridentBackendConfig 和 StorageClass 定義。您可以在環境中設定多種儲存協定。為要使用的每種協定建立 YAML 檔案,並將佔位符值替換為您的特定組態詳細資料。

註 根據您的環境,完成下面的內部部署或 ROSA 部分,然後繼續執行步驟 3。

內部部署 OpenShift 叢集

為每個要設定的協定建立 YAML 檔案。您可以設定以下一個或多個協定:NAS(用於基於 NFS 的檔案儲存)、iSCSI(用於 iSCSI 區塊儲存)、NVMe/TCP(用於高效能 NVMe over TCP 區塊儲存)或 FC(用於 Fibre Channel 區塊儲存)。

為每個協定建立一個 TridentBackendConfig 和 StorageClass。後端設定包含儲存在 Kubernetes Secret 中的憑證。

後端配置基本選項的重要指南
  1. 後端設定檔參考您的 ONTAP SVM管理 LIF。+

  2. 您可以使用使用者名稱和密碼對 ONTAP 進行驗證。可以是叢集管理員或 vserver 管理員的使用者名稱和密碼。+

  3. 您也可以使用用戶端憑證進行 ONTAP 身份驗證。有關如何產生用戶端憑證、私密金鑰和 CA 憑證的詳細資訊,請參閱 "Trident 文件在此"

NAS 經濟型驅動程式後端組態選項的基本指南

以下參數可用於配置 NAS economy driver

  1. qtreesPerFlexvol 該值必須在 50-300 範圍內,預設值為 200。+

  2. limitVolumePoolSize 此值是您在 ontap-nas-economy 後端使用 qtrees 時所要求的最大 FlexVol 大小。未設定預設值,且預設不強制執行此參數。如果設定此參數,Trident 運算子會在目前的 FlexVol 達到指定大小時建立新的 FlexVol。此參數可透過限制用於佈建 PV 的 FlexVols 大小,協助您控制叢集中的容量使用率。+

  3. denyNewVolumePools 此參數限制 ontap-nas-economy 後端建立新 FlexVol 磁碟區來包含其 qtree。僅使用預先存在的 FlexVol 來佈建新的 PV。

SAN 驅動程式後端組態選項的基本準則

以下參數可用於 SAN 驅動程式配置:

  1. limitVolumeSize 此值是您在使用 SAN 後端時要求的最大磁碟區大小。未設定預設值,且預設不強制執行此參數。如果您設定此參數,則當請求的磁碟區大小超過此值時,Trident operator 將無法完成佈建。您可以使用此參數來限制其為 LUN 管理的磁碟區的最大大小。+

  2. lunsPerFlexvol 每個 FlexVol 的最大 LUN 數量,必須在 [50, 200] 範圍內,預設值為 100。如果設定此參數,Trident operator 會在目前 FlexVol 的 LUN 數量達到指定值時建立新的 FlexVol。此參數可透過限制每個 FlexVol 用於佈建 PV 的 LUN 數量,協助您控制叢集中的容量使用率。

SAN 經濟型驅動程式後端設定選項的基本指南

以下參數可用於配置 SAN economy driver

  1. limitVolumePoolSize 此值是您在使用 SAN 經濟型後端時所要求的最大 FlexVol 容量。未設定預設值,且預設不強制執行此參數。如果設定此參數,Trident 操作員將限制可用於在 flexvol 中建立 LUN 的最大 flexvol 容量。此參數可透過限制用於配置 PV 的 FlexVols 容量大小,協助您控制叢集中的容量使用率。+

  2. denyNewVolumePools 此參數限制 SAN 經濟型後端建立新的 FlexVol 磁碟區來包含其 LUN。僅使用預先存在的 Flexvols 來佈建新的 PV。

佈建磁碟區後端組態選項的基本指南
註 在每個協定提供的範例 YAML 檔案中,如果未提供 storagePrefix,則使用預設前綴「trident」。當使用 ontap-nas-economy 且 storagePrefix 為 24 個字元或更多字元時,qtree 中不會嵌入儲存前綴,但磁碟區名稱中會包含該前綴。

當您直接從系統管理員或 CLI 在 ONTAP 中建立磁碟區時,若未為所有選用參數提供值,則在磁碟區佈建期間會自動設定一些預設值,如下所示。

在 ONTAP 中建立磁碟區

磁碟區參數的預設值

以下是一個使用 Trident 後端設定建立的磁碟區範例。除了名稱模板之外,其預設值部分沒有明確設定任何選項。

oc describe tbc -n trident tbc-nas
### output truncated for brevity
Spec:
  Backend Name:  tbc-nas
  Credentials:
    Name:  tbc-nas-secret
  Defaults: # There are no defaults set except for the volume name template.
    Name Template:      {{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}
  Management LIF:       10.192.102.50
  Storage Driver Name:  ontap-nas
  Storage Prefix:       testautomation
  Svm:                  oc-test-automation

使用此後端組態建立磁碟區時,後端組態檔案中未設定的選項將設定為如下所示的預設值。

使用 Trident 後端設定建立的磁碟區

但是,當您在 Trident 後端配置的預設部分設定值時,您可以建立具有特定參數值的磁碟區。在下列範例中,snapshotPolicy 設定為預設原則(如果您未明確設定任何內容,則為 none),並且 snapshotDir 在後端配置 YAML 的預設部分中設定為 true。透過這些設定,您可以看到後端磁碟區獲得了這些值。(snapdir-access 為 true,snapshot-policy 為 default)

具有顯式值的預設部分

在後端配置中明確設定 snapshotDir 和 snapshotPolicy 值

明確設定磁碟區中的 snapshotDir 和 snapshotPolicy 值

其他所有附加參數,請參閱 Trident 文件:

NAS

為 ONTAP NAS 建立 TridentBackendConfig 和 StorageClass,以啟用基於 NFS 的持久性儲存配置。後端設定包含儲存在 Kubernetes Secret 中的憑證,並引用您的 ONTAP SVM 和管理 LIF。

使用使用者名稱和密碼認證的後端金鑰和後端設定檔案範例(另存為 tbc-nas.yaml):

# tbc-nas.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-nas-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-nas
spec:
  version: 1
  storageDriverName: ontap-nas
  managementLIF: <ONTAP management LIF>
  backendName: tbc-nas
  svm: zoneb #<replace with your SVM name>
  storagePrefix: testzoneb #<replace with your prefix>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-nas-secret

使用用戶端憑證認證的後端金鑰和後端設定檔案範例(另存為 tbc-nas.yaml):

# tbc-nas.yaml
apiVersion: v1
kind: Secret
metadata:
  name: ontap-nas-secret
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-nas
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-nas
  managementLIF: <ONTAP management LIF>
  backendName: tbc-nas
  svm: zoneb #<replace with your SVM name>
  storagePrefix: testzoneb #<replace with your prefix>
  credentials:
    name: ontap-nas-secret
  clientCertificate: <client certificate>

StorageClass 定義(另存為 sc-nas.yaml):

# sc-nas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  media: "ssd"
  provisioningType: "thin"
  snapshots: "true"
allowVolumeExpansion: true
NAS 經濟

建立 TridentBackendConfig 和 StorageClass,以供 ONTAP NAS 經濟型驅動程式使用,並透過 qtree 啟用以 NFS 為基礎的持續性儲存佈建。後端組態包含儲存在 Kubernetes Secret 中的認證,並參照您的 ONTAP SVM 和管理 LIF。

使用使用者名稱和密碼認證的後端金鑰和後端設定檔案範例(另存為 tbc-nas-economy.yaml):

# tbc-nas-economy.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-nas-economy-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-nas-economy
spec:
  version: 1
  storageDriverName: ontap-nas-economy
  managementLIF: <ONTAP management LIF>
  backendName: tbc-nas-eco
  svm: <replace with your SVM name>
  storagePrefix: <replace with your prefix>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-nas-economy-secret

StorageClass 定義(另存為 sc-nas-economy.yaml):

# sc-nas-economy.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas-economy
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas-economy"
  media: "ssd"
  provisioningType: "thin"
  snapshots: "true"
allowVolumeExpansion: true
註 有關 ontap-nas-economy 驅動程式後端組態檔案中可包含的其他參數詳細資訊,請參閱上方的「NAS 經濟型驅動程式後端組態選項的基本準則」一節。
iSCSI SAN

為 ONTAP SAN 建立 TridentBackendConfig 和 StorageClass,並搭配 iSCSI 以啟用基於 iSCSI 的區塊儲存佈建。後端組態使用 ontap-san 驅動程式,並包含儲存在 Kubernetes Secret 中的認證。若省略 sanType 參數,則預設使用 iSCSI 通訊協定。

使用使用者名稱密碼認證的後端金鑰和後端設定檔案(另存為 tbc-iscsi.yaml):

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <management LIF>
  backendName: ontap-iscsi
  svm: <SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret

使用用戶端憑證認證的後端金鑰和後端設定檔案(另存為 tbc-iscsi.yaml):

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <management LIF>
  backendName: ontap-iscsi
  svm: <SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret
  clientCertificate: <client certificate>

StorageClass 定義(另存為 sc-iscsi.yaml):

# sc-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-iscsi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true
NVMe/TCP SAN

建立 TridentBackendConfig 和 StorageClass 用於 ONTAP SAN 的 NVMe over TCP 連接,以實現高效能區塊儲存配置。後端配置使用針對 NVMe/TCP 傳輸最佳化的 ontap-san 驅動程序,並包含儲存在 Kubernetes Secret 中的憑證。

使用使用者名稱密碼認證的後端金鑰和後端設定檔案(另存為 tbc-nvme.yaml):

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-ontap-nvme
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: backend-tbc-ontap-nvme
  svm: <SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret

使用用戶端憑證認證的後端金鑰和後端設定檔案(另存為 tbc-nvme.yaml):

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-ontap-nvme
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: backend-tbc-ontap-nvme
  svm: <SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret
  clientCertificate: <client certificate>

StorageClass 定義(另存為 sc-nvme.yaml):

# sc-nvme.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nvme
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true
註 如果您打算將 ReadWriteMany (RWX) 磁碟區與 NVMe 協定搭配使用,則單一 RWX NVMe 磁碟區在 Kubernetes 叢集中最多只能由 64 個節點掛載。如需有關此限制的詳細資訊,以及有關 Trident 26.02 中引入的 Super-subsystem 模型和 Trident 26.02 之前的 Per-volume subsystem 模型的詳細資訊,請參閱 Trident 文件: https://docs.netapp.com/us-en/trident/trident-use/ontap-san-prep.html#nvme-tcp-considerations
FC SAN

建立 TridentBackendConfig 和 StorageClass 以用於 ONTAP SAN 與光纖通道(Fibre Channel),以啟用基於 FC 的區塊儲存配置。後端配置使用 ontap-san 驅動程式,並指定了 FCP 協定,同時包含儲存在 Kubernetes Secret 中的憑證。

使用使用者名稱/密碼驗證方式或用戶端憑證驗證方式對 ONTAP 進行驗證。有關如何產生用戶端憑證、私密金鑰和 CA 憑證的詳細資訊,請參閱 "Trident 文件在此"。以下提供兩種方法的範例。

顯示範例

使用 ONTAP 使用者名稱和密碼進行身份驗證的後端金鑰和後端設定檔案(另存為 tbc-fc.yaml):

# tbc-fc.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-fc-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-fc
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: tbc-fc
  svm: openshift-fc #<replace with your SVM name>
  sanType: fcp
  storagePrefix: demofc #<replace with your prefix>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-fc-secret

使用用戶端憑證認證的後端金鑰和後端設定檔案(另存為 tbc-fc.yaml):

# tbc-fc.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-fc-secret
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-fc
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: tbc-fc
  svm: openshift-fc #<replace with your SVM name>
  sanType: fcp
  storagePrefix: demofc #<replace with your prefix>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-fc-secret
  clientCertificate: <client certificate>
# sc-fc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-fc
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true
iSCSI SAN 經濟型

建立 TridentBackendConfig 和 StorageClass,以搭配 iSCSI 使用 ONTAP SAN economy,進而啟用基於 iSCSI 的區塊儲存佈建。後端組態使用 ontap-san-economy 驅動程式搭配 iSCSI 通訊協定,並包含儲存於 Kubernetes Secret 中的認證。

使用用戶端憑證認證的後端金鑰和後端設定檔案(另存為 tbc-san-eco.yaml):

# tbc-san-eco.yaml
---
apiVersion: v1
kind: Secret
metadata:
  name: ontap-san-cert-auth
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-san-eco-cert
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san-economy
  managementLIF: "<ONTAP management LIF>"
  backendName: tbc_san_eco
  svm: <replace with your SVM name>
  storagePrefix: <replace with your prefix>
  credentials:
    name: ontap-san-cert-auth
  clientCertificate: <client certificate>
# sc-san-eco.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-san-eco
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san-economy"
  provisioningType: "thin"
  snapshots: "true"

查看 Trident 文件,以了解更多 yaml 檔案範例,以及 SAN 驅動程式和 NAS 驅動程式支援的存取模式和磁碟區模式資訊。

ROSA 叢集與 Amazon FSx for NetApp ONTAP

為每個要設定的協定建立 YAML 檔案。您可以設定以下一種或兩種協定:用於基於 NFS 的檔案儲存的 NAS,或用於區塊儲存的 iSCSI。

NAS

建立 TridentBackendConfig 和 StorageClass 適用於 Amazon FSx for NetApp ONTAP 和 ONTAP NAS 的配置,以在 ROSA 叢集上啟用基於 NFS 的持久性儲存配置。後端設定使用 Amazon FSx for NetApp ONTAP DNS 名稱作為管理和資料 LIF,並包含儲存在 trident 命名空間中的 Kubernetes Secret 中的憑證。

後端密鑰和後端組態檔(另存為 tbc-fsx-nas.yaml):

# tbc-fsx-nas.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-fsx-ontap-nas-secret
type: Opaque
stringData:
  username: <FSx for ONTAP, for example fsxadmin>
  password: <FSx for ONTAP password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-fsx-ontap-nas
spec:
  version: 1
  backendName: fsx-ontap
  storageDriverName: ontap-nas
  managementLIF: <Management DNS name>
  dataLIF: <NFS DNS name>
  svm: <SVM NAME>
  credentials:
    name: backend-fsx-ontap-nas-secret

StorageClass 定義(另存為 sc-fsx-nas.yaml):

# sc-fsx-nas.yaml (storage class name is trident-csi)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: trident-csi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  fsType: "ext4"
allowVolumeExpansion: true
reclaimPolicy: Retain
iSCSI

建立 TridentBackendConfig 和 StorageClass 適用於 Amazon FSx for NetApp ONTAP 和 ONTAP SAN 的配置,以便在 ROSA 叢集上啟用基於 iSCSI 的區塊儲存配置。後端配置使用 ontap-san 驅動程式,並包含儲存在 Kubernetes Secret 中的憑證。確保工作節點已準備好進行 iSCSI 存取。

後端密鑰和後端組態檔(另存為 tbc-fsx-iscsi.yaml):

# tbc-fsx-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-fsx-iscsi-secret
type: Opaque
stringData:
  username: <FSx for ONTAP, for example fsxadmin>
  password: <FSx for ONTAP password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: fsx-iscsi
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <Management DNS name>
  backendName: fsx-iscsi
  svm: <SVM name>
  credentials:
    name: backend-tbc-fsx-iscsi-secret

StorageClass 定義(另存為 sc-fsx-iscsi.yaml):

# sc-fsx-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-fsx-iscsi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

步驟 3:建立 VolumeSnapshotClass 設定檔

為本地部署和 ROSA 部署建立 VolumeSnapshotClass 定義。此配置啟用持久卷的基於快照的操作。

VolumeSnapshotClass 定義(另存為 snapshot-class.yaml):

# snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: trident-snapshotclass
driver: csi.trident.netapp.io
deletionPolicy: Retain

步驟 4:將組態檔套用至叢集

將您在前面步驟中建立的組態檔套用到您的 OpenShift 叢集。

步驟
  1. 為您配置的每個協定套用 TridentBackendConfig 和 StorageClass 檔案。

    對於內部部署叢集:

    oc create -f tbc-nas.yaml -n trident
    oc create -f sc-nas.yaml
    
    oc create -f tbc-nas-economy.yaml -n trident
    oc create -f sc-nas-economy.yaml
    
    oc create -f tbc-iscsi.yaml -n trident
    oc create -f sc-iscsi.yaml
    
    oc create -f tbc-nvme.yaml -n trident
    oc create -f sc-nvme.yaml
    
    oc create -f tbc-fc.yaml -n trident
    oc create -f sc-fc.yaml

    對於 ROSA 叢集:

    oc create -f tbc-fsx-nas.yaml -n trident
    oc create -f sc-fsx-nas.yaml
    
    oc create -f tbc-fsx-iscsi.yaml -n trident
    oc create -f sc-fsx-iscsi.yaml
  2. 應用 VolumeSnapshotClass 配置。

    oc create -f snapshot-class.yaml
  3. 確認資源已成功建立。

    檢查 TridentBackendConfig 物件:

    oc get tbc -n trident

    檢查 StorageClass 物件:

    oc get storageclass

    檢查 VolumeSnapshotClass:

    oc get volumesnapshotclass

步驟 5:設定預設的 Trident 儲存和快照類別

將 Trident StorageClass 和 VolumeSnapshotClass 設定為 OpenShift 叢集中的預設值。這是 OpenShift Virtualization 為 VM 範本建立黃金映像來源所必需的。

步驟
  1. 設定預設的 Trident StorageClass。

    將 Trident 支援的 StorageClass 設定為叢集預設值,以便在未指定儲存類別時,PersistentVolumeClaims 自動使用它。您需要設定兩個註解:一個用於叢集範圍的預設值,另一個專門用於 OpenShift Virtualization。

    1. 設定叢集範圍的預設 StorageClass 註解。

      確保只將其中一個 StorageClass 設定為預設值。如果另一個 StorageClass 已設定為預設值,請將其註解設為 false。

      在主控台中,編輯註釋:

      storageclass.kubernetes.io/is-default-class: "true"

      從 CLI:

      kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    2. 設定 OpenShift Virtualization 特有的預設註解。

      OpenShift Virtualization 使用特定的註解,其優先順序高於叢集的一般 `is-default-class`註解。如果另一個 StorageClass 已設定為預設值,請將其註解設為 false。

      在主控台中,編輯註釋:

      storageclass.kubevirt.io/is-default-virt-class: "true"

      從 CLI:

    kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubevirt.io/is-default-virt-class": "true"}}}'
  2. 設定預設的 Trident VolumeSnapshotClass。

    將 Trident 支援的 VolumeSnapshotClass 設定為叢集預設設備,以啟用持久性磁碟區的快照操作。這樣可確保 VolumeSnapshots 在未指定快照類別時自動使用 Trident CSI 驅動程式,並允許 OpenShift Virtualization 建立黃金映像的快照。

    確保只將其中一個 VolumeSnapshotClass 設定為預設值。如果另一個 VolumeSnapshotClass 已設定為預設值,請將其註解設為 false。

    在主控台中,編輯註釋:

    snapshot.storage.kubernetes.io/is-default-class: "true"

    從 CLI:

    oc patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'