$ oc get -n openshift-migration route/migration -o go-template='https://{{ .spec.host }}'
您可以使用容器迁移工具包 (MTC) Web 控制台或从命令行迁移应用程序。
您可以使用分阶段迁移和切换迁移在集群之间迁移应用程序
分阶段迁移将数据从源集群复制到目标集群,而不会停止应用程序。您可以多次运行分阶段迁移以减少切换迁移的持续时间。
切换迁移会停止源集群上的事务并将资源移动到目标集群。
您可以使用状态迁移来迁移应用程序的状态
状态迁移复制选定的持久卷声明 (PVC)。
您可以使用状态迁移在同一集群内迁移命名空间。
大多数集群范围的资源尚不受 MTC 处理。如果您的应用程序需要集群范围的资源,您可能需要在目标集群上手动创建它们。
在迁移过程中,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 代理。
如果您的应用程序使用来自openshift
命名空间的内部镜像,则必须确保目标集群上存在所需的镜像版本。
您可以手动更新镜像流标签以在 OpenShift Container Platform 4.17 集群上使用已弃用的 OpenShift Container Platform 3 镜像。
源集群必须升级到最新的 MTC z 流版本。
所有集群上的 MTC 版本必须相同。
集群可以彼此以及复制库之间进行无限制的网络访问。
如果使用move
复制持久卷,则集群必须能够无限制地访问远程卷。
您必须在 OpenShift Container Platform 3 集群上启用以下端口:
8443
(API 服务器)
443
(路由)
53
(DNS)
您必须在 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 迁移**选项。
直接迁移选项会直接将镜像和文件从源集群复制到目标集群。此选项比将镜像和文件从源集群复制到复制存储库,然后再从复制存储库复制到目标集群快得多。
单击**下一步**。
可选:单击**添加 Hook** 将 Hook 添加到迁移计划。
Hook 运行自定义代码。您可以向单个迁移计划添加最多四个 Hook。每个 Hook 在不同的迁移步骤中运行。
输入要在 Web 控制台中显示的 Hook 名称。
如果 Hook 是 Ansible playbook,请选择**Ansible playbook** 并单击**浏览**上传 playbook 或将 playbook 的内容粘贴到字段中。
可选:如果您不使用默认的 Hook 镜像,请指定 Ansible 运行时镜像。
如果 Hook 不是 Ansible playbook,请选择**自定义容器镜像**并指定镜像名称和路径。
自定义容器镜像可以包含 Ansible playbook。
选择**源集群**或**目标集群**。
输入**服务帐户名称**和**服务帐户命名空间**。
选择 Hook 的迁移步骤
preBackup:在源集群上备份应用程序工作负载之前
postBackup:在源集群上备份应用程序工作负载之后
preRestore:在目标集群上还原应用程序工作负载之前
postRestore:在目标集群上还原应用程序工作负载之后
单击**添加**。
单击**完成**。
迁移计划将显示在**迁移计划**列表中。
您可以使用在容器迁移工具包 (MTC) Web 控制台中创建的迁移计划来迁移应用程序和数据。
在迁移过程中,MTC 将迁移的持久卷 (PV) 的回收策略设置为目标集群上的
|
MTC Web 控制台必须包含以下内容:
处于就绪
状态的源集群
处于就绪
状态的目标集群
复制存储库
有效的迁移计划
登录 MTC Web 控制台并单击**迁移计划**。
单击迁移计划旁边的选项菜单 ,然后在**迁移**下选择以下选项之一:
**分阶段迁移**在不停止应用程序的情况下将数据从源集群复制到目标集群。
**切换迁移**停止源集群上的事务并将资源移动到目标集群。
可选:在**切换迁移**对话框中,您可以清除**在迁移期间停止源集群上的事务**复选框。
**状态迁移**复制选定的持久卷声明 (PVC)。
不要使用状态迁移在集群之间迁移命名空间。请改用分阶段迁移或切换迁移。 |
在**状态迁移**对话框中选择一个或多个 PVC,然后单击**迁移**。
迁移完成后,请在 OpenShift Container Platform Web 控制台中验证应用程序是否已成功迁移。
单击**主页** → **项目**。
单击已迁移的项目以查看其状态。
在**路由**部分,单击**位置**以验证应用程序是否正在运行(如果适用)。
单击**工作负载** → **Pod** 以验证 Pod 是否在已迁移的命名空间中运行。
单击**存储** → **持久卷**以验证已迁移的持久卷是否已正确预配。