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