11.6. 迁移控制器选项
您可以编辑迁移计划限制,启用持久性卷大小,或者在 MigrationController
自定义资源 (CR) 中启用缓存的 Kubernetes 客户端,以用于大型迁移并提高性能。
11.6.1. 为大型迁移增加限制 复制链接链接已复制到粘贴板!
您可以使用 MTC 为大型迁移增加迁移对象和容器资源的限制。
您必须在生产环境中执行迁移前测试这些更改。
流程
编辑
MigrationController
自定义资源(CR)清单:oc edit migrationcontroller -n openshift-migration
$ oc edit migrationcontroller -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新以下参数:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建使用更新的参数验证更改的迁移计划。
如果您的迁移计划超过
MigrationController
CR 限制,则 MTC 控制台在保存迁移计划时会显示警告信息。
11.6.2. 为直接卷迁移启用持久性卷大小 复制链接链接已复制到粘贴板!
您可以启用持久性卷(PV)调整直接卷迁移的大小,以避免在目标集群中耗尽磁盘空间。
当 PV 的磁盘用量达到配置级别时,MigrationController
自定义资源(CR)会将持久性卷声明(PVC)的请求存储容量与其实际置备的容量进行比较。然后,它会计算目标集群所需的空间。
pv_resizing_threshold
参数决定何时使用 PV 调整大小。默认阈值是 3%
。这意味着,当 PV 的磁盘用量超过 97%
时,PV 会调整大小。您可以提高这个阈值,以便 PV 调整大小在较低的磁盘用量级别上发生。
PVC 容量根据以下标准计算:
-
如果 PVC 请求的存储容量(
spec.resources.requests.storage
)不等于实际置备的容量(status.capacity.storage
),则会使用较大的值。 - 如果 PV 通过 PVC 置备,然后更改以便其 PV 和 PVC 容量不再匹配,则会使用较大的值。
先决条件
-
PVC 必须附加到一个或多个正在运行的 pod,以便
MigrationController
CR 可以执行命令。
流程
- 登录主机集群。
通过修补
MigrationController
CR 来启用 PV 调整大小:oc patch migrationcontroller migration-controller -p '{"spec":{"enable_dvm_pv_resizing":true}}' \ --type='merge' -n openshift-migration
$ oc patch migrationcontroller migration-controller -p '{"spec":{"enable_dvm_pv_resizing":true}}' \
1 --type='merge' -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将值设为
false
可禁用 PV 大小调整。
可选:更新
pv_resizing_threshold
参数以增加阈值:oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \ --type='merge' -n openshift-migration
$ oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \
1 --type='merge' -n openshift-migration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 默认值为
3
。
超过阈值时,
MigPlan
CR 状态中会显示以下状态信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于 AWS gp2 存储,因为 gp2 计算卷用量和大小的方式,这个信息不会出现,除非
pv_resizing_threshold
为 42% 或更高。(BZ#1973148)
11.6.3. 启用缓存的 Kubernetes 客户端 复制链接链接已复制到粘贴板!
您可以在 MigrationController
自定义资源(CR)中启用缓存的 Kubernetes 客户端,以便在迁移过程中提高性能。在位于不同区域的集群之间迁移时,或存在显著的网络延迟时,会显示最大的性能优势。
但是,委派的任务(例如,用于直接卷迁移的 Rsync 备份或 Velero 备份和恢复)并不会显著提高通过缓存的客户端的性能。
缓存的客户端需要额外的内存,因为 MigrationController
CR 会缓存与 MigCluster
CR 交互所需的所有 API 资源。通常发送到 API 服务器的请求会被定向到缓存。缓存会监视 API 服务器是否有更新。
如果启用了缓存的客户端后发生 OOMKilled
错误,您可以增加 MigrationController
CR 的内存限值和请求。
流程
运行以下命令启用缓存的客户端:
oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_enable_cache", "value": true}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_enable_cache", "value": true}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:运行以下命令来增加
MigrationController
CR 内存限值:oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:运行以下命令来增加
MigrationController
CR 内存请求:oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'
$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow