使用 VPC 创建虚拟机 File Storage

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

使用 File Storage for VPC 为在 OpenShift Virtualization 上运行的虚拟机配置持久存储。

本主题介绍如何验证环境、创建使用 VPC File Storage 的虚拟机并验证虚拟机是否成功启动。

准备工作

在使用 VPC File Storage 创建虚拟机之前,请完成以下任务:

  1. 使用 Red Hat CoreOS (RHCOS) 创建带有裸机工作节点的 VPC 集群。 有关详细信息,请参阅 创建 VPC 群集
  2. 查看规划 OpenShift 虚拟化部署 中的规划指南。
  3. 按照 为 OpenShift 虚拟化设置存储 中的描述配置 VPC File Storage。
  4. 安装 OpenShift 虚拟化操作器 中所述,安装 OpenShift 虚拟化操作器。
  5. 安装 virtctl CLI。 有关详细信息,请参阅 OpenShift 虚拟化 CLI 工具入门

验证环境

在创建虚拟机之前,请确认群集已准备就绪。

  1. 确认已部署 OpenShift 虚拟化组件。

    oc get hyperconverged -n openshift-cnv
    oc get pods -n openshift-cnv
    

    在 HyperConverged 输出中查找 PHASEDeployed。 在 pod 输出中,验证虚拟化 pod 是否显示 RunningCompleted 状态,以及它们是否停留在 PendingCrashLoopBackOffError

  2. 确认已安装 VPC 文件 CSI 驱动程序插件。

    ibmcloud ks cluster addon ls -c CLUSTER_NAME | grep vpc-file-csi-driver
    

    在输出中查找 vpc-file-csi-driver 附加组件,并验证其健康状态是否为 normal 或状态是否显示附加组件已就绪。

  3. 验证 VPC File Storage 类是否可用。

    oc get storageclass | grep vpc-file
    

    查找存储类别,如 ibmc-vpc-file-1000-iopsibmc-vpc-file-6000-iops。 注意要在后面步骤中使用的存储类名称。

  4. 确认所选 VPC File Storage 类的存储配置文件已配置为 ReadWriteMany 访问模式和 Filesystem 卷模式。

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

    在输出结果中,查找 spec 下的 claimPropertySets。 验证 accessModes 是否包括 ReadWriteManyvolumeMode 是否设置为 Filesystem

    claimPropertySets:
    - accessModes:
      - ReadWriteMany
      volumeMode: Filesystem
    
  5. 验证所选存储类别是否可以提供持久卷要求。

    cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: vpc-file-test-pvc
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      storageClassName: <storage-class-name>
    EOF
    
  6. 确认已绑定测试持久卷要求。

    oc get pvc vpc-file-test-pvc
    

    在输出中,查找 STATUS 列,验证持久卷申请是否显示 Bound。 如果索赔仍在 Pending 中,则存储类别或存储配置文件的配置不正确。

  7. 如果索赔未绑定,请查看持久卷索赔详情。

    oc describe pvc vpc-file-test-pvc
    
  8. 删除测试持久卷要求。

    oc delete pvc vpc-file-test-pvc
    

从网络控制台创建虚拟机

使用 OpenShift 网络控制台创建虚拟机,将磁盘存储在 VPC File Storage 上。

  1. 登录群集的 OpenShift 网络控制台。
  2. 在导航菜单中,单击虚拟化 >。VirtualMachines.
  3. 单击创建并选择模板,如果要手动定义虚拟机,则选择从 YAML
  4. 请输入虚拟机的名称。
  5. 选择您要创建虚拟机的项目。
  6. 在存储部分,选择 VPC File Storage 类,如 ibmc-vpc-file-1000-iopsibmc-vpc-file-6000-iops
  7. 根据工作负载要求设置磁盘大小。
  8. 查看 CPU 和内存设置,然后根据需要进行更新。
  9. 单击创建 VirtualMachine
  10. 在虚拟机详细信息页面中,查看磁盘网络接口配置选项卡,以确认虚拟机是按照预期设置创建的。

创建虚拟机后,控制台会创建相关的持久卷要求和数据卷资源。

使用 CLI 创建虚拟机

