第 6 章 创建虚拟机


6.1. 从实例类型创建虚拟机

您可以使用实例类型简化虚拟机(VM)创建,无论您使用 Red Hat OpenShift Service on AWS web 控制台或 CLI 创建虚拟机。

注意

Red Hat OpenShift Service on AWS 集群支持从 OpenShift Virtualization 4.15 及更高版本中的实例类型创建虚拟机。在 OpenShift Virtualization 4.14 中,从实例类型创建虚拟机是一项技术预览功能,在 Red Hat OpenShift Service on AWS 集群中不被支持。

6.1.1. 关于实例类型

实例类型是一种可重复使用的对象,您可以定义应用到新虚拟机的资源和特征。您可以定义自定义实例类型,或使用安装 OpenShift Virtualization 时包括的各种类型。

要创建新实例类型,您必须首先手动创建清单,也可以使用 virtctl CLI 工具创建清单。然后,您可以通过将清单应用到集群来创建实例类型对象。

OpenShift Virtualization 为配置实例类型提供两个 CRD:

  • 一个命名空间对象: VirtualMachineInstancetype
  • 集群范围的对象: VirtualMachineClusterInstancetype

这些对象使用相同的 VirtualMachineInstancetypeSpec

6.1.1.1. 所需属性

配置实例类型时,您必须定义 cpumemory 属性。其他属性是可选的。

注意

从实例类型创建虚拟机时,您无法覆盖实例类型中定义的任何参数。

因为实例类型需要定义的 CPU 和内存属性,所以 OpenShift Virtualization 始终会在从实例类型创建虚拟机时拒绝这些资源的额外请求。

您可以手动创建实例类型清单。例如:

带有必填字段的 YAML 文件示例

apiVersion: instancetype.kubevirt.io/v1beta1
kind: VirtualMachineInstancetype
metadata:
  name: example-instancetype
spec:
  cpu:
    guest: 1 1
  memory:
    guest: 128Mi 2

1
必需。指定要分配给客户机的 vCPU 数量。
2
必需。指定要分配给客户机的内存量。

您可以使用 virtctl CLI 实用程序创建实例类型清单。例如:

带有必填字段的 virtctl 命令示例

$ virtctl create instancetype --cpu 2 --memory 256Mi

其中:

--cpu <value>
指定要分配给客户机的 vCPU 数量。必需。
--memory <value>
指定要分配给客户机的内存量。必需。
提示

您可以运行以下命令来立即从新清单中创建对象:

$ virtctl create instancetype --cpu 2 --memory 256Mi | oc apply -f -

6.1.1.2. 可选属性

除了所需的 cpumemory 属性外,您还可以在 VirtualMachineInstancetypeSpec 中包含以下可选属性:

annotations
列出应用到虚拟机的注解。
GPU
列出用于 passthrough 的 vGPU。
hostDevices
列出用于透传的主机设备。
ioThreadsPolicy
定义用于管理专用磁盘访问的 IO 线程策略。
launchSecurity
配置安全加密虚拟化(SEV)。
nodeSelector
指定节点选择器来控制调度此虚拟机的节点。
schedulerName
定义用于此虚拟机的自定义调度程序,而不是默认的调度程序。

6.1.2. 预定义的实例类型

OpenShift Virtualization 包括一组预定义的实例类型,称为 common-instancetypes。一些特定于特定工作负载,另一些则与工作负载无关。

这些实例类型资源根据其系列、版本和大小命名。大小值遵循 . delimiter,范围从 nano8xlarge

表 6.1. common-instancetypes 系列比较
使用案例系列特性vCPU 到内存比率资源示例

网络

N

  • Hugepages
  • 专用 CPU
  • 隔离的仿真程序线程
  • 需要能够运行 DPDK 工作负载的节点

1:2

n1.medium
  • 4 个 vCPU
  • 4GiB 内存

过量使用

O

  • 过量使用的内存
  • Burstable CPU 性能

1:4

o1.small
  • 1 vCPU
  • 2GiB 内存

Compute Exclusive

CX

  • Hugepages
  • 专用 CPU
  • 隔离的仿真程序线程
  • vNUMA

1:2

cx1.2xlarge
  • 8 个 vCPU
  • 16GiB 内存

常规目的

U

  • Burstable CPU 性能

1:4

