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 區塊儲存)。

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

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
iSCSI

建立 TridentBackendConfig 和 StorageClass for ONTAP SAN 的後端配置,以啟用基於 iSCSI 的區塊儲存配置。後端配置使用 ontap-san 驅動程式,並包含儲存在 Kubernetes Secret 中的認證。

後端密鑰和後端組態檔(另存為 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

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

建立 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

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
FC

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

後端密鑰和後端組態檔(另存為 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

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

# 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

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-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"}}}'