This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.5. 故障排除
您可以查看迁移自定义资源 (CR),并下载日志来排除迁移失败的问题。
如果应用程序在迁移失败时停止,您必须手动回滚,以防止数据崩溃。
如果应用程序在迁移过程中没有停止,则不需要手动回滚,因为原始应用程序仍然在源集群中运行。
2.5.1. 查看迁移自定义资源 (CR) 复制链接链接已复制到粘贴板!
集群应用程序迁移 (CAM) 工具会创建以下 CR 用于迁移:
					
					 MigCluster (配置,CAM 集群): 集群定义
				
					
					 MigStorage (配置,CAM 集群): 存储定义
				
					
					 MigPlan (配置,CAM 集群):迁移计划
				
MigPlan CR 描述了要迁移的源和目标集群、存储库和命名空间。它与 0 个 、1 个 或多个 MigMigration CR 关联。
删除 MigPlan CR 会删除关联的 MigMigration CR。
					
					 BackupStorageLocation (配置,CAM 集群): Velero 备份对象的位置
				
					
					 VolumeSnapshotLocation (配置,CAM 集群): Velero 卷快照的位置
				
					
					 MigMigration(操作,CAM 集群):Migration,在迁移期间创建
				
在每次进行 stage 或迁移数据时都会创建一个 MigMigration CR。每个 MigMigration CR 都会与一个 MigPlan CR 关联。
					
					 Backup(操作,源集群):当运行迁移计划时,MigMigration CR 在每个源集群上创建两个 Velero 备份 CR:
				
- 备份 CR #1 用于Kubernetes 对象
 - 备份 CR #2 用于 PV 数据
 
					
					 Restore (操作,目标集群):在运行迁移计划时,MigMigration CR 在目标集群上创建两个 Velero 恢复 CR:
				
- 恢复 CR #1(使用备份 CR #2)用于 PV 数据
 - 恢复 CR #2(使用备份 CR #1)用于 Kubernetes 对象
 
流程
获取 CR 名称:
oc get <cr> -n openshift-migration
$ oc get <cr> -n openshift-migration1 NAME AGE 88435fe0-c9f8-11e9-85e6-5d593ce65e10 6m42sCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定您要查看的迁移 CR。
 
查看 CR:
oc describe <cr> 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migration
$ oc describe <cr> 88435fe0-c9f8-11e9-85e6-5d593ce65e10 -n openshift-migrationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出结果类似以下示例。
MigMigration 示例
Velero 备份 CR #2 示例(PV 数据)
Velero 恢复 CR #2 示例(Kubernetes 资源)
2.5.2. 下载迁移日志 复制链接链接已复制到粘贴板!
您可以在 CAM web 控制台中下载 Velero 、Restic 和 Migration controller 日志,以排除出现故障的迁移问题。
流程
- 登录到 CAM 控制台。
 - 点击 Plans 查看迁移计划列表。
 - 
							点一个迁移计划的 Options 菜单 
							
							 并选择 Logs。
						 - 点 Download Logs 为所有集群下载迁移控制器、Velero 和 Restic 的日志。
 要下载特定的日志:
指定日志选项:
- Cluster:选择源、目标或 CAM 主机集群。
 - Log source:选择 Velero、Restic 或 Controller。
 Pod source:选择 Pod 名称,例如:
controller-manager-78c469849c-v6wcf此时会显示所选日志。
您可以通过更改您的选择来清除日志选择设置。
- 点 Download Selected 下载所选日志。
 
另外,您可以使用 CLI 访问日志,如下例所示:
oc get pods -n openshift-migration | grep controller oc logs controller-manager-78c469849c-v6wcf -f -n openshift-migration
$ oc get pods -n openshift-migration | grep controller
controller-manager-78c469849c-v6wcf           1/1     Running     0          4h49m
$ oc logs controller-manager-78c469849c-v6wcf -f -n openshift-migration
2.5.3. Restic 超时错误 复制链接链接已复制到粘贴板!
如果因为 Restic 超时造成迁移失败,以下出错信息会出现在 Velero 日志中:
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete" error.file="/go/src/github.com/heptio/velero/pkg/restic/backupper.go:165" error.function="github.com/heptio/velero/pkg/restic.(*backupper).BackupPodVolumes" group=v1
level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete" error.file="/go/src/github.com/heptio/velero/pkg/restic/backupper.go:165" error.function="github.com/heptio/velero/pkg/restic.(*backupper).BackupPodVolumes" group=v1
					restic_timeout 的默认值为一小时。您可以为大型迁移增加这个值,请注意,高的值可能会延迟返回出错信息。
				
流程
- 
							在 OpenShift Container Platform web 控制台中导航至 Operators 
Installed Operators。  - 点 Cluster Application Migration Operator。
 - 在 MigrationController 标签页中点 migration-controller。
 在 YAML 标签页中,更新以下参数值:
