$ oc get -n openshift-migration route/migration -o go-template='https://{{ .spec.host }}'
您可以使用容器迁移工具包 (MTC) Web 控制台或命令行迁移您的应用程序。
大多数集群范围的资源尚不受 MTC 处理。如果您的应用程序需要集群范围的资源,您可能需要在目标集群上手动创建它们。
您可以使用阶段迁移和切换迁移在集群之间迁移应用程序
阶段迁移将数据从源集群复制到目标集群,而无需停止应用程序。您可以多次运行阶段迁移以缩短切换迁移的持续时间。
切换迁移会停止源集群上的事务并将资源移动到目标集群。
您可以使用状态迁移来迁移应用程序的状态
状态迁移复制选定的持久卷声明 (PVC)。
您可以使用状态迁移在同一集群内迁移命名空间。
在迁移期间,MTC 会保留以下命名空间批注
openshift.io/sa.scc.mcs
openshift.io/sa.scc.supplemental-groups
openshift.io/sa.scc.uid-range
这些批注保留 UID 范围,确保容器保留其在目标集群上的文件系统权限。存在迁移的 UID 可能与目标集群上现有或未来命名空间中的 UID 重复的风险。
您必须以所有集群上的具有cluster-admin
权限的用户身份登录。
您必须确保源集群的安全 OpenShift 镜像注册表已公开。
您必须创建指向公开注册表的路由。
如果您的集群使用代理,则必须配置 Stunnel TCP 代理。
源集群必须升级到最新的 MTC z 流版本。
所有集群上的 MTC 版本必须相同。
集群彼此之间以及与复制库之间具有不受限制的网络访问权限。
如果您使用move
复制持久卷,则集群必须对远程卷具有不受限制的网络访问权限。
您必须在 OpenShift Container Platform 4 集群上启用以下端口
6443
(API 服务器)
443
(路由)
53
(DNS)
如果您使用 TLS,则必须在复制库上启用端口443
。
PV 必须有效。
PV 必须绑定到持久卷声明。
如果您使用快照来复制 PV,则需要满足以下附加先决条件:
云提供商必须支持快照。
PV 必须使用相同的云提供商。
PV 必须位于相同的地理区域。
PV 必须具有相同的存储类。
您可以使用 MTC Web 控制台配置集群和复制存储库。然后,您可以创建和运行迁移计划。
您可以在浏览器中启动容器迁移工具包 (MTC) Web 控制台。
MTC Web 控制台必须能够访问 OpenShift Container Platform Web 控制台。
MTC Web 控制台必须能够访问 OAuth 授权服务器。
登录到您已安装 MTC 的 OpenShift Container Platform 集群。
通过输入以下命令获取 MTC Web 控制台 URL:
$ oc get -n openshift-migration route/migration -o go-template='https://{{ .spec.host }}'
输出类似于以下内容:https://migration-openshift-migration.apps.cluster.openshift.com
。
启动浏览器并导航到 MTC Web 控制台。
如果您在安装容器迁移工具包操作符后立即尝试访问 MTC Web 控制台,控制台可能无法加载,因为操作符仍在配置集群。请等待几分钟,然后重试。 |
如果您使用的是自签名 CA 证书,系统会提示您接受源集群 API 服务器的 CA 证书。网页将指导您完成接受其余证书的过程。
使用您的 OpenShift Container Platform **用户名** 和 **密码** 登录。
您可以向容器迁移工具包 (MTC) Web 控制台添加集群。
必须在源集群上配置跨域资源共享。
如果您使用 Azure 快照来复制数据:
您必须指定集群的 Azure 资源组名称。
集群必须位于相同的 Azure 资源组中。
集群必须位于相同的地理位置。
如果您使用直接镜像迁移,则必须向源集群的镜像注册表公开路由。
登录到集群。
获取migration-controller
服务帐户令牌
$ oc create token migration-controller -n openshift-migration
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoibWlnLXRva2VuLWs4dDJyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE1YjFiYWMwLWMxYmYtMTFlOS05Y2NiLTAyOWRmODYwYjMwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptaWc6bWlnIn0.xqeeAINK7UXpdRqAtOj70qhBJPeMwmgLomV9iFxr5RoqUgKchZRG2J2rkqmPm6vr7K-cm7ibD1IBpdQJCcVDuoHYsFgV4mp9vgOfn9osSDp2TGikwNz4Az95e81xnjVUmzh-NjDsEpw71DH92iHV_xt2sTwtzftS49LpPW2LjrV0evtNBP_t_RfskdArt5VSv25eORl7zScqfe1CiMkcVbf2UqACQjo3LbkpfN26HAioO2oH0ECPiRzT0Xyh-KwFutJLS9Xgghyw-LD9kPKcE_xbbJ9Y4Rqajh7WdPYuB0Jd9DPVrslmzK-F6cgHHYoZEv0SvLQi-PO0rpDrcjOEQQ
登录到 MTC Web 控制台。
在 MTC Web 控制台中,单击**集群**。
单击**添加集群**。
填写以下字段:
**集群名称**: 集群名称可以包含小写字母 (a-z
) 和数字 (0-9
)。它不能包含空格或国际字符。
**URL**: 指定 API 服务器 URL,例如,https://<www.example.com>:8443
。
**服务帐户令牌**: 粘贴migration-controller
服务帐户令牌。
**公开到镜像注册表的路由主机**: 如果您使用的是直接镜像迁移,请指定到源集群镜像注册表的公开路由。
要创建路由,请运行以下命令:
对于 OpenShift Container Platform 3:
$ oc create route passthrough --service=docker-registry --port=5000 -n default
对于 OpenShift Container Platform 4:
$ oc create route passthrough --service=image-registry --port=5000 -n openshift-image-registry
**Azure 集群**: 如果您使用 Azure 快照来复制数据,则必须选择此选项。
**Azure 资源组**: 如果选择了**Azure 集群**,则会显示此字段。指定 Azure 资源组。
在 Microsoft Azure 上创建 {OCP} 集群时,会创建一个 Azure 资源组来包含与集群关联的所有资源。在 Azure CLI 中,您可以通过发出以下命令来显示所有资源组:
$ az group list
与 OpenShift Container Platform 集群关联的ResourceGroups
已标记,其中sample-rg-name
是您将提取并提供给 UI 的值。
{
"id": "/subscriptions/...//resourceGroups/sample-rg-name",
"location": "centralus",
"name": "...",
"properties": {
"provisioningState": "Succeeded"
},
"tags": {
"kubernetes.io_cluster.sample-ld57c": "owned",
"openshift_creationDate": "2019-10-25T23:28:57.988208+00:00"
},
"type": "Microsoft.Resources/resourceGroups"
},
此信息也可从Azure 门户的**资源组**边栏中获取。
**需要 SSL 验证**: 可选:选择此选项以验证与集群的安全套接字层 (SSL) 连接。
**CA 捆绑文件**: 如果选择了**需要 SSL 验证**,则会显示此字段。如果您为自签名证书创建了自定义 CA 证书捆绑文件,请单击**浏览**,选择 CA 捆绑文件并上传。
单击**添加集群**。
集群将显示在**集群**列表中。
您可以将对象存储添加为容器迁移工具包 (MTC) Web 控制台的复制存储库。
MTC 支持以下存储提供商:
Amazon Web Services (AWS) S3
多云对象网关 (MCG)
通用 S3 对象存储,例如 Minio 或 Ceph S3
Google Cloud Provider (GCP)
Microsoft Azure Blob
您必须将对象存储配置为复制存储库。
在 MTC Web 控制台中,单击**复制存储库**。
单击**添加存储库**。
选择**存储提供商类型**并填写以下字段:
对于 S3 提供商,包括 AWS 和 MCG,选择**AWS**
**复制存储库名称**: 在 MTC Web 控制台中指定复制存储库名称。
**S3 桶名称**: 指定 S3 桶的名称。
**S3 桶区域**: 指定 S3 桶区域。对于 AWS S3 **必需**。对于某些 S3 提供商**可选**。请查看您的 S3 提供商的产品文档以了解预期的值。
**S3 端点**: 指定 S3 服务的 URL,而不是桶,例如,https://<s3-storage.apps.cluster.com>
。对于通用 S3 提供商**必需**。您必须使用https://
前缀。
**S3 提供商访问密钥**: 为 AWS 指定<AWS_SECRET_ACCESS_KEY>
,为 MCG 和其他 S3 提供商指定 S3 提供商访问密钥。
**S3 提供商密钥访问密钥**: 为 AWS 指定<AWS_ACCESS_KEY_ID>
,为 MCG 和其他 S3 提供商指定 S3 提供商密钥访问密钥。
**需要 SSL 验证**: 如果您使用的是通用 S3 提供商,请清除此复选框。
如果您为自签名证书创建了自定义 CA 证书捆绑包,请单击**浏览**并浏览到 Base64 编码的文件。
GCP:
**复制存储库名称**: 在 MTC Web 控制台中指定复制存储库名称。
**GCP 桶名称**: 指定 GCP 桶的名称。
**GCP 凭据 JSON 块**: 指定credentials-velero
文件中的字符串。
Azure:
**复制存储库名称**: 在 MTC Web 控制台中指定复制存储库名称。
**Azure 资源组**: 指定 Azure Blob 存储的资源组。
**Azure 存储帐户名称**: 指定 Azure Blob 存储帐户名称。
**Azure 凭据 - INI 文件内容**: 指定credentials-velero
文件中的字符串。
单击**添加存储库**并等待连接验证。
单击**关闭**。
新存储库将显示在**复制存储库**列表中。
您可以在容器迁移工具包 (MTC) Web 控制台中创建迁移计划。
您必须以所有集群上的具有cluster-admin
权限的用户身份登录。
必须确保所有集群都安装了相同版本的 MTC。
您必须将集群和复制存储库添加到 MTC Web 控制台中。
如果您要使用移动数据复制方法迁移持久卷 (PV),则源集群和目标集群必须能够不间断地访问远程卷。
如果您要使用直接镜像迁移,则必须指定源集群镜像注册表的公开路由。这可以通过使用 MTC Web 控制台或更新MigCluster
自定义资源清单来完成。
在 MTC Web 控制台中,单击迁移计划。
单击添加迁移计划。
输入计划名称。
迁移计划名称不得超过 253 个小写字母数字字符 (a-z, 0-9
),并且不得包含空格或下划线 (_
)。
选择源集群、目标集群和存储库。
单击下一步。
选择要迁移的项目。
可选:单击项目旁边的编辑图标以更改目标命名空间。
单击下一步。
为每个 PV 选择迁移类型
复制选项会将数据从源集群的 PV 复制到复制存储库,然后在目标集群中使用具有类似特征的新创建的 PV 恢复数据。
移动选项会将远程卷(例如 NFS)从源集群卸载,在指向远程卷的目标集群上创建 PV 资源,然后将远程卷挂载到目标集群。目标集群上运行的应用程序使用与源集群相同的远程卷。
单击下一步。
为每个 PV 选择复制方法
快照复制使用云提供商的快照功能备份和恢复数据。它比文件系统复制快得多。
文件系统复制备份源集群上的文件并在目标集群上恢复它们。
直接卷迁移需要文件系统复制方法。
您可以选择验证复制以验证使用文件系统复制迁移的数据。通过为每个源文件生成校验和并在恢复后检查校验和来验证数据。数据验证会显著降低性能。
选择目标存储类。
如果您选择了文件系统复制,则可以更改目标存储类。
单击下一步。
在迁移选项页面上,如果您为源集群指定了公开的镜像注册表路由,则会选择直接镜像迁移选项。如果您使用文件系统复制迁移数据,则会选择直接 PV 迁移选项。
直接迁移选项会直接将镜像和文件从源集群复制到目标集群。此选项比将镜像和文件从源集群复制到复制存储库,然后再从复制存储库复制到目标集群快得多。
单击下一步。
可选:单击添加钩子将钩子添加到迁移计划。
钩子运行自定义代码。您可以向单个迁移计划添加最多四个钩子。每个钩子在不同的迁移步骤中运行。
输入要在 Web 控制台中显示的钩子名称。
如果钩子是 Ansible playbook,请选择Ansible playbook 并单击浏览上传 playbook 或将 playbook 的内容粘贴到字段中。
可选:如果您不使用默认的钩子镜像,请指定 Ansible 运行时镜像。
如果钩子不是 Ansible playbook,请选择自定义容器镜像并指定镜像名称和路径。
自定义容器镜像可以包含 Ansible playbook。
选择源集群或目标集群。
输入服务帐户名称和服务帐户命名空间。
选择钩子的迁移步骤
preBackup:在源集群上备份应用程序工作负载之前
postBackup:在源集群上备份应用程序工作负载之后
preRestore:在目标集群上恢复应用程序工作负载之前
postRestore:在目标集群上恢复应用程序工作负载之后
单击添加。
单击完成。
迁移计划将显示在迁移计划列表中。
您可以使用在容器迁移工具包 (MTC) Web 控制台中创建的迁移计划来迁移应用程序和数据。
在迁移过程中,MTC 会将迁移的持久卷 (PV) 的回收策略设置为目标集群上的
|
MTC Web 控制台必须包含以下内容:
状态为就绪
的源集群
状态为就绪
的目标集群
复制存储库
有效的迁移计划
登录 MTC Web 控制台并单击迁移计划。
单击迁移计划旁边的选项菜单,然后在迁移下选择以下选项之一:
分阶段迁移在不停止应用程序的情况下将数据从源集群复制到目标集群。
切换迁移停止源集群上的事务并将资源移动到目标集群。
可选:在切换迁移对话框中,您可以清除在迁移期间停止源集群上的事务复选框。
状态迁移复制选定的持久卷声明 (PVC)。
不要使用状态迁移在集群之间迁移命名空间。请改用分阶段迁移或切换迁移。 |
在状态迁移对话框中选择一个或多个 PVC,然后单击迁移。
迁移完成后,请在 OpenShift Container Platform Web 控制台中验证应用程序是否已成功迁移。
单击主页→项目。
单击迁移的项目以查看其状态。
在路由部分,单击位置以验证应用程序是否正常运行(如果适用)。
单击工作负载→Pod以验证 Pod 是否在迁移的命名空间中运行。
单击存储→持久卷以验证迁移的持久卷是否已正确预配。