8.5. 编辑虚拟机


您可以使用 Red Hat OpenShift Service on AWS web 控制台更新虚拟机(VM)配置。您可以更新 YAML 文件或 VirtualMachine 详情页。

您还可以使用命令行编辑虚拟机。

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

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

先决条件

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

流程

  1. 在 Red Hat OpenShift Service on AWS web 控制台中,点 Virtualization VirtualMachines
  2. 选择一个虚拟机以打开 VirtualMachine 详情页。
  3. Configuration 选项卡。
  4. Details 标签页中,点实例类型文本打开 Edit Instancetype 对话框。例如,点 1 CPU | 2 GiB Memory
  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,以确认实例类型已更改。

8.5.2. 热插虚拟机内存

您可以使用 Red Hat OpenShift Service on AWS web 控制台添加或删除分配给虚拟机(VM)的内存量。

流程

  1. 进入到 Virtualization VirtualMachines
  2. 选择所需的虚拟机以打开 VirtualMachine 详情页面
  3. Configuration 选项卡中,点 Edit CPU|Memory
  4. 输入所需内存量,然后单击保存

    注意

    您可以热插到默认虚拟机初始内存量的三倍。超过这个限制需要重启。

    系统会立即应用这些更改。如果虚拟机是可迁移的,则会触发实时迁移。如果没有,或者无法更新更改,则会为虚拟机添加一个 RestartRequired 条件。

注意

虚拟机的内存热插拔需要 virtio-mem 驱动程序的客户机操作系统支持。这个支持取决于客户端操作系统中包含的和启用的驱动程序,而不是在特定的上游内核版本中。

支持的客户端操作系统:

  • RHEL 9.4 及更新的版本
  • RHEL 8.10 及更新的版本(默认情况下禁用hot-unplug)
  • 其他 Linux 客户机需要内核版本 5.16 或更高版本,以及 virtio-mem 内核模块
  • Windows 客户机需要 virtio-mem 驱动程序版本 100.95.104.26200 或更高版本

8.5.3. 在虚拟机上热插 CPU

您可以使用 Red Hat OpenShift Service on AWS web 控制台增加或减少分配给虚拟机的 CPU 套接字数量,而无需重启虚拟机。

流程

  1. 进入到 Virtualization VirtualMachines
  2. 选择所需的虚拟机以打开 VirtualMachine 详情页面
  3. Configuration 选项卡中,点 Edit CPU|Memory
  4. 选择 vCPU 单选按钮。
  5. 输入所需的 vCPU 插槽数量,然后点 Save

    注意

    您可以热插到虚拟机的默认 vCPU 插槽初始数的三倍。超过这个限制需要重启。

    如果虚拟机是可迁移的,则会触发实时迁移。如果没有,或者无法更新更改,则会为虚拟机添加一个 RestartRequired 条件。

注意

如果虚拟机启用了 spec.template.spec.domain.devices.networkInterfaceMultiQueue 字段,且 CPU 热插,则会出现以下行为:

  • 在 CPU 热插保留其原始队列计数前附加的现有网络接口,即使您添加更多虚拟 CPU (vCPU)。底层虚拟化技术导致这种预期行为。
  • 要更新现有接口的队列数以匹配新的 vCPU 配置,您可以重启虚拟机。只有在更新提高性能时才需要重启。
  • 在 CPU 热插拔后,您热插的新 VirtIO 网络接口会自动接收与更新的 vCPU 配置匹配的队列数。

8.5.4. 使用 CLI 编辑虚拟机

您可以使用命令行编辑虚拟机 (VM)。

先决条件

  • 已安装 oc CLI。

流程

  1. 运行以下命令来获取虚拟机配置:

    $ oc edit vm <vm_name>
    Copy to Clipboard Toggle word wrap
  2. 编辑 YAML 配置。
  3. 如果要编辑正在运行的虚拟机,您需要执行以下任一操作:

    • 重启虚拟机。
    • 运行以下命令使新配置生效:

      $ oc apply vm <vm_name> -n <namespace>
      Copy to Clipboard Toggle word wrap

8.5.5. 将磁盘添加到虚拟机

您可以使用 Red Hat OpenShift Service on AWS web 控制台将虚拟磁盘添加到虚拟机(VM)。

