第 11 章 实时迁移


11.1. 关于实时迁移

实时迁移是在不中断虚拟工作负载的情况下,将正在运行的虚拟机 (VM) 移到集群中的另一节点的过程。实时迁移可以在集群升级过程中平稳过渡,或者每当需要排空节点进行维护或配置更改时进行清理。

默认情况下,实时迁移流量使用传输层安全 (TLS) 加密。

11.1.1. 实时迁移要求

实时迁移有以下要求:

  • 集群必须具有 ReadWriteMany (RWX) 访问模式的共享存储。
  • 集群必须有足够的 RAM 和网络带宽。

    注意

    您必须确保集群中有足够的内存请求容量来支持节点排空(这会导致实时迁移)。您可以使用以下计算来确定大约所需的备用内存:

    Product of (Maximum number of nodes that can drain in parallel) and (Highest total VM memory request allocations across nodes)
    Copy to Clipboard Toggle word wrap

    集群中可以并行运行的默认迁移数量为 5。

  • 如果虚拟机使用主机模型 CPU,节点必须支持 CPU。
  • 强烈建议为实时迁移配置专用的 Multus 网络。专用网络可最小化迁移期间租户工作负载网络饱和的影响。

11.1.2. 关于实时迁移权限

在 OpenShift Virtualization 4.19 及更新的版本中,实时迁移操作仅限于明确授予 kubevirt.io:migrate 集群角色的用户。具有此角色的用户可以创建、删除和更新虚拟机(VM)实时迁移请求,这些请求由 VirtualMachineInstanceMigration (VMIM)自定义资源表示。

集群管理员可以将 kubevirt.io:migrate 角色绑定到命名空间或集群级别的可信用户或组。

在 OpenShift Virtualization 4.19 之前,命名空间管理员默认具有实时迁移权限。4.19 版本中更改了此行为,以防止对基础架构关键迁移操作造成意外或恶意中断。

作为集群管理员,您可以在更新前通过创建临时集群角色来保留旧的行为。为用户分配新角色后,请删除临时角色来强制实施更严格的权限。如果您已经更新,您仍然可以通过将 kubevirt.io:migrate 角色转换为 admin 集群角色来恢复到旧行为。

在升级到 OpenShift Virtualization 4.19 之前,您可以创建一个临时集群角色来保留以前的实时迁移权限,直到您准备好使更严格的默认权限生效。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 有集群管理员权限。

流程

  1. 在升级到 OpenShift Virtualization 4.19 之前,请创建一个临时 ClusterRole 对象。例如:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      labels:
        rbac.authorization.k8s.io/aggregate-to-admin=true 
    1
    
      name: kubevirt.io:upgrademigrate
    rules:
    - apiGroups:
      - subresources.kubevirt.io
      resources:
      - virtualmachines/migrate
      verbs:
      - update
    - apiGroups:
      - kubevirt.io
      resources:
      - virtualmachineinstancemigrations
      verbs:
      - get
      - delete
      - create
      - update
      - patch
      - list
      - watch
      - deletecollection
    Copy to Clipboard Toggle word wrap
    1
    在更新 OpenShift Virtualization 前,这个集群角色会被聚合到 admin 角色中。更新过程不会修改它,确保之前的行为被维护。
  2. 运行以下命令,将集群角色清单添加到集群中:

    $ oc apply -f <cluster_role_file_name>.yaml
    Copy to Clipboard Toggle word wrap
  3. 将 OpenShift Virtualization 更新至 4.19 版本。
  4. 运行以下命令,将 kubevirt.io:migrate 集群角色迁移到可信用户或组,将 < namespace> , < first_user> , & lt ;second_user& gt; , 和 您自己的值绑定。

    • 要在命名空间级别绑定角色,请运行以下命令:

      $ oc create -n <namespace> rolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
      Copy to Clipboard Toggle word wrap
    • 要在集群级别绑定角色,请运行以下命令:

      $ oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
      Copy to Clipboard Toggle word wrap
  5. 当您将 kubevirt.io:migrate 角色绑定到所有必要的用户时,运行以下命令删除临时 ClusterRole 对象:

    $ oc delete clusterrole kubevirt.io:upgrademigrate
    Copy to Clipboard Toggle word wrap

    删除临时集群角色后,只有具有 kubevirt.io:migrate 角色的用户才能创建、删除和更新实时迁移请求。

11.1.4. 授予实时迁移权限

授予可信用户或组创建、删除和更新实时迁移实例。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 有集群管理员权限。

流程

  • (可选)要更改默认行为,以便命名空间管理员始终有权创建、删除和更新实时迁移,请运行以下命令将 kubevirt.io:migrate 角色聚合到 admin 集群角色中:

    $ oc label --overwrite clusterrole kubevirt.io:migrate rbac.authorization.k8s.io/aggregate-to-admin=true
    Copy to Clipboard Toggle word wrap
  • 运行以下命令,将 kubevirt.io:migrate 集群角色迁移到可信用户或组,将 < namespace> , < first_user> , & lt ;second_user& gt; , 和 您自己的值绑定。

    • 要在命名空间级别绑定角色,请运行以下命令:

      $ oc create -n <namespace> rolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
      Copy to Clipboard Toggle word wrap
    • 要在集群级别绑定角色,请运行以下命令:

      $ oc create clusterrolebinding kvmigrate --clusterrole=kubevirt.io:migrate --user=<first_user> --user=<second_user> --group=<group_name>
      Copy to Clipboard Toggle word wrap

11.1.5. VM 迁移调整

您可以根据工作负载和迁移场景的类型调整集群范围的实时迁移设置。这可让您控制同时迁移的虚拟机数量、您要用于每个迁移的网络带宽,以及 OpenShift Virtualization 在取消进程前尝试完成迁移的时间。在 HyperConverged 自定义资源(CR) 中配置这些设置。

如果您要同时迁移每个节点的多个虚拟机,请设置 bandwidthPerMigration 限制,以防止大型或忙碌的虚拟机使用大量节点的网络带宽。默认情况下,bandwidthPerMigration 值为 0,这代表没有限制。

运行重度工作负载的大型虚拟机(如数据库处理)具有更高内存脏率,需要更高的带宽才能完成迁移。

注意

在复制后模式启用后,如果初始预复制阶段没有在定义的超时内完成,则会触发。在复制后,虚拟机 CPU 会在源主机上暂停,同时传输最低所需的内存页面。然后,虚拟机 CPU 在目标主机上激活,其余内存页面在运行时传输到目标节点上。这可能会影响传输期间的性能。

后复制模式不应用于关键数据,或与不稳定的网络一起使用。

11.1.6. 常见实时迁移任务

您可以执行以下实时迁移任务:

11.1.7. 其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat