10.5. 迁移控制器选项
您可以编辑迁移计划限制,启用持久性卷大小,或者在 MigrationController
自定义资源 (CR) 中启用缓存的 Kubernetes 客户端,以用于大型迁移并提高性能。
10.5.1. 为大型迁移增加限制
您可以使用 MTC 为大型迁移增加迁移对象和容器资源的限制。
您必须在生产环境中执行迁移前测试这些更改。
流程
编辑
MigrationController
自定义资源(CR)清单:$ oc edit migrationcontroller -n openshift-migration
更新以下参数:
... mig_controller_limits_cpu: "1" 1 mig_controller_limits_memory: "10Gi" 2 ... mig_controller_requests_cpu: "100m" 3 mig_controller_requests_memory: "350Mi" 4 ... mig_pv_limit: 100 5 mig_pod_limit: 100 6 mig_namespace_limit: 10 7 ...
创建使用更新的参数验证更改的迁移计划。
如果您的迁移计划超过
MigrationController
CR 限制,则 MTC 控制台在保存迁移计划时会显示警告信息。
10.5.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}}' \ 1 --type='merge' -n openshift-migration
- 1
- 将值设为
false
可禁用 PV 大小调整。
可选:更新
pv_resizing_threshold
参数以增加阈值:$ oc patch migrationcontroller migration-controller -p '{"spec":{"pv_resizing_threshold":41}}' \ 1 --type='merge' -n openshift-migration
- 1
- 默认值为
3
。
超过阈值时,
MigPlan
CR 状态中会显示以下状态信息:status: conditions: ... - category: Warn durable: true lastTransitionTime: "2021-06-17T08:57:01Z" message: 'Capacity of the following volumes will be automatically adjusted to avoid disk capacity issues in the target cluster: [pvc-b800eb7b-cf3b-11eb-a3f7-0eae3e0555f3]' reason: Done status: "False" type: PvCapacityAdjustmentRequired
注意对于 AWS gp2 存储,因为 gp2 计算卷用量和大小的方式,这个信息不会出现,除非
pv_resizing_threshold
为 42% 或更高。(BZ#1973148)
10.5.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}]'
可选:运行以下命令来增加
MigrationController
CR 内存限值:$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_limits_memory", "value": <10Gi>}]'
可选:运行以下命令来增加
MigrationController
CR 内存请求:$ oc -n openshift-migration patch migrationcontroller migration-controller --type=json --patch \ '[{ "op": "replace", "path": "/spec/mig_controller_requests_memory", "value": <350Mi>}]'