流程

  1. 在 web 控制台中进入到 Virtualization VirtualMachines
  2. 选择一个虚拟机以打开 VirtualMachine 详情页。
  3. Disks 选项卡上,点 Add disk
  4. 指定 SourceNameSizeTypeInterfaceStorage Class

    1. 可选:如果您使用空磁盘源并在创建数据卷时要求最大写入性能,则可以启用预分配。如果要这样做,可选中启用预分配复选框。
    2. 可选:您可以清除 Apply optimized StorageProfile 设置,以更改虚拟磁盘的卷模式访问模式。如果没有指定这些参数,系统将使用 kubevirt-storage-class-defaults 配置映射中的默认值。
  5. 点击 Add
注意

如果虚拟机正在运行,您必须重启虚拟机以应用更改。

8.5.5.1. 存储字段

Expand
字段描述

空白(创建 PVC)

创建一个空磁盘。

通过 URL 导入(创建 PVC)

通过 URL(HTTP 或 HTTPS 端点)导入内容。

使用现有的 PVC

使用集群中已可用的 PVC。

克隆现有的 PVC(创建 PVC)

选择集群中可用的现有 PVC 并克隆它。

通过 Registry 导入(创建 PVC)

通过容器 registry 导入内容。

容器(临时)

从集群可以访问的 registry 中的容器上传内容。容器磁盘应只用于只读文件系统,如 CD-ROM 或临时虚拟机。

Name

磁盘的名称。名称可包含小写字母 (a-z)、数字 (0-9)、连字符 (-) 和句点 (.),最多 253 个字符。第一个和最后一个字符必须为字母数字。名称不得包含大写字母、空格或特殊字符。

Size

GiB 中磁盘的大小。

类型

磁盘类型。示例:磁盘或光盘

Interface

磁盘设备的类型。支持的接口包括 virtIOSATASCSI

Storage class

用于创建磁盘的存储类。

高级存储设置

以下高级存储设置是可选的,对 Blank, Import via URL, and Clone existing PVC 磁盘可用。

如果没有指定这些参数,系统将使用默认存储配置集值。

Expand
参数选项参数描述

卷模式

Filesystem

在基于文件系统的卷中保存虚拟磁盘。

Block

直接将虚拟磁盘存储在块卷中。只有底层存储支持时才使用 Block

访问模式

ReadWriteOnce (RWO)

卷可以被一个节点以读写模式挂载。

ReadWriteMany (RWX)

卷可以被多个节点以读写模式挂载。

注意

实时迁移需要此模式。

8.5.6. 在虚拟机上挂载 Windows 驱动程序磁盘

您可以使用 Red Hat OpenShift Service on AWS web 控制台将 Windows 驱动程序磁盘挂载到虚拟机(VM)上。

流程

  1. 进入到 Virtualization VirtualMachines
  2. 选择所需的虚拟机以打开 VirtualMachine 详情页面
  3. Configuration 选项卡中,单击 Storage
  4. 选择 Mount Windows 驱动程序磁盘 复选框。

    Windows 驱动程序磁盘显示在挂载的磁盘列表中。

您可以使用 Red Hat OpenShift Service on AWS web 控制台向虚拟机添加 secret、配置映射或服务帐户。

这些资源作为磁盘添加到虚拟机中。您可在挂载任何其他磁盘时挂载 secret、配置映射或服务帐户。

如果虚拟机正在运行,则更改在重启虚拟机之后才会生效。新添加的资源在页面的顶部被标记为待处理更改。

先决条件

  • 要添加的 secret、配置映射或服务帐户必须与目标虚拟机位于同一命名空间中。

流程

  1. 在侧边菜单中点 Virtualization VirtualMachines
  2. 选择虚拟机以打开 VirtualMachine 详情页面。
  3. Configuration Environment
  4. Add Config Map、Secret 或 Service Account
  5. Select a resource,从列表中选择一个资源。为所选资源自动生成带有六个字符的序列号。
  6. 可选:点 Reload 将环境恢复到其上次保存的状态。
  7. Save

验证

  1. VirtualMachine 详情页面中,点 Configuration Disks 并验证资源是否在磁盘列表中显示。
  2. Actions Restart 重启虚拟机。

现在,您可以在挂载任何其他磁盘时挂载 secret、配置映射或服务帐户。

8.5.8. 更新多个虚拟机

您可以使用命令行界面(CLI)同时更新多个虚拟机(VM)。

先决条件

  • 已安装 oc CLI。
  • 您可以访问 Red Hat OpenShift Service on AWS 集群,并具有 cluster-admin 权限。

