7.2.2. 使用 CLI 从网页上的镜像创建虚拟机


您可以使用命令行从网页中的镜像创建虚拟机 (VM)。

创建虚拟机时,具有镜像的数据卷将导入到持久性存储中。

先决条件

  • 您必须有包含镜像的网页的访问凭证。
  • 已安装 virtctl CLI。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 为虚拟机创建 VirtualMachine 清单,并将它保存为 YAML 文件。例如,要从网页上的镜像创建最小 Red Hat Enterprise Linux (RHEL) 虚拟机,请运行以下命令:

    $ virtctl create vm --name vm-rhel-9 --instancetype u1.small --preference rhel.9 --volume-import type:http,url:https://example.com/rhel9.qcow2,size:10Gi
  2. 查看虚拟机的 VirtualMachine 清单:

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-rhel-9
    spec:
      dataVolumeTemplates:
      - metadata:
          name: imported-volume-6dcpf
        spec:
          source:
            http:
              url: https://example.com/rhel9.qcow2
          storage:
            resources:
              requests:
                storage: 10Gi
      instancetype:
        name: u1.small
      preference:
        name: rhel.9
      runStrategy: Always
      template:
        spec:
          domain:
            devices: {}
            resources: {}
          terminationGracePeriodSeconds: 180
          volumes:
          - dataVolume:
              name: imported-volume-6dcpf
            name: imported-volume-6dcpf
    • metadata.name 定义虚拟机名称。
    • spec.dataVolumeTemplates.metadata.name 定义数据卷名称。
    • spec.dataVolumeTemplates.spec.source.http.url 定义镜像的 URL。
    • spec.dataVolumeTemplates.spec.storage.resources.requests.storage 定义为数据卷请求的存储的大小。
    • spec.instancetype.name 定义用来控制虚拟机资源大小的实例类型。
    • spec.preference.name 定义要使用的首选项。
  3. 运行以下命令来创建虚拟机:

    $ oc create -f <vm_manifest_file>.yaml

    oc create 命令创建数据卷和虚拟机。CDI 控制器创建一个带有正确注解和导入过程的底层 PVC。导入完成后,数据卷状态变为 Succeeded。您可以启动虚拟机。

    数据卷置备在后台进行,因此无需监控进程。

验证

  1. importer pod 从指定的 URL 下载镜像,并将其存储在置备的持久性卷上。查看 importer pod 的状态:

    $ oc get pods
  2. 监控数据卷的状态:

    $ oc get dv <data_volume_name>

    如果置备成功,数据卷阶段为 Succeeded。

    输出示例:

    NAME                    PHASE       PROGRESS   RESTARTS   AGE
    imported-volume-6dcpf   Succeeded   100.0%                18s
  3. 通过访问其串行控制台来验证置备是否已完成,以及虚拟机是否已启动:

    $ virtctl console <vm_name>

    如果虚拟机正在运行且串行控制台可以访问,输出如下所示:

    Successfully connected to vm-rhel-9 console. The escape sequence is ^]
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部