×

概述

OpenShift Container Platform 可以使用容器存储接口 (CSI) VMware vSphere 驱动程序为虚拟机磁盘 (VMDK) 卷预配持久卷 (PV)。

建议在使用 CSI 操作符和驱动程序时,熟悉持久性存储配置 CSI 卷

为了创建挂载到 vSphere 存储资源的 CSI 预配的持久卷 (PV),OpenShift Container Platform 在 `openshift-cluster-csi-drivers` 命名空间中默认安装 vSphere CSI 驱动程序操作符和 vSphere CSI 驱动程序。

  • vSphere CSI 驱动程序操作符:操作符提供一个名为 `thin-csi` 的存储类,您可以使用它来创建持久卷声明 (PVC)。vSphere CSI 驱动程序操作符支持动态卷预配,允许按需创建存储卷,从而无需集群管理员预先预配存储。如果需要,您可以禁用此默认存储类(请参阅管理默认存储类)。

  • vSphere CSI 驱动程序:此驱动程序允许您创建和挂载 vSphere PV。在 OpenShift Container Platform 4.17 中,驱动程序版本为 3.2.0。vSphere CSI 驱动程序支持底层 Red Hat Core 操作系统版本支持的所有文件系统,包括 XFS 和 Ext4。有关受支持文件系统的更多信息,请参见 可用文件系统概述

对于新安装,OpenShift Container Platform 4.13 及更高版本为 vSphere 树内卷插件提供自动迁移到其等效的 CSI 驱动程序。更新到 OpenShift Container Platform 4.15 及更高版本也提供自动迁移。有关更新和迁移的更多信息,请参见 CSI 自动迁移

CSI 自动迁移应该无缝进行。迁移不会改变您如何使用所有现有 API 对象,例如持久卷、持久卷声明和存储类。

关于 CSI

存储供应商传统上将存储驱动程序作为 Kubernetes 的一部分提供。通过容器存储接口 (CSI) 的实现,第三方提供商可以使用标准接口交付存储插件,而无需更改核心 Kubernetes 代码。

CSI 运算符为 OpenShift Container Platform 用户提供了存储选项,例如卷快照,而这些选项在树内卷插件中是不可能的。

vSphere CSI 限制

以下限制适用于 vSphere 容器存储接口 (CSI) 驱动程序运算符

  • vSphere CSI 驱动程序支持动态和静态配置。但是,在 PV 规范中使用静态配置时,请不要在 csi.volumeAttributes 中使用密钥 storage.kubernetes.io/csiProvisionerIdentity,因为此密钥指示动态配置的 PV。

  • 使用 vSphere 客户端接口在数据存储之间迁移持久容器卷不受 OpenShift Container Platform 支持。

vSphere 存储策略

vSphere CSI 驱动程序运算符存储类使用 vSphere 的存储策略。OpenShift Container Platform 自动创建一个存储策略,该策略以云配置中配置的数据存储为目标。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: thin-csi
provisioner: csi.vsphere.vmware.com
parameters:
  StoragePolicyName: "$openshift-storage-policy-xxxx"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: false
reclaimPolicy: Delete

ReadWriteMany vSphere 卷支持

如果底层 vSphere 环境支持 vSAN 文件服务,则由 OpenShift Container Platform 安装的 vSphere 容器存储接口 (CSI) 驱动程序运算符支持配置 ReadWriteMany (RWX) 卷。如果未配置 vSAN 文件服务,则 ReadWriteOnce (RWO) 是唯一可用的访问模式。如果您未配置 vSAN 文件服务,并且请求 RWX,则卷创建失败并记录错误。

有关在您的环境中配置 vSAN 文件服务的更多信息,请参见 vSAN 文件服务

您可以通过创建以下持久卷声明 (PVC) 来请求 RWX 卷。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim
spec:
  resources:
    requests:
      storage: 1Gi
  accessModes:
     - ReadWriteMany
  storageClassName: thin-csi

请求 RWX 卷类型的 PVC 应导致配置由 vSAN 文件服务支持的持久卷 (PV)。

VMware vSphere CSI 驱动程序运算符要求