spec: restic_timeout: 1h
spec: restic_timeout: 1h1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 有效单元是
h(小时)、m(分钟)和s(秒),例如3h30m15s。 
- 点 Save。
 
2.5.4. 手动回滚迁移 复制链接链接已复制到粘贴板!
如果您的应用程序在迁移失败时停止,您必须手动回滚,以防止 PV 中的数据被破坏。
如果应用程序在迁移过程中没有停止,则不需要进行手动回滚,因为原始应用程序仍然在源集群中运行。
流程
在目标集群中,切换到迁移的项目:
oc project <project>
$ oc project <project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取部署的资源:
oc get all
$ oc get allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除部署的资源以确保应用程序没有在目标集群中运行,并访问 PVC 上的数据:
oc delete <resource_type>
$ oc delete <resource_type>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要停止 DaemonSet 而不删除它,在 YAML 文件中更新
nodeSelector:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定一个没有存在于任何节点上的
nodeSelector值。 
更新每个 PV 的重新声明策略,以便删除不必要的数据。在迁移过程中,绑定 PV 的重新声明策略是
reclaim,以确保应用程序从源集群中被删除时不会丢失数据。您可以在回滚过程中删除这些 PV。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 指定
Recycle或Delete。 
在源集群中,切换到迁移的项目并获取其部署的资源:
oc project <project> oc get all
$ oc project <project> $ oc get allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动每个部署资源的一个或多个副本:
oc scale --replicas=1 <resource_type>/<resource_name>
$ oc scale --replicas=1 <resource_type>/<resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
							如果在操作中被更改了,把 DaemonSet 的 
nodeSelector改回其原始值。 
2.5.5. 为客户支持问题单收集数据 复制链接链接已复制到粘贴板!
					如果创建一个客户支持问题单,您可以使用 openshift-migration-must-gather-rhel8 镜像的 must-gather 工具来收集与您的集群相关的信息,并把这些信息上传到红帽客户门户网站。
				
					openshift-migration-must-gather-rhel8 镜像会收集默认的 must-gather 镜像不收集的日志和 CR 数据。
				
流程
- 
							进入要存储 
must-gather数据的目录。 运行
oc adm must-gather命令:oc adm must-gather --image=registry.redhat.io/rhcam-1-2/openshift-migration-must-gather-rhel8
$ oc adm must-gather --image=registry.redhat.io/rhcam-1-2/openshift-migration-must-gather-rhel8Copy to Clipboard Copied! Toggle word wrap Toggle overflow must-gather工具程序收集集群数据,并把它保存在must-gather.local.<uid>目录中。- 
							从 
must-gather数据中删除验证密钥和其他敏感信息。 创建一个包含
must-gather.local.<uid>目录内容的归档文件:tar cvaf must-gather.tar.gz must-gather.local.<uid>/
$ tar cvaf must-gather.tar.gz must-gather.local.<uid>/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在红帽客户门户中,为您的问题单附上这个压缩文件。
2.5.6. 已知问题 复制链接链接已复制到粘贴板!
这个版本有以下已知问题:
在迁移过程中,CAM 工具会保留以下命名空间注解:
- 
									
openshift.io/sa.scc.mcs - 
									
openshift.io/sa.scc.supplemental-groups openshift.io/sa.scc.uid-range这些注解会保留 UID 范围,确保容器在目标集群中保留其文件系统权限。这可能会存在一定的风险。因为迁移的 UID 可能已存在于目标集群的现有或将来的命名空间中。(BZ#1748440)
- 
									
 - 
							当在 CAM web 控制台中添加 S3 端点时,只有 AWS 支持 
https://。对于其他 S3 供应商,请使用http://。 - 
							如果一个 AWS 存储桶被添加到 CAM web 控制台,然后将其删除,则其状态会保持为 
True,这是因为 MigStorage CR 没有被更新。(BZ#1738564) - 
							如果迁移控制器在目标集群以外的集群中运行,迁移将失败。
EnsureCloudSecretPropagated阶段会跳过,并给出一个日志警告。(BZ#1757571) - 目前,集群范围的资源,包括集群角色绑定和安全上下文约束,还没有由 CAM 处理。如果应用程序需要集群范围的资源,则必须在目标集群中手动创建它们。(BZ#1759804)
 - 创建迁移计划时会显示不正确的源集群存储类。(BZ#1777869)
 - 如果 CAM web 控制台中的一个集群变得无法访问,它会阻止尝试关闭打开的迁移计划。(BZ#1758269)
 - 如果迁移失败,则迁移计划不会为静默的 pod 保留自定义 PV 设置。您必须手动回滚,删除迁移计划,并使用 PV 设置创建新的迁移计划。(BZ#1784899)