u1.medium
  • 1 vCPU
  • 4GiB 内存

内存集成

M

  • Hugepages
  • Burstable CPU 性能

1:8

m1.large
  • 2 个 vCPU
  • 16GiB 内存

6.1.3. 指定实例类型或首选项

您可以指定实例类型、首选项或两者来定义一组工作负载大小和运行时特征,以便在多个虚拟机间重复使用。

6.1.3.1. 使用标志来指定实例类型和首选项

使用标志指定实例类型和首选项。

先决条件

  • 集群中必须具有实例类型、首选或两者。

流程

  1. 要在创建虚拟机时指定实例类型,请使用 --instancetype 标志。要指定首选项,请使用 --preference 标志。以下示例包括这两个标记:

    $ virtctl create vm --instancetype <my_instancetype> --preference <my_preference>
  2. 可选: 要指定命名空间的实例类型或首选项,请在传递给 --instancetype--preference 的标志命令的值中包含 kind。命名空间实例类型或首选项必须位于您要在其中创建虚拟机的同一命名空间中。以下示例包括命名空间实例类型和命名空间首选项的标记:

    $ virtctl create vm --instancetype virtualmachineinstancetype/<my_instancetype> --preference virtualmachinepreference/<my_preference>

6.1.3.2. 推断实例类型或首选项

推断实例类型、首选项或两者都默认启用,并且 inferFromVolume 属性的 inferFromVolumeFailure 策略被设置为 Ignore。当引导卷的推断时,会忽略错误,并使用实例类型创建虚拟机并取消设置虚拟机。

但是,当应用标记时,inferFromVolumeFailure 策略默认为 Reject。当从引导卷推断出时,错误会导致创建该虚拟机的拒绝。

您可以使用 --infer-instancetype--infer-preference 标志来推断哪个实例类型、首选项或两者用来定义虚拟机的工作负载大小和运行时特征。

先决条件

  • 已安装 virtctl 工具。

流程

  • 要从用于引导虚拟机的卷中显式推断实例类型,请使用 --infer-instancetype 标志。要显式推断首选项,请使用 --infer-preference 标志。以下命令包括两个标记:

    $ virtctl create vm --volume-import type:pvc,src:my-ns/my-pvc --infer-instancetype --infer-preference
  • 要从用于启动虚拟机的卷以外的卷推断实例类型或首选项,请使用 --infer-instancetype-from--infer-preference-from 标志来指定任何虚拟机卷。在以下示例中,虚拟机从 volume-a 引导,但从 volume-b 中推断 instancetype 和 preference。

    $ virtctl create vm \
      --volume-import=type:pvc,src:my-ns/my-pvc-a,name:volume-a \
      --volume-import=type:pvc,src:my-ns/my-pvc-b,name:volume-b \
      --infer-instancetype-from volume-b \
      --infer-preference-from volume-b

6.1.3.3. 设置 inferFromVolume 标签

在 PVC、数据源或数据卷中使用以下标签来指示在尝试从卷引导时使用哪些实例类型、首选或两者。

  • 集群范围的实例类型:instancetype.kubevirt.io/default-instancetype 标签。
  • namespaced 实例类型: instancetype.kubevirt.io/default-instancetype-kind 标签。如果留空,则默认为 VirtualMachineClusterInstancetype 标签。
  • 集群范围的首选项:instancetype.kubevirt.io/default-preference 标签。
  • namespaced preference: instancetype.kubevirt.io/default-preference-kind 标签。如果留空,则默认为 VirtualMachineClusterPreference 标签。

先决条件

  • 集群中必须具有实例类型、首选或两者。

流程

  • 要将标签应用到数据源,请使用 oc label。以下命令应用指向集群范围实例类型的标签:

    $ oc label DataSource foo instancetype.kubevirt.io/default-instancetype=<my_instancetype>

6.1.4. 使用 Web 控制台从实例类型创建虚拟机

您可以使用 Red Hat OpenShift Service on AWS web 控制台从实例类型创建虚拟机(VM)。您还可以通过复制现有快照或克隆虚拟机,来使用 Web 控制台创建虚拟机。

您可以从可用可引导卷列表创建虚拟机。您可以在列表中添加基于 Linux 或 Windows 的卷。