流程

  1. 运行以下命令来创建特权服务帐户:

    $ oc adm new-project kubevirt-api-lifecycle-automation
    Copy to Clipboard Toggle word wrap
    $ oc create sa kubevirt-api-lifecycle-automation -n kubevirt-api-lifecycle-automation
    Copy to Clipboard Toggle word wrap
    $ oc create clusterrolebinding kubevirt-api-lifecycle-automation --clusterrole=cluster-admin --serviceaccount=kubevirt-api-lifecycle-automation:kubevirt-api-lifecycle-automation
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,确定 kubevirt-api-lifecycle 镜像的 pull URL:

    $ oc get csv -n openshift-cnv -l=operators.coreos.com/kubevirt-hyperconverged.openshift-cnv -ojson | jq '.items[0].spec.relatedImages[] | select(.name|test(".*kubevirt-api-lifecycle-automation.*")) | .image'
    Copy to Clipboard Toggle word wrap
  3. 通过创建作业对象来部署 Kubevirt-Api-Lifecycle-Automation,如下例所示:

    apiVersion: batch/v1
    kind: Job
    metadata:
     name: kubevirt-api-lifecycle-automation
     namespace: kubevirt-api-lifecycle-automation
    spec:
     template:
      spec:
       containers:
       - name: kubevirt-api-lifecycle-automation
         image: quay.io/openshift-virtualization/kubevirt-api-lifecycle-automation:v4.19 
    1
    
         imagePullPolicy: Always
         env:
         - name: MACHINE_TYPE_GLOB 
    2
    
           value: smth-glob9.10.0
         - name: RESTART_REQUIRED 
    3
    
           value: "true"
         - name: NAMESPACE 
    4
    
           value: "default"
         - name: LABEL_SELECTOR 
    5
    
           value: my-vm
         securityContext:
          allowPrivilegeEscalation: false
          capabilities:
           drop:
           - ALL
          privileged: false
          runAsNonRoot: true
          seccompProfile:
           type: RuntimeDefault
       restartPolicy: Never
       serviceAccountName: kubevirt-api-lifecycle-automation
    Copy to Clipboard Toggle word wrap
1
将镜像值替换为镜像的 pull URL。
2
MACHINE_TYPE_GLOB 值替换为您自己的模式。此模式用于检测需要升级的已弃用的机器类型。
3
如果 RESTART_REQUIRED emvironment 变量设为 true,则虚拟机将在更新机器类型后重新启动。如果您不想重启虚拟机,请将值设为 false
4
命名空间 环境值指示要在其中查找虚拟机的命名空间。将参数留空,使作业可以接管集群中的所有命名空间。
5
您可以使用 LABEL_SELECTOR 环境变量选择接收作业操作的虚拟机。如果您希望作业超过集群中的所有虚拟机,请不要为该参数分配值。

8.5.8.1. 在虚拟机上执行批量操作

您可以使用 web 控制台中的 VirtualMachines 列表视图同时对多个虚拟机(VM)执行批量操作。这可让您以最少的手动工作来高效地管理一组虚拟机。

可用的批量操作

  • 标记 VMs - Add、edit 或 remove 标签,这些标签在所选虚拟机之间应用。
  • 删除虚拟机 - 选择要删除的多个虚拟机。确认对话框显示为删除选择的虚拟机数量。
  • 将虚拟机移动到文件夹 - 将选定的虚拟机移动到文件夹.所有虚拟机都必须属于同一命名空间。

8.5.9. 为快速存储访问配置多个 IOThreads

您可以通过为使用快速存储的虚拟机(VM)配置多个 IOThreads 来提高存储性能,如固态驱动器(SSD)或非易失性内存表达(NVMe)。此配置选项只能通过编辑虚拟机的 YAML 来使用。

注意

只有在启用了 blockMultiQueue 且磁盘总线设为 virtio 时,才支持多个 IOThreads。您必须设置此配置才能使配置正常工作。

流程

  1. 在侧边菜单中点 Virtualization VirtualMachines
  2. 选择虚拟机以打开 VirtualMachine 详情页面。
  3. YAML 选项卡打开虚拟机清单。
  4. 在 YAML 编辑器中,找到 spec.template.spec.domain 部分,并添加或修改以下字段:

    domain:
      ioThreadsPolicy: supplementalPool
      ioThreads:
        supplementalPoolThreadCount: 4
      devices:
        blockMultiQueue: true
        disks:
        - name: datavolume
          disk:
            bus: virtio
    # ...
    Copy to Clipboard Toggle word wrap
  5. Save
重要

VM 运行时无法更改 spec.template.spec.domain 设置。在应用更改前,您必须停止虚拟机,然后重启虚拟机才能使新设置生效。

配置映射、secret 和服务帐户的其他资源
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat