Skip to main content
NetApp virtualization solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

在 Red Hat OpenShift 集群上安装 Trident 并创建存储对象

贡献者 banum-netapp netapp-jsnyder kevin-hoke

使用 Red Hat Certified Trident Operator 安装 Trident 并为 ONTAP 和 Amazon FSx for NetApp ONTAP 创建存储对象,以启用容器和虚拟机的动态卷配置。在需要时为块访问准备工作节点。

开始之前
  • 在安装 OpenShift Virtualization 之前,请完成此页面上的步骤。OpenShift Virtualization 需要默认的 Trident 支持的 StorageClass 和 VolumeSnapshotClass 来为 VM 模板创建黄金映像。

  • 如果您在配置 Trident 之前已经安装了 OpenShift Virtualization,请删除使用不同存储类创建的所有黄金映像。将 Trident 设置为默认值后,OpenShift Virtualization 会使用 Trident 存储重新创建黄金映像。

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

步骤 1:安装 Trident

红帽认证 Trident Operator 由 NetApp 支持,适用于本地、公共云和 ROSA 等托管服务中的 OpenShift。从 Trident 25.02 开始,当您使用 Amazon FSx for NetApp ONTAP 并计划运行 OpenShift Virtualization VM 工作负载时,操作员还可以为 iSCSI 准备工作节点。

有关其他安装选项,请参见 "Trident 文档"

步骤
  1. OperatorHub 中,选择 Certified NetApp Trident

    显示示例

    运营商枢纽

  2. Install 页面上,保留最新版本并选择 Install

    显示示例

    安装

  3. 操作员安装后,选择 查看操作员 并创建 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 用于光纤通道块存储。

为每个协议创建 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 后端使用 qtree 时请求的最大 FlexVol 大小。未设置默认值,默认情况下不强制执行此参数。如果设置此参数,当当前 FlexVol 达到指定大小时,Trident 操作员将创建一个新的 FlexVol。此参数可通过限制用于配置 PV 的 FlexVols 大小来帮助您控制集群中的容量利用率。+

  3. denyNewVolumePools 此参数限制 ontap-nas-economy 后端创建新 FlexVol 卷以包含其 qtree。仅使用预先存在的 FlexVol 来配置新的 PV。

SAN 驱动程序后端配置选项的基本准则

以下参数可包含在 SAN driver 配置中:

  1. limitVolumeSize 该值是您在使用 SAN 后端时请求的最大卷大小。未设置默认值,默认情况下不强制执行此参数。如果设置此参数,则当请求的卷大小超过此值时,Trident 操作员将无法进行配置。您可以使用此参数来限制其为 LUN 管理的卷的最大大小。+

  2. lunsPerFlexvol 每个 FlexVol 的最大 LUN 数,必须在 [50, 200] 范围内,默认值为 100。如果设置此参数,当当前 FlexVol 达到指定数量的 LUN 时,Trident 操作员会创建一个新的 FlexVol。此参数可通过限制每个用于调配 PV 的 FlexVol 的 LUN 数量,帮助您控制集群中的容量利用率。

SAN economy 驱动程序后端配置选项的基本准则

以下参数可包含在 SAN economy driver 配置中:

  1. limitVolumePoolSize 该值是您在使用 SAN 经济后端时请求的最大 FlexVol 大小。未设置默认值,默认情况下不强制执行此参数。如果设置此参数,Trident 运算符将限制可以为在 flexvol 中创建 LUN 而创建的最大 flexvol 大小。此参数可以通过限制用于配置 PV 的 FlexVols 大小来帮助您控制集群中的容量利用率。+

  2. denyNewVolumePools 此参数限制 SAN economy 后端创建新 FlexVol 卷以包含其 LUN。仅使用预先存在的 FlexVol 来配置新的 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 在后端配置 yaml 的默认部分中设置为默认策略(如果未显式设置任何内容,则为 none),snapshotDir 设置为 true。通过这些设置,您可以看到后端卷获取了这些值。(snapdir-access 为 true,snapshot-policy 为默认值)

具有显式值的默认部分

在后端配置中显式设置 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 economy 驱动程序,以启用使用 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 economy 驱动程序后端配置选项的基本指南部分。
iSCSI SAN

创建 TridentBackendConfig 和 StorageClass,用于支持 iSCSI 的 ONTAP SAN,以启用基于 iSCSI 的块存储配置。后端配置使用 ontap-san 驱动程序,并包含存储在 Kubernetes Secret 中的凭据。如果省略 sanType 参数,则默认使用 iSCSI 协议。

使用用户名密码身份验证的后端 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

使用客户端证书身份验证的后端 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

为 ONTAP SAN 创建 TridentBackendConfig 和 StorageClass,使用 NVMe over TCP 以实现高性能块存储调配。后端配置使用针对 NVMe/TCP 传输优化的 ontap-san 驱动程序,并包括存储在 Kubernetes Secret 中的凭据。

使用用户名密码身份验证的后端 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

使用客户端证书身份验证的后端 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 中引入的超级子系统模型和 Trident 26.02 之前的每卷子系统模型的信息,请参见 Trident 文档: https://docs.netapp.com/us-en/trident/trident-use/ontap-san-prep.html#nvme-tcp-considerations
FC SAN

为具有光纤通道的 ONTAP SAN 创建 TridentBackendConfig 和 StorageClass,以启用基于 FC 的块存储配置。后端配置使用指定了 FCP 协议的 ontap-san 驱动程序,并包括存储在 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

使用客户端证书身份验证的后端 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 经济性

为使用 iSCSI 的 ONTAP SAN economy 创建 TridentBackendConfig 和 StorageClass,以启用基于 iSCSI 的块存储配置。后端配置使用带有 iSCSI 协议的 ontap-san-economy 驱动程序,并包括存储在 Kubernetes Secret 中的凭据。

使用客户端证书身份验证的后端 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 驱动程序支持的访问模式和卷模式的信息。

使用 Amazon FSx for NetApp ONTAP 的 ROSA 集群

为要配置的每个协议创建 YAML 文件。可以配置以下协议之一或两者:用于基于 NFS 的文件存储的 NAS 或用于块存储的 iSCSI。

NAS

为 Amazon FSx for NetApp ONTAP 创建 TridentBackendConfig 和 StorageClass,并使用 ONTAP NAS,以便在 ROSA 集群上启用基于 NFS 的持久存储配置。后端配置使用 Amazon FSx for NetApp ONTAP 的 DNS 名称来管理和数据 LIF,并包含存储在 trident 命名空间的 Kubernetes Secret 中的凭据。

后端 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

为 Amazon FSx for NetApp ONTAP 配置 ONTAP SAN,创建 TridentBackendConfig 和 StorageClass,以便在 ROSA 集群上启用基于 iSCSI 的块存储配置。后端配置使用 ontap-san 驱动,并包含存储在 Kubernetes Secret 中的凭据。确保工作节点已为 iSCSI 访问做好准备。

后端 secret 和后端配置文件(另存为 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"}}}'