流程

  1. 在 Web 控制台中,导航到 Virtualization Catalog

    InstanceTypes 选项卡默认为打开。

  2. 选择以下选项之一:

    • 从列表中选择合适的可引导卷。如果列表已被截断,请单击 Show all 按钮来显示整个列表。

      注意

      可引导的卷表仅列出 openshift-virtualization-os-images 命名空间中具有 instancetype.kubevirt.io/default-preference 标签的卷。

      • 可选:点星号图标将可引导卷指定为热门卷。不足的可引导卷首先出现在卷列表中。
    • Add volume 上传新卷,或使用现有的持久性卷声明(PVC)、卷快照或 containerDisk 卷。点击 Save

      集群中不可用的操作系统的徽标显示在列表的底部。您可以点击 Add volume 链接为所需的操作系统添加卷。

      另外,还有 创建 Windows 引导源 快速启动的链接。如果您将鼠标悬停在 Select volume 旁边的问号图标上来从行中引导,则同一链接会出现在弹出窗口中。

      安装环境或环境断开连接后,从中引导的卷列表为空。在这种情况下,会显示三个操作系统徽标:Windows、RHEL 和 Linux。您可以点击 Add volume 按钮添加新卷来满足您的要求。

  3. 点实例类型标题,然后选择适合您的工作负载的资源大小。
  4. 可选:选择虚拟机详情,包括虚拟机的名称,适用于您要从其引导的卷:

    • 对于基于 Linux 的卷,请按照以下步骤配置 SSH:

      1. 如果您还没有在项目中添加公共 SSH 密钥,点 VirtualMachine details 部分中的 Authorized SSH key 旁边的编辑图标。
      2. 选择以下选项之一:

        • 使用现有 :从 secrets 列表中选择一个 secret。
        • 添加新: 遵循以下步骤:

          1. 浏览到公共 SSH 密钥文件,或在 key 字段中粘贴文件。
          2. 输入 secret 名称。
          3. 可选: 选择 Automatically apply this key to any new VirtualMachine you create in this project
      3. 点击 Save
    • 对于 Windows 卷,请按照以下步骤配置 sysprep 选项:

      • 如果您还没有为 Windows 卷添加 sysprep 选项,请按照以下步骤执行:

        1. VirtualMachine 详情 部分中的 Sysprep 的编辑图标。
        2. 添加 Autoattend.xml 回答文件。
        3. 添加 Unattend.xml 回答文件。
        4. 点击 Save
      • 如果要将现有的 sysprep 选项用于 Windows 卷,请按照以下步骤执行:

        1. 单击 Attach existing sysprep
        2. 输入现有 sysprep Unattend.xml 回答文件的名称。
        3. 点击 Save
  5. 可选: 如果要创建 Windows 虚拟机,您可以挂载 Windows 驱动程序磁盘:

    1. Customize VirtualMachine 按钮。
    2. VirtualMachine 详情页中,点 Storage
    3. 选择 Mount Windows 驱动程序磁盘 复选框。
  6. 可选:点 View YAML & CLI 查看 YAML 文件。点 CLI 查看 CLI 命令。您还可以下载或复制 YAML 文件内容或 CLI 命令。
  7. Create VirtualMachine

创建虚拟机后,您可以在 VirtualMachine 详情页中监控状态。

6.1.5. 更改虚拟机的实例类型

您可以使用 web 控制台更改与正在运行的虚拟机(VM)关联的实例类型。更改会立即生效。

先决条件

  • 已使用实例类型创建虚拟机。

流程

  1. 在 Red Hat OpenShift Service on AWS web 控制台中,点 Virtualization VirtualMachines
  2. 选择一个虚拟机以打开 VirtualMachine 详情页。
  3. Configuration 选项卡。
  4. Details 标签页中,点实例类型文本打开 Edit Instancetype 对话框。例如,单击 1 个 CPU | 2 GiB 内存
  5. 使用 SeriesSize 列表编辑实例类型。

    1. Series 列表中选择一个项目,以显示该系列的相关大小。例如,选择 General Purpose
    2. Size 列表中选择 VM 的新实例类型。例如,选择 medium: 1 个 CPU, 4Gi Memory,它位于 General Purpose 系列中。
  6. 点击 Save

验证

  1. YAML 标签。
  2. Reload
  3. 查看 VM YAML,以确认实例类型已更改。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.