要安装 vSphere 容器存储接口 (CSI) 驱动程序运算符,必须满足以下要求:

  • VMware vSphere 版本:7.0 Update 2 或更高版本,或 VMware Cloud Foundation 4.3 或更高版本;8.0 Update 1 或更高版本,或 VMware Cloud Foundation 5.0 或更高版本

  • vCenter 版本:7.0 Update 2 或更高版本,或 VMware Cloud Foundation 4.3 或更高版本;8.0 Update 1 或更高版本,或 VMware Cloud Foundation 5.0 或更高版本

  • 硬件版本 15 或更高版本的虚拟机

  • 群集中未安装任何第三方 vSphere CSI 驱动程序

如果群集中存在第三方 vSphere CSI 驱动程序,OpenShift Container Platform 不会覆盖它。存在第三方 vSphere CSI 驱动程序会阻止 OpenShift Container Platform 更新到 OpenShift Container Platform 4.13 或更高版本。

VMware vSphere CSI 驱动程序运算符仅在安装清单中使用 platform: vsphere 部署的集群上受支持。

您可以为容器存储接口 (CSI) 驱动程序、vSphere CSI 驱动程序运算符和 vSphere 问题检测器运算符创建自定义角色。自定义角色可以包含权限集,这些权限集为每个 vSphere 对象分配最小权限集。这意味着 CSI 驱动程序、vSphere CSI 驱动程序运算符和 vSphere 问题检测器运算符可以与这些对象建立基本交互。

在 vCenter 中安装 OpenShift Container Platform 集群已针对“所需 vCenter 帐户权限”部分中描述的完整权限列表进行了测试。通过遵守完整的权限列表,您可以减少在使用一组受限权限创建自定义角色时可能发生的意外和不受支持的行为的可能性。

要删除第三方 CSI 驱动程序,请参见 删除第三方 vSphere CSI 驱动程序

删除第三方 vSphere CSI 驱动程序运算符

OpenShift Container Platform 4.10 及更高版本包含 Red Hat 支持的内置版本的 vSphere 容器存储接口 (CSI) 运算符驱动程序。如果您已安装由社区或其他供应商提供的 vSphere CSI 驱动程序,则可能会禁用对 OpenShift Container Platform 的下一个主要版本(例如 4.13 或更高版本)的更新。

OpenShift Container Platform 4.12 及更高版本的集群仍然完全受支持,并且对 4.12 的 z 流版本的更新(例如 4.12.z)不会被阻止,但是您必须在更新到 OpenShift Container Platform 的下一个主要版本之前删除第三方 vSphere CSI 驱动程序以更正此状态。删除第三方 vSphere CSI 驱动程序不需要删除关联的持久卷 (PV) 对象,并且不会发生数据丢失。

这些说明可能不完整,因此请咨询供应商或社区提供商的卸载指南,以确保驱动程序和组件的删除。

要卸载第三方 vSphere CSI 驱动程序:

  1. 删除第三方 vSphere CSI 驱动程序 (VMware vSphere 容器存储插件) 部署和 Daemonset 对象。

  2. 删除以前使用第三方 vSphere CSI 驱动程序安装的 configmap 和 secret 对象。

  3. 删除第三方 vSphere CSI 驱动程序 CSIDriver 对象。

    ~ $ oc delete CSIDriver csi.vsphere.vmware.com
    csidriver.storage.k8s.io "csi.vsphere.vmware.com" deleted

从OpenShift Container Platform集群中移除第三方vSphere CSI驱动程序后,Red Hat的vSphere CSI驱动程序操作符将自动恢复安装,并且任何可能阻止升级到OpenShift Container Platform 4.11或更高版本的条件都将自动移除。如果您有现有的vSphere CSI PV对象,其生命周期现在将由Red Hat的vSphere CSI驱动程序操作符管理。

vSphere持久性磁盘加密

您可以在运行在vSphere之上的OpenShift Container Platform上加密虚拟机(VM)和动态配置的持久卷(PV)。

OpenShift Container Platform不支持RWX加密的PV。您无法从使用加密存储策略的存储类中请求RWX PV。

您必须先加密VM,然后才能加密PV,您可以在安装期间或之后进行此操作。

有关加密VM的信息,请参见

加密VM后,您可以配置一个支持使用vSphere容器存储接口(CSI)驱动程序进行动态加密卷配置的存储类。这可以通过以下两种方式之一实现:

  • 数据存储URL:这种方法不够灵活,并且强制您使用单个数据存储。它也不支持拓扑感知配置。

  • 基于标签的放置:加密配置的卷,并使用基于标签的放置来定位特定的数据存储。