如果要从可重复使用的清单创建虚拟机,请使用 CLI。

  1. 如果还没有命名空间,请为虚拟机工作负载创建一个命名空间。

    oc create namespace vm-project
    
  2. 创建引用 VPC File Storage 类的虚拟机清单。

    cat <<EOF | oc apply -f -
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: rhel9-vm
      namespace: vm-project
    spec:
      running: false
      template:
        metadata:
          labels:
            kubevirt.io/domain: rhel9-vm
        spec:
          domain:
            cpu:
              cores: 2
            devices:
              disks:
              - disk:
                  bus: virtio
                name: rootdisk
              - disk:
                  bus: virtio
                name: cloudinitdisk
            resources:
              requests:
                memory: 4Gi
          volumes:
          - dataVolume:
              name: rhel9-vm-rootdisk
            name: rootdisk
          - cloudInitNoCloud:
              userData: |
                #cloud-config
                user: cloud-user
                password: changeme
                chpasswd: { expire: false }
            name: cloudinitdisk
      dataVolumeTemplates:
      - metadata:
          name: rhel9-vm-rootdisk
        spec:
          pvc:
            accessModes:
            - ReadWriteMany
            resources:
              requests:
                storage: 40Gi
            storageClassName: <storage-class-name>
            volumeMode: Filesystem
          source:
            blank: {}
    EOF
    
  3. 验证是否创建了虚拟机和数据卷资源。

    oc get vm -n vm-project
    oc get dv -n vm-project
    oc get pvc -n vm-project
    

    在输出中,验证是否列出了虚拟机 rhel9-vm、是否存在数据卷 rhel9-vm-rootdisk 以及是否创建了持久卷要求 rhel9-vm-rootdisk。 如果持久卷申请尚未 Bound,请等待供应完成后再继续。

  4. 如果数据卷尚未准备就绪,请查看数据卷详细信息。

    oc describe dv rhel9-vm-rootdisk -n vm-project
    oc describe pvc rhel9-vm-rootdisk -n vm-project
    
  5. 启动虚拟机。

    virtctl start rhel9-vm -n vm-project
    
  6. 验证虚拟机实例是否正在运行。

    oc get vmi -n vm-project
    

    在输出中查找虚拟机实例名称,并验证其阶段为 Running。 如果未列出虚拟机实例,请查看虚拟机状态。

    oc get vm rhel9-vm -n vm-project -o yaml
    

验证虚拟机

创建虚拟机后,验证存储和计算资源是否按预期运行。

  1. 确认已绑定持久卷要求。

    oc get pvc -n vm-project
    

    在输出中,查找持久卷要求 rhel9-vm-rootdisk,并验证 STATUS 列是否显示 Bound

  2. 确认数据卷导入或调配已成功完成。

    oc get dv -n vm-project
    

    在输出中,验证数据卷是否显示成功阶段,如 SucceededReady,具体取决于您的环境。 如果数据卷尚未准备就绪,请查看数据卷和持久卷申请事件。

    oc describe dv rhel9-vm-rootdisk -n vm-project
    oc describe pvc rhel9-vm-rootdisk -n vm-project
    
  3. 确认虚拟机实例正在运行。

    oc get vmi -n vm-project
    
  4. 查看虚拟机实例详细信息,以确认节点位置、接口和附加卷。

    oc describe vmi rhel9-vm -n vm-project
    
  5. 如果配置了云启动凭据,请连接到虚拟机控制台。

    virtctl console rhel9-vm -n vm-project
    
  6. 如果实例未启动,请查看虚拟机详细信息。

    oc describe vm rhel9-vm -n vm-project
    oc describe vmi rhel9-vm -n vm-project
    

了解局限性和注意事项

在对虚拟机使用 VPC File Storage 时,请查看以下注意事项:

VPC File Storage 的性能
VPC File Storage 是一种网络附加存储选项。 它通常最适合开发、测试和低 I/O 工作负载。
快照和克隆
快照和克隆支持与 OpenShift Data Foundation 不同。 在将 VPC File Storage 作为生产工作负载的标准配置之前,请检查您的存储要求。
实时迁移
如果正确配置了存储配置文件,且工作负载符合 OpenShift 虚拟化要求,则支持实时迁移。
存储配置文件配置
您必须为 VPC 文件 CSI 配置器配置存储配置文件,以便 CDI 可以正确使用存储类。

故障诊断

如果虚拟机无法启动或磁盘未正确调配,请查看以下主题:

后续步骤

使用 VPC File Storage 创建虚拟机后:

  1. 管理虚拟化服务群集中的虚拟机
  2. 配置虚拟网络接口
  3. 查看 Red Hat OpenShift 虚拟化文档