为 OpenShift 虚拟化设置存储

虚拟私有云 4.17 后来 仅限裸机工作节点 仅限 RHCOS

OpenShift 虚拟化要求存储设备支持 ReadWriteMany (RWX) 访问模式,用于 VM 磁盘、实时迁移和快照。 您可以使用 OpenShift Data Foundation (ODF) 或 File Storage for VPC 作为存储解决方案。

OpenShift 虚拟化服务 包含预配置的存储,无需手动设置。

准备工作

在安装 OpenShift Virtualization 之前,您的群集必须有一个正确配置的存储解决方案。

设置 OpenShift 数据基金会

OpenShift 对于需要高性能、快照和克隆功能的生产工作负载,建议使用 Data Foundation (ODF)。

本节仅适用于手动部署的 OpenShift 虚拟化环境。 如果您使用的是 OpenShift 虚拟化服务, ODF已预先配置好,因此无需执行以下步骤。

使用 ODF 的先决条件

配备本地 NVME 存储器的裸机工作节点
使用后缀名为 d、包含本地 NVME 磁盘的版本。
工作节点要求
ODF 至少需要 3 个工作节点,以实现高可用性和数据冗余。
区域配置
  • OpenShift 虚拟化部署:建议使用单区集群,以尽量减少 VM 工作负载的存储延迟。 虽然多区部署可提供更好的高可用性,但跨区存储复制会影响 VM 的性能。
  • 一般 ODF 部署:建议至少使用 3 个区,以实现高可用性和灾难恢复。

通过控制台安装 ODF

  1. 登录 IBM Cloud 账户并导航至群集。

  2. 单击群组导航中的附加组件

  3. OpenShift Data Foundation 卡上,单击安装

  4. 选择本地存储选项。

    VPC 裸机节点不支持远程块卷附件。

  5. 请从以下探索方法中选择一种:

    自动发现(推荐)
    选择“自动发现”可自动检测和使用裸机工作节点上的可用磁盘。
    手动磁盘规格
    如果要手动指定磁盘,请按照以下步骤操作:
    1. 登录每个工作节点,识别可用磁盘。
      oc debug node/<node-name>
      
    2. 允许主机二进制文件。
      chroot /host
      
    3. 列出可用设备。
      lsblk
      
    4. 查找每个磁盘的 by-ID。
      ls -l /dev/disk/by-id/
      
    5. OSD pod 磁盘 ID 参数中添加磁盘 ID。
  6. 根据需要配置其他参数:

    • 资源简介:根据工作量选择 balancedperformance
    • 加密:如果需要,使用 Hyper Protect Crypto Services 启用加密功能
    • OSD 磁盘数:指定每个工作节点的磁盘数量
  7. 单击安装部署 ODF。

有关 ODF 参数的更多信息,请参阅 OpenShift Data Foundation 参数参考

通过命令行界面(CLI)安装 ODF

  1. 查看可用的附加选项。
    ibmcloud oc cluster addon options --addon openshift-data-foundation --version 4.20.0
    
  2. 启用 OpenShift Data Foundation 附加组件,支持自动磁盘发现和虚拟化。
    ibmcloud oc cluster addon enable openshift-data-foundation \
      -c <cluster-name> \
      --version 4.20.0 \
      --param "odfDeploy=true" \
      --param "osdStorageClassName=localblock" \
      --param "autoDiscoverDevices=true" \
      --param "resourceProfile=performance" \
      --param "setDefaultStorageClassForVirtualization=true"
    
  3. 验证插件是否处于就绪状态。
    oc get storagecluster -n openshift-storage
    
    示例输出:
    NAME                 AGE   PHASE   EXTERNAL   CREATED AT             VERSION
    ocs-storagecluster   53m   Ready              2025-03-10T12:20:52Z   4.20.0
    

验证 ODF 安装

  1. 检查存储群集状态。
    oc get storagecluster -n openshift-storage
    
  2. 验证存储类是否可用。
    oc get storageclass | grep ocs
    
  3. 确认 ODF pod 正在运行。
    oc get pods -n openshift-storage
    

有关部署 ODF 的详细信息,请参阅 在 VPC 群集上部署 OpenShift Data Foundation

选项 2:配置 VPC File Storage

File Storage for VPC 对于非生产工作负载或I/O需求较低的环境而言,这是一种经济实惠的选择。

本节仅适用于手动部署的 OpenShift 虚拟化环境。 如果您使用的是 OpenShift 虚拟化服务,存储已预先配置,因此无需执行以下步骤。

VPC 的先决条件 File Storage

  • 任何受支持的裸机版本
  • VPC 基础架构

步骤 1:将 VPC 的默认 Block Storage 设置为禁用

  1. 编辑 VPC Block CSI 驱动程序的配置映射。
    oc edit cm addon-vpc-block-csi-driver-configmap -n kube-system
    
  2. IsStorageClassDefault 设置为 false
    data:
      IsStorageClassDefault: "false"
    
  3. 保存并退出编辑器。

步骤 2:安装 VPC 文件 CSI 驱动程序