使用数据存储URL

步骤

要使用数据存储URL进行加密

  1. 找出数据存储中支持加密的默认存储策略的名称。

    这与用于加密VM的策略相同。

  2. 创建一个使用此存储策略的存储类

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
     name: encryption
    provisioner: csi.vsphere.vmware.com
    parameters:
     storagePolicyName: <storage-policy-name> (1)
     datastoreurl: "ds:///vmfs/volumes/vsan:522e875627d-b090c96b526bb79c/"
    1 数据存储中支持加密的默认存储策略名称

使用基于标签的放置

步骤

要使用基于标签的放置进行加密

  1. 在vCenter中,创建一个类别来标记将提供给此存储类的存储区。此外,请确保为创建的类别选择**StoragePod(数据存储集群)**、**数据存储**和**文件夹**作为可关联的实体。

  2. 在vCenter中,创建一个使用前面创建的类别的标签。

  3. 将前面创建的标签分配给将提供给存储类的每个数据存储。确保数据存储与参与OpenShift Container Platform集群的主机共享。

  4. 在vCenter中,从主菜单单击**策略和配置文件**。

  5. 在**策略和配置文件**页面上的导航窗格中,单击**VM存储策略**。

  6. 单击**创建**。

  7. 为存储策略键入名称。

  8. 选择**启用基于主机的规则**和**启用基于标签的放置规则**。

  9. 在**下一步**选项卡中

    1. 选择**加密**和**默认加密属性**。

    2. 选择前面创建的标签类别,并选择选定的标签。验证策略是否正在选择匹配的数据存储。

  10. 创建存储策略。

  11. 创建一个使用存储策略的存储类

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
     name:  csi-encrypted
    provisioner: csi.vsphere.vmware.com
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    parameters:
     storagePolicyName: <storage-policy-name> (1)
    1 为加密创建的存储策略的名称

vSphere CSI对多个vCenter的支持

跨多个vSphere vCenter集群部署OpenShift Container Platform,而无需共享存储即可实现高可用性,这非常有用。OpenShift Container Platform v4.17及更高版本支持此功能。

多个vCenter只能在**安装期间**配置。安装后**无法**配置多个vCenter。

支持的vCenter集群最大数量为三个。

vSphere CSI对多个vCenter的支持仅为技术预览功能。技术预览功能不受Red Hat生产服务级别协议(SLA)的支持,并且可能功能不完整。Red Hat不建议在生产环境中使用它们。这些功能可让您提前试用即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关Red Hat技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围

在安装期间配置多个vCenter

要在安装期间配置多个vCenter

  • 在安装期间指定多个vSphere集群。有关信息,请参见“vSphere的安装配置参数”。

vSphere CSI拓扑概述

OpenShift Container Platform提供在不同区域和区域上为vSphere部署OpenShift Container Platform的功能,这允许您跨多个计算集群和数据中心进行部署,从而有助于避免单点故障。

这是通过在vCenter中定义区域和区域类别,然后通过为这些区域和区域类别创建标签将这些类别分配给不同的故障域(例如计算集群)来实现的。创建适当的类别并将标签分配给vCenter对象后,您可以创建其他machineset,这些machineset创建负责在这些故障域中调度pod的虚拟机(VM)。

以下示例定义了具有一个区域和两个区域的两个故障域

表1. 具有一个区域和两个区域的vSphere存储拓扑
计算集群 故障域 描述

计算集群:ocp1,数据中心:Atlanta

openshift-region:us-east-1(标签),openshift-zone:us-east-1a(标签)

这定义了us-east-1区域中具有us-east-1a区域的故障域。

计算机集群:ocp2,数据中心:Atlanta

openshift-region:us-east-1(标签),openshift-zone:us-east-1b(标签)

这定义了名为us-east-1b的同一区域内的另一个故障域。

vSphere CSI拓扑要求

建议您遵循以下vSphere CSI拓扑准则

  • 强烈建议您将拓扑标签添加到数据中心和计算集群,而**不要**添加到主机。

    vsphere-problem-detector如果在数据中心或计算集群级别未定义openshift-regionopenshift-zone标签,则会提供警报,并且每个拓扑标签(openshift-regionopenshift-zone)在层次结构中只能出现一次。

    忽略此建议只会导致CSI驱动程序发出日志警告,并且层次结构中较低级别的重复标签(例如主机)将被忽略;VMware认为这是无效的配置,因此为避免问题,您不应使用它。

  • 在感知拓扑的环境中,卷配置请求尝试在对给定拓扑段下所有主机都可访问的数据存储中创建卷。这包括那些未运行 Kubernetes 节点虚拟机的主机。例如,如果 vSphere 容器存储插件驱动程序收到一个在zone-a(应用于数据中心dc-1)配置卷的请求,则dc-1下的所有主机都必须能够访问为卷配置选择的数据存储。这些主机包括直接位于dc-1下的主机,以及dc-1内集群中的主机。

  • 有关其他建议,您应该阅读 VMware 的部署拓扑的指南和最佳实践部分。

安装期间创建 vSphere 存储拓扑

步骤

  • 在安装期间指定拓扑。请参阅“为 VMware vCenter 配置区域和区域”部分。

无需任何其他操作,OpenShift Container Platform 创建的默认存储类是感知拓扑的,应该允许在不同的故障域中配置卷。

安装后创建 vSphere 存储拓扑

步骤

  1. 在 VMware vCenter vSphere 客户端 GUI 中,定义合适的区域和区域类别和标签。

    虽然 vSphere 允许您创建任何任意名称的类别,但 OpenShift Container Platform 强烈建议使用openshift-regionopenshift-zone名称来定义拓扑类别。

    有关 vSphere 类别和标签的更多信息,请参阅 VMware vSphere 文档。

  2. 在 OpenShift Container Platform 中,创建故障域。请参阅“在 vSphere 上为您的集群指定多个区域和区域”部分。

  3. 创建一个标签以分配给跨故障域的数据存储

    当 OpenShift Container Platform 跨越多个故障域时,数据存储可能不会跨这些故障域共享,这就是感知拓扑的持久卷 (PV) 配置非常有用的地方。

    1. 在 vCenter 中,创建一个用于标记数据存储的类别。例如,openshift-zonal-datastore-cat。您可以使用任何其他类别名称,前提是该类别唯一用于标记参与 OpenShift Container Platform 集群的数据存储。此外,请确保选择“StoragePod”、“Datastore”和“Folder”作为可关联实体。

    2. 在 vCenter 中,创建一个使用先前创建的类别的标签。此示例使用标签名称openshift-zonal-datastore

    3. 将先前创建的标签(在此示例中为openshift-zonal-datastore)分配给故障域中将被考虑用于动态配置的每个数据存储。

      您可以为数据存储类别和标签使用任何您喜欢的名称。此示例中使用的名称仅作为建议提供。请确保您定义的标签和类别仅唯一标识与 OpenShift Container Platform 集群中的所有主机共享的数据存储。

  4. 根据需要,创建一个存储策略,以针对每个故障域中基于标签的数据存储。

    1. 在vCenter中,从主菜单单击**策略和配置文件**。

    2. 在**策略和配置文件**页面上的导航窗格中,单击**VM存储策略**。

    3. 单击**创建**。

    4. 为存储策略键入名称。

    5. 对于规则,选择“标签放置”规则并选择针对所需数据存储的标签和类别(在此示例中为openshift-zonal-datastore标签)。

      数据存储列在存储兼容性表中。

  5. 创建一个使用新的区域存储策略的新存储类。

    1. 点击存储 > 存储类

    2. 存储类页面上,点击创建存储类

    3. 名称中键入新存储类的名称。

    4. 配置程序下,选择csi.vsphere.vmware.com

    5. 附加参数下,对于 StoragePolicyName 参数,将设置为前面创建的新区域存储策略的名称。

    6. 点击创建

      示例输出
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: zoned-sc (1)
      provisioner: csi.vsphere.vmware.com
      parameters:
        StoragePolicyName: zoned-storage-policy (2)
      reclaimPolicy: Delete
      allowVolumeExpansion: true
      volumeBindingMode: WaitForFirstConsumer
      1 新的感知拓扑存储类名称。
      2 指定区域存储策略。

      您也可以通过编辑前面的 YAML 文件并运行命令oc create -f $FILE来创建存储类。

在没有基础架构拓扑的情况下创建 vSphere 存储拓扑

OpenShift Container Platform 建议使用基础架构对象在感知拓扑的设置中指定故障域。同时在基础架构对象中指定故障域并在ClusterCSIDriver对象中指定拓扑类别是不受支持的操作。

步骤

  1. 在 VMware vCenter vSphere 客户端 GUI 中,定义合适的区域和区域类别和标签。

    虽然 vSphere 允许您创建任何任意名称的类别,但 OpenShift Container Platform 强烈建议使用openshift-regionopenshift-zone名称来定义拓扑。

    有关 vSphere 类别和标签的更多信息,请参阅 VMware vSphere 文档。

  2. 要允许容器存储接口 (CSI) 驱动程序检测此拓扑,请编辑clusterCSIDriver对象 YAML 文件的driverConfig部分。

    • 指定您之前创建的openshift-zoneopenshift-region类别。

    • driverType设置为vSphere

      ~ $ oc edit clustercsidriver csi.vsphere.vmware.com -o yaml
      示例输出
      apiVersion: operator.openshift.io/v1
      kind: ClusterCSIDriver
      metadata:
        name: csi.vsphere.vmware.com
      spec:
        logLevel: Normal
        managementState: Managed
        observedConfig: null
        operatorLogLevel: Normal
        unsupportedConfigOverrides: null
        driverConfig:
          driverType: vSphere (1)
            vSphere:
              topologyCategories: (2)
              - openshift-zone
              - openshift-region
      1 确保driverType设置为vSphere
      2 之前在 vCenter 中创建的openshift-zoneopenshift-region类别。
  3. 通过运行以下命令验证CSINode对象是否具有拓扑键。

    ~ $ oc get csinode
    示例输出
    NAME DRIVERS AGE
    co8-4s88d-infra-2m5vd 1 27m
    co8-4s88d-master-0 1 70m
    co8-4s88d-master-1 1 70m
    co8-4s88d-master-2 1 70m
    co8-4s88d-worker-j2hmg 1 47m
    co8-4s88d-worker-mbb46 1 47m
    co8-4s88d-worker-zlk7d 1 47m
    ~ $ oc get csinode co8-4s88d-worker-j2hmg -o yaml
    示例输出
    ...
    spec:
      drivers:
      - allocatable:
          count: 59
      name: csi-vsphere.vmware.com
      nodeID: co8-4s88d-worker-j2hmg
      topologyKeys: (1)
      - topology.csi.vmware.com/openshift-zone
      - topology.csi.vmware.com/openshift-region
    1 来自 vSphere openshift-zoneopenshift-region类别的拓扑键。

    CSINode对象可能需要一些时间才能接收更新的拓扑信息。更新驱动程序后,CSINode对象应包含拓扑键。

  4. 创建一个标签以分配给跨故障域的数据存储

    当 OpenShift Container Platform 跨越多个故障域时,数据存储可能不会跨这些故障域共享,这就是感知拓扑的持久卷 (PV) 配置非常有用的地方。

    1. 在 vCenter 中,创建一个用于标记数据存储的类别。例如,openshift-zonal-datastore-cat。您可以使用任何其他类别名称,前提是该类别唯一用于标记参与 OpenShift Container Platform 集群的数据存储。此外,请确保选择“StoragePod”、“Datastore”和“Folder”作为可关联实体。

    2. 在 vCenter 中,创建一个使用先前创建的类别的标签。此示例使用标签名称openshift-zonal-datastore

    3. 将先前创建的标签(在此示例中为openshift-zonal-datastore)分配给故障域中将被考虑用于动态配置的每个数据存储。

      您可以为类别和标签使用任何您喜欢的名称。此示例中使用的名称仅作为建议提供。请确保您定义的标签和类别仅唯一标识与 OpenShift Container Platform 集群中的所有主机共享的数据存储。

  5. 创建一个存储策略,以针对每个故障域中基于标签的数据存储。

    1. 在vCenter中,从主菜单单击**策略和配置文件**。

    2. 在**策略和配置文件**页面上的导航窗格中,单击**VM存储策略**。

    3. 单击**创建**。

    4. 为存储策略键入名称。

    5. 对于规则,选择“标签放置”规则并选择针对所需数据存储的标签和类别(在此示例中为openshift-zonal-datastore标签)。

      数据存储列在存储兼容性表中。

  6. 创建一个使用新的区域存储策略的新存储类。

    1. 点击存储 > 存储类

    2. 存储类页面上,点击创建存储类

    3. 名称中键入新存储类的名称。

    4. 配置程序下,选择csi.vsphere.vmware.com

    5. 附加参数下,对于 StoragePolicyName 参数,将设置为前面创建的新区域存储策略的名称。

    6. 点击创建

      示例输出
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: zoned-sc (1)
      provisioner: csi.vsphere.vmware.com
      parameters:
        StoragePolicyName: zoned-storage-policy (2)
      reclaimPolicy: Delete
      allowVolumeExpansion: true
      volumeBindingMode: WaitForFirstConsumer
      1 新的感知拓扑存储类名称。
      2 指定区域存储策略。

      您也可以通过编辑前面的 YAML 文件并运行命令oc create -f $FILE来创建存储类。

结果

从感知拓扑的存储类创建持久卷声明 (PVC) 和 PV 确实是区域性的,应该根据 Pod 的调度方式使用各自区域中的数据存储。

~ $ oc get pv <pv-name> -o yaml
示例输出
...
nodeAffinity:
  required:
    nodeSelectorTerms:
    - matchExpressions:
      - key: topology.csi.vmware.com/openshift-zone (1)
        operator: In
        values:
        - <openshift-zone>
      -key: topology.csi.vmware.com/openshift-region (1)
        operator: In
        values:
        - <openshift-region>
...
peristentVolumeclaimPolicy: Delete
storageClassName: <zoned-storage-class-name> (2)
volumeMode: Filesystem
...
1 PV 具有区域键。
2 PV 使用区域存储类。

更改 vSphere 的快照最大数量

vSphere 容器存储接口 (CSI) 中每个卷的默认最大快照数量为 3。您可以将每个卷的最大数量更改为最多 32 个。

但是,请注意,增加快照最大值会涉及性能权衡,因此为了获得更好的性能,每个卷只使用 2 到 3 个快照。

有关更多 VMware 快照性能建议,请参阅其他资源

先决条件
  • 具有管理员权限的集群访问权限。

步骤
  1. 通过运行以下命令检查当前的配置映射。

    $ oc -n openshift-cluster-csi-drivers get cm/vsphere-csi-config -o yaml
    示例输出
    apiVersion: v1
    data:
      cloud.conf: |+
        # Labels with topology values are added dynamically via operator
        [Global]
        cluster-id = vsphere-01-cwv8p
    
        [VirtualCenter "vcenter.openshift.com"]
        insecure-flag           = true
        datacenters             = DEVQEdatacenter
        migration-datastore-url = ds:///vmfs/volumes/vsan:527320283a8c3163-2faa6dc5949a3a28/
    
    kind: ConfigMap
    metadata:
      creationTimestamp: "2024-03-06T09:46:40Z"
      name: vsphere-csi-config
      namespace: openshift-cluster-csi-drivers
      resourceVersion: "126687"

    在此示例中,未配置全局最大快照数量,因此应用默认值 3。

  2. 通过运行以下命令更改快照限制

    • 设置全局快照限制

      $ oc patch clustercsidriver/csi.vsphere.vmware.com --type=merge -p '{"spec":{"driverConfig":{"vSphere":{"globalMaxSnapshotsPerBlockVolume": 10}}}}'
      clustercsidriver.operator.openshift.io/csi.vsphere.vmware.com patched

      在这个例子中,全局限制被更改为 10(globalMaxSnapshotsPerBlockVolume 设置为 10)。

    • 设置虚拟卷 (Virtual Volume) 快照限制

      此参数仅设置虚拟卷数据存储的限制。如果设置了虚拟卷最大快照限制,则会覆盖全局限制;如果没有设置,则默认为全局限制。

      $ oc patch clustercsidriver/csi.vsphere.vmware.com --type=merge -p '{"spec":{"driverConfig":{"vSphere":{"granularMaxSnapshotsPerBlockVolumeInVVOL": 5}}}}'
      clustercsidriver.operator.openshift.io/csi.vsphere.vmware.com patched

      在这个例子中,虚拟卷限制被更改为 5(granularMaxSnapshotsPerBlockVolumeInVVOL 设置为 5)。

    • 设置vSAN 快照限制

      此参数仅设置 vSAN 数据存储的限制。如果设置了 vSAN 最大快照限制,则会覆盖全局限制;如果没有设置,则默认为全局限制。在 vSAN ESA 设置下,您可以设置最大值为 32。

      $ oc patch clustercsidriver/csi.vsphere.vmware.com --type=merge -p '{"spec":{"driverConfig":{"vSphere":{"granularMaxSnapshotsPerBlockVolumeInVSAN": 7}}}}'
      clustercsidriver.operator.openshift.io/csi.vsphere.vmware.com patched

      在这个例子中,vSAN 限制被更改为 7(granularMaxSnapshotsPerBlockVolumeInVSAN 设置为 7)。

