在 Red Hat OpenShift 叢集上安裝 Trident 並建立儲存物件
使用經過 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 說明文件"。
-
在 OperatorHub 中、選取 Certified NetApp Trident。
顯示範例

-
在 Install 頁面上,保持最新版本並選擇 Install 。
顯示範例

-
安裝操作員後,選擇 View operator 並建立 Trident Orchestrator 實例。
如果要為 iSCSI 準備工作節點,請切換到 YAML 視圖並新增
iscsi`至 `nodePrep。顯示範例

-
確認叢集中所有 Trident Pod 都正在運作。
顯示範例

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

顯示範例

顯示範例

以下影片示範如何使用紅帽認證的 Trident Operator 安裝 Trident。
步驟 2:為您的環境準備儲存後端和 StorageClass 設定檔
為您的環境建立 TridentBackendConfig 和 StorageClass 定義。您可以在環境中設定多種儲存協定。為要使用的每種協定建立 YAML 檔案,並將佔位符值替換為您的特定組態詳細資料。
|
|
根據您的環境,完成下面的內部部署或 ROSA 部分,然後繼續執行步驟 3。 |
內部部署 OpenShift 叢集
為每個要設定的協定建立 YAML 檔案。您可以設定以下一個或多個協定:NAS(用於基於 NFS 的檔案儲存)、iSCSI(用於 iSCSI 區塊儲存)、NVMe/TCP(用於高效能 NVMe over TCP 區塊儲存)或 FC(用於 Fibre Channel 區塊儲存)。
為 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
建立 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
建立 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
建立 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。
建立 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
建立 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 叢集。
-
為您配置的每個協定套用 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 -
應用 VolumeSnapshotClass 配置。
oc create -f snapshot-class.yaml -
確認資源已成功建立。
檢查 TridentBackendConfig 物件:
oc get tbc -n trident檢查 StorageClass 物件:
oc get storageclass檢查 VolumeSnapshotClass:
oc get volumesnapshotclass
步驟 5:設定預設的 Trident 儲存和快照類別
將 Trident StorageClass 和 VolumeSnapshotClass 設定為 OpenShift 叢集中的預設值。這是 OpenShift Virtualization 為 VM 範本建立黃金映像來源所必需的。
-
設定預設的 Trident StorageClass。
將 Trident 支援的 StorageClass 設定為叢集預設值,以便在未指定儲存類別時,PersistentVolumeClaims 自動使用它。您需要設定兩個註解:一個用於叢集範圍的預設值,另一個專門用於 OpenShift Virtualization。
-
設定叢集範圍的預設 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"}}}' -
設定 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"}}}' -
-
設定預設的 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"}}}'