通过控制台

  1. 在集群仪表盘中,点击“附加组件”。

  2. 找到 File Storage for VPC 该插件。

  3. 单击安装

  4. 请等待该附加组件进入 “正常” 状态。

通过 CLI

  1. 启用 VPC File CSI 驱动程序插件。
    ibmcloud ks cluster addon enable vpc-file-csi-driver -c <cluster-name>
    
  2. 请确认该插件已启用。
    ibmcloud ks cluster addon ls -c <cluster-name>
    

步骤 3:设置默认存储类

  1. 列出可用的存储类。

    oc get storageclass | grep vpc-file
    
  2. 请根据您的工作负载选择合适的存储类:

    • ibmc-vpc-file-1000-iops: 适用于中等工作负载(40 GB - 2000 IOPS)
    • ibmc-vpc-file-6000-iops: 适用于更高的工作负载(100 GB - 6000 IOPS)
    • ibmc-vpc-file-metro-1000-iops:适用于多区域部署
  3. 编辑 VPC 文件 CSI 驱动程序的 configmap。

    oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system
    
  4. SET_DEFAULT_STORAGE_CLASS 字段设置为您选择的存储类。

    data:
      SET_DEFAULT_STORAGE_CLASS: "ibmc-vpc-file-metro-1000-iops"
    
  5. 保存并退出编辑器。

  6. 请等待几分钟,以便更改生效。

  7. 验证默认存储类。

    oc get storageclass | grep "(default)"
    

步骤 4:为 VPC 配置存储配置文件 File Storage

安装 OpenShift 虚拟化操作员后,您必须为VPC File Storage 配置存储配置文件,因为容器磁盘导入器(CDI)无法自动识别VPC File Storage 的属性。

此步骤必须在安装 OpenShift 虚拟化操作员后完成。

选项 1:修补所有 VPC 文件存储配置文件(推荐)

使用此实用程序命令修补 VPC File CSI 配置程序的所有存储配置文件:

for sp in $(oc get storageprofile.cdi.kubevirt.io -o json | jq -r '.items[] | select(.status.provisioner == "vpc.file.csi.ibm.io") | .metadata.name'); do
  oc patch storageprofile.cdi.kubevirt.io "$sp" --type=merge -p '{
    "spec": {
      "claimPropertySets": [
        {
          "accessModes": ["ReadWriteMany"],
          "volumeMode": "Filesystem"
        }
      ]
    }
  }'
done

选项 2:手动编辑特定的存储配置文件

  1. 列出可用的存储配置文件。

    oc get storageprofile
    
  2. 编辑默认存储类的存储配置文件。

    oc edit storageprofile <storage-profile-name>
    
  3. spec 下添加以下配置:

    spec:
      claimPropertySets:
      - accessModes:
        - ReadWriteMany
        volumeMode: Filesystem
    
  4. 保存并退出编辑器。

  5. 请确认存储配置文件已更新。

    oc get storageprofile <storage-profile-name> -o yaml
    

有关存储配置文件的更多信息,请参阅 “自定义存储配置文件”

验证 VPC 上的 File Storage 安装

  1. 验证 VPC File CSI 驱动程序 Pod 是否正在运行。
    oc get pods -n kube-system | grep vpc-file
    
  2. 请确认默认存储类设置是否正确。
    oc get storageclass | grep "(default)"
    
  3. 通过创建一个测试 PVC 来测试存储配置。
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test-pvc
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
    
  4. 请确认PVC已固定。
    oc get pvc test-pvc
    
  5. 删除测试用PVC。
    oc delete pvc test-pvc
    

存储器比较

存储解决方案比较
功能 OpenShift Data Foundation VPC File Storage
性能 高(本地磁盘) 中等(网络存储)
快照 支持 不支持
正在克隆 支持 不支持
实时迁移 支持 支持
多区 HA 支持(3 个以上区) 已支持(吞吐量较低)
成本 较高 小写
最适合 生产工作负载 非生产工作负载

存储设置故障排除

ODF 安装失败

如果 ODF 安装失败,请检查以下内容:

  • 验证裸机节点是否有本地 NVME 存储器
  • 确保至少有 3 个工作节点
  • 检查磁盘是否已卸载和格式化
  • 查看 ODF 操作员日志:oc logs -n openshift-storage -l app=ocs-operator

VPC File Storage PVCs 仍处于待处理状态

如果 PVC 处于待处理状态:

  • 请确认 VPC File CSI 驱动程序插件已安装且运行正常
  • 请检查默认存储类是否设置正确
  • 确保存储配置文件已配置为 RWX 访问模式
  • 查看CSI驾驶员日志:oc logs -n kube-system -l app=ibm-vpc-file-csi-controller

存储配置文件未更新

如果存储配置文件未显示正确的配置:

  • 确保已安装 OpenShift 虚拟化操作员
  • 等待存储配置文件自动创建
  • 使用提供的命令手动修补存储配置文件
  • 请确认配置程序名称是否匹配 vpc.file.csi.ibm.io

后续步骤

设置存储后:

  1. 安装 OpenShift 虚拟化操作器
  2. 创建和管理虚拟机
  3. 配置虚拟网络接口(可选)