验证
  • 通过运行以下命令验证您所做的任何更改是否已反映在配置映射中

    $ oc -n openshift-cluster-csi-drivers get cm/vsphere-csi-config -o yaml
    示例输出
    apiVersion: v1
    data:
      cloud.conf: |+
        # Labels with topology values are added dynamically via operator
        [Global]
        cluster-id = vsphere-01-cwv8p
    
        [VirtualCenter "vcenter.openshift.com"]
        insecure-flag           = true
        datacenters             = DEVQEdatacenter
        migration-datastore-url = ds:///vmfs/volumes/vsan:527320283a8c3163-2faa6dc5949a3a28/
    
        [Snapshot]
        global-max-snapshots-per-block-volume = 10 (1)
    
    kind: ConfigMap
    metadata:
      creationTimestamp: "2024-03-06T09:46:40Z"
      name: vsphere-csi-config
      namespace: openshift-cluster-csi-drivers
      resourceVersion: "127118"
      uid: f6968303-81d8-4048-99c1-d8211363d0fa
    1 global-max-snapshots-per-block-volume 现在设置为 10。

禁用和启用 vSphere 上的存储

集群管理员可能希望将 VMware vSphere 容器存储接口 (CSI) 驱动程序作为第 2 天操作禁用,以便 vSphere CSI 驱动程序不会与您的 vSphere 设置交互。

在 vSphere 上禁用和启用存储只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关Red Hat技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围

在 vSphere 上禁用和启用存储的后果

下表描述了在 vSphere 上禁用和启用存储的后果。

表 2. 在 vSphere 上禁用/启用存储的后果
禁用 启用
  • vSphere CSI 驱动程序操作员卸载 CSI 驱动程序。

  • 存储容器编排 (CO) 应处于正常状态。

  • vSphere 问题检测器继续运行,但不发出警报或事件,并且检查频率较低(每 24 小时一次)。

  • 所有现有的持久卷 (PV)、持久卷声明 (PVC) 和 vSphere 存储策略保持不变

    • 新的 Pod 无法使用 vSphere PV。

    • vSphere PV 永久挂载并附加到现有节点的现有 Pod。这些 Pod 在删除后会无限期地保持终止状态。

  • 存储类被删除

* vSphere CSI 驱动程序操作员重新安装 CSI 驱动程序。

* 必要时,vSphere CSI 驱动程序操作员将创建 vSphere 存储策略。

在 vSphere 上禁用和启用存储

在运行此过程之前,请仔细查看前面的“在 vSphere 上禁用和启用存储的后果”表以及对您的环境的潜在影响。

步骤

要禁用或启用 vSphere 上的存储

  1. 单击管理 > 自定义资源定义

  2. 自定义资源定义页面上,在名称下拉框旁边,键入“clustercsidriver”。

  3. 单击CRD ClusterCSIDriver

  4. 单击实例选项卡。

  5. 单击csi.vsphere.vmware.com

  6. 单击YAML 选项卡。

  7. 对于spec.managementState,将值更改为RemovedManaged

    • Removed:存储已禁用

    • Managed:存储已启用

  8. 单击保存

  9. 如果要禁用存储,请确认驱动程序已被删除

    1. 单击工作负载 > Pod

    2. Pod页面上的名称筛选框中,键入“vmware-vsphere-csi-driver”。

      唯一应该显示的项目是操作员。例如:“vmware-vsphere-csi-driver-operator-559b97ffc5-w99fm”