10.2. 配置实时迁移
您可以配置实时迁移设置,以确保迁移过程不会给集群造成大量问题。
您可以配置实时迁移策略,将不同的迁移配置应用到虚拟机组。
10.2.1. 配置实时迁移限制和超时
通过更新位于 openshift-cnv
命名空间中的 HyperConverged
自定义资源(CR)为集群配置实时迁移限制和超时。
流程
编辑
HyperConverged
CR 并添加必要的实时迁移参数:$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
配置文件示例
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: liveMigrationConfig: bandwidthPerMigration: 64Mi 1 completionTimeoutPerGiB: 800 2 parallelMigrationsPerCluster: 5 3 parallelOutboundMigrationsPerNode: 2 4 progressTimeout: 150 5
您可以通过删除该键/值对并保存文件来恢复任何 spec.liveMigrationConfig
字段的默认值。例如,删除 progressTimeout: <value>
以恢复默认的 progressTimeout: 150
。
10.2.2. 实时迁移策略
您可以创建实时迁移策略,将不同的迁移配置应用到由 VM 或项目标签定义的虚拟机组。
您可以使用 OpenShift Virtualization web 控制台创建实时迁移策略。
10.2.2.1. 使用命令行创建实时迁移策略
您可以使用命令行创建实时迁移策略。kubevirt 使用任意标签组合将实时迁移策略应用到所选虚拟机 (VM):
-
VM 标签,如
size
,os
, 或gpu
-
项目标签,如
priority
,bandwidth
, 或hpc-workload
要使策略应用到特定的虚拟机组,VM 组的所有标签都必须与策略标签匹配。
如果多个实时迁移策略应用到 VMI,则具有最高匹配标签的策略会优先使用。
如果多个策略满足此条件,则策略按照匹配标签键的字母顺序排序,并且第一个策略具有优先顺序。
流程
编辑要应用实时迁移策略的 VM 对象,并添加对应的 VM 标签。
打开资源的 YAML 配置:
$ oc edit vm <vm_name>
调整配置的
.spec.template.metadata.labels
部分中所需的标签值。例如,出于迁移策略的目的,将 VM 标记为production
VM,添加kubevirt.io/environment: production
行:apiVersion: migrations.kubevirt.io/v1alpha1 kind: VirtualMachine metadata: name: <vm_name> namespace: default labels: app: my-app environment: production spec: template: metadata: labels: kubevirt.io/domain: <vm_name> kubevirt.io/size: large kubevirt.io/environment: production # ...
- 保存并退出配置。
使用对应标签配置
MigrationPolicy
对象。以下示例配置适用于标记为production
的所有虚拟机的策略:apiVersion: migrations.kubevirt.io/v1alpha1 kind: MigrationPolicy metadata: name: <migration_policy> spec: selectors: namespaceSelector: 1 hpc-workloads: "True" xyz-workloads-type: "" virtualMachineInstanceSelector: 2 kubevirt.io/environment: "production"
运行以下命令来创建迁移策略:
$ oc create migrationpolicy -f <migration_policy>.yaml