OpenShift 4 MTC - 从 OpenShift 3 向 OpenShift 4 迁移应用
《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.8环境中验证
演示视频
文章目录
- 准备对象存储
- 配置迁移源 OpenShift 3 的环境
- 部署 Migration Operator
- 部署 file-uploader 测试应用
- 查看集群配置
- 配置迁移目标 OpenShift 4 的环境
- 安装 MTC Operator
- 创建 Migration Controller
- 添加 Replication Repository (MigStorage)
- 添加迁移的 OpenShift 集群
- 添加迁移计划
- 应用迁移和回退
- 执行迁移计划
- 回退迁移
- 参考
准备对象存储
MTC 的 Replication Repository 可以使用以下对象存储:
- Multi-Cloud Object Gateway (MCG)
- Amazon Web Services (AWS) S3
- Google Cloud Provider (GCP)
- Microsoft Azure Generic
- S3 object storage, MinIO 或 Ceph
请参考《OpenShift 4 - 部署运行 MinIO 对象存储》在 OpenShift 4 上部署 MinIO 环境。
配置迁移源 OpenShift 3 的环境
部署 Migration Operator
- 执行命令,根据 2 个 yaml文件创建 Migration Operator。
$ mkdir $HOME/mtc
$ sudo docker cp $(sudo docker create registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.3.1):/operator.yml $HOME/mtc
$ sudo docker cp $(sudo docker create registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.3.1):/controller-3.yml $HOME/mtc
$ oc create -f $HOME/mtc/operator.yml
$ oc create -f $HOME/mtc/controller-3.yml
- 查看部署的 Operator资源
$ oc get pods -n openshift-migration
NAME READY STATUS RESTARTS AGE
migration-operator-77d77fff48-28t9c 1/1 Running 0 1m
restic-b2k9z 1/1 Running 0 31s
restic-c8hwm 1/1 Running 0 31s
restic-gpnjz 1/1 Running 0 31s
restic-nfqwd 1/1 Running 0 31s
velero-585b8ddc7d-ftprk 1/1 Running 0 31s
部署 file-uploader 测试应用
- 在 OpenShift 3 的控制台先进入 “file-uploader” 项目,然后在 Service Catalog 中找到 “PHP”。然后根据下图创建 “file-uploader” 应用。
其中 Git Repository - https://github.com/christianh814/openshift-php-upload-demo
- 进入名为 “file-uploader” 的 Deployment ,然后查看 Configuration 栏目。在下图中修改 Replicas 数量,将其增加到 3 个。
- 然后点击上图下方的 “Add Storage” 链接,在跳转的 “Add Storage” 页面中点击“Create Storage”。
- 在“Create Storage”页面先创建一个名为 “file-uploader-vol-claim” 的 PVC,然后在 Deployment 中按照下图使用这个新建的 PVC。
- 最后通过 Route 访问应用即可。
查看集群配置
- 查到 ServiceAccount 中的 migration-controller 令牌。后面将使用 OCP3-TOKEN 引用这个令牌,并用来访问这个 OpenShift 3 集群。
$ oc sa get-token migration-controller -n openshift-migration
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJvcGVuc2hpZnQtbWlncmF0aW9uIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im1pZ3JhdGlvbi1jb250cm9sbGVyLXRva2VuLTJmNmhrIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZ3JhdGlvbi1jb250cm9sbGVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNmQyNmVjN2UtMWQzYS0xMWViLWI2ZjQtMTYzZjM1MzNlNTFmIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Om9wZW5zaGlmdC1taWdyYXRpb246bWlncmF0aW9uLWNvbnRyb2xsZXIifQ.Nf134JLn9cMmNORxZC8ilJN9W43sj0_tj_B5c3Bf6l-Z4mcdXnjgR1NLH11qqJc7-9H9bgTfm8lza0kQZgEcsNIY47nxPoezkKGoOXVKEpTsaP_inykHRr6iqUuZgKiCu9I0n8st27dG0VYE8bpboPOlO8iITTH7VHbLVnWEKgk-_5CKnSmycsgFoqrfWYSEi9qbnxi2PkrQ3wLhic8RmItvCgpbvr62eV2z5Q82Gxtf9x4-RPLK5_vFtKHvK8vXjs2mw-jihM_LBuxRLbQCI64_F5MRUowFp8zUIaAuqCDtUVAPukJq6dt91tPTXg_YuSZGHV5s_NVeSIb1PDqUWg
- 获得 OpenShift 3 集群的 API 地址,后面将使用 OCP3-API 引用这个 API 地址。
$ oc whoami --show-server
https://master.bdvwt.sandbox725.opentlc.com:443
配置迁移目标 OpenShift 4 的环境
安装 MTC Operator
- 使用缺省配置安装 Migration Toolkit for Containers Operator。注意:缺省会安装到 openshift-migration 项目中。
- 安装好 Operator 后可以在其中看到已经将当前的 OpenShift 集群作为一个 MigCluster 对象。
创建 Migration Controller
- 在 openshift-migration 项目中使用 MTC Operator 提供的缺省配置新建一个 Migration Controller 对象。
- 查看运行在 “openshift-migration” 项目中的 Pod,还可在 “开发者” 视图的 “拓扑” 中可以查看部署资源的状态,或查看 “migration-controller” 的 Resources 栏目中的资源状态。
$ oc get pods -n openshift-migration
NAME READY STATUS RESTARTS AGE
migration-controller-94fdc5cb7-ktpgz 2/2 Running 0 16m
migration-log-reader-5548595dbb-jlplm 2/2 Running 0 16m
migration-operator-56cb9bfdc4-mdfnr 1/1 Running 0 26m
migration-ui-7f8b778fb6-vh4fh 1/1 Running 0 13m
restic-hcdhn 1/1 Running 0 17m
velero-7b7986f4cf-4p45z 1/1 Running 0 17m
- 查看名为 “migration ” 的路由地址,然后用浏览器访问路由地址,可以看到 Migration Toolkit for Containers 的控制台。
$ oc get route migration -n openshift-migration -o jsonpath=https://{.spec.host}
https://migration-openshift-migration.apps.cluster-n8rwq.n8rwq.sandbox1048.opentlc.com
添加 Replication Repository (MigStorage)
- 进入 MTC 控制台的 Replication repositories 菜单,然后点击进入 “Add replication repository” 。
- 在 “Add replication repository” 窗口中按照以下填写配置,最后点击 “Add Repository” 会显示 “Connection successful”。
Storage provider type : S3
Replication repository name:ocp-migration-repository
S3 bucket name:ocp-migration-bucket
S3 endpoint:MINIO服务的路由地址
S3 provider access key:minio
S3 provider secret access key:minio123
- 完成后可以在 OpenShift 控制台的 MTC Operator 中查找创建的 MigStore 对象。
添加迁移的 OpenShift 集群
- 进入 MTC 控制台中的 “Clusters” 菜单,然后点击 “Add cluster”。在 “Add cluster” 窗口提供以下配置:
Cluster name:ocp3
URL:https://OCP3-API
Service account token:OCP3-TOKEN
然后点击 “Add cluster” 按钮,成功后会显示“Connection successful”。
- 完成后 Clusters 中的 “ocp3” 是迁移的源集群,“host” 是迁移的目标集群。
添加迁移计划
进入 MTC 控制台的 Migration plan,然后点击 “Add migration plan”。
在 “Create a migration plan” 窗口的 General 步骤按照下图设置:
Plan name:file-uploader-mig-plan
Source cluster:ocp3
Target cluster:host
Repository:ocp-migration-repository
在 Namespaces 步骤选中 “file-uploader”。
在 Persistent volumes 步骤的 “Migration type” 选择 “Copy”。
在Copy options 步骤的 “Copy method” 选择 “Filesystem copy”,然后在 Target storage class 中选择一个目标集群的 StoreClass。
在 5、6 步骤接受缺省即可完成。
应用迁移和回退
执行迁移计划
- 在 file-uploader-migration-plan 迁移计划的下列菜单中选择 “Migrate”。
- 在弹出的窗口中点击 “Migrate”。
- 进入上图 “Migrations” 列的链接,查看迁移的执行进度,知道全部执行完。
- 在目标 OpenShift 4 集群中确认已经有 file-uploader 项目,并且file-uploader应用已经可以访问,并且已经有前面上传的文件。
- 确认此时在迁移源 OpenShift 3 集群的 file-uploader 应用中的 Pod 数量已经降为 “0”,而迁移目标 OpenShift 4 集群的 file-uploader 应用中的 Pod 数量为 “3。
回退迁移
- 在 file-uploader-migration-plan 迁移计划的下列菜单中选择 “Rollback”。
- 查看执行进入直到完成。
- 确认迁移目标 OpenShift 4 的 file-uploader 应用已经不能访问,而迁移源 OpenShift 3 的 file-uploader 应用已经恢复访问了。
参考
https://redhat-cop.github.io/openshift-migration-best-practices/
https://github.com/konveyor/labs/tree/master/mtc
https://access.redhat.com/documentation/zh-cn/openshift_container_platform/4.9/html-single/migration_toolkit_for_containers/index
https://docs.openshift.com/container-platform/4.9/migrating_from_ocp_3_to_4/about-migrating-from-3-to-4.html
https://developer.ibm.com/tutorials/migrate-kubernetes-cluster-openshift-konveyor-crane/
https://github.com/konveyor/mig-demo-apps
OpenShift 4 MTC - 从 OpenShift 3 向 OpenShift 4 迁移应用相关推荐
- openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程
Centos7中openshift_3.11单节点安装及配置开机自启详解 本次openshift安装使用最简单便捷的单节点安装,适用于本地开发及测试 openshift简介 OpenShift是红帽公 ...
- openshift/origin工作记录(9)——openshift结合jenkins实现持续集成
最近工作为基于jenkins.Openshift实现持续集成. 由于只给了我一周的时间,这里先记录一下V1.0版的实现过程. 集成jenkins 参考<openshift/origin学习记录( ...
- OpenShift / RHEL / DevSecOps 汇总目录
文章目录 OpenShift / RHEL / DevSecOps 汇总目录 OpenShift 入门 OpenShift 安装 免费线上环境 CRC单机环境 MicroShift Online安装 ...
- 在OpenShift平台上验证NVIDIA DGX系统的分布式多节点自动驾驶AI训练
在OpenShift平台上验证NVIDIA DGX系统的分布式多节点自动驾驶AI训练 自动驾驶汽车的深度神经网络(DNN)开发是一项艰巨的工作.本文验证了DGX多节点,多GPU,分布式训练在DXC机器 ...
- Openshift创建Router和Registry
Openshift创建Router和Registry: [root@DockerServer openshift]# oadm policy add-scc-to-user privileged sy ...
- 在AWS中部署OpenShift平台
OpenShift是RedHat出品的PAAS平台.OpenShift做为PAAS平台最大的特点是它是完全容器化的PAAS平台,底层封装了Docker和Kubernetes,上层暴露了对开发者友好的接 ...
- 响应式微服务 in java 译 十五 Microservices in OpenShift
2019独角兽企业重金招聘Python工程师标准>>> 到目前为止,我们只在本地机器上部署了我们的微服务.当我们在云上部署一个微服务时会发生什么?大多数云平台都包含相应服务,使您的部 ...
- openshift安装部署_OpenShift 4 HOL (1) - 多种方法部署容器化应用
本系列教程说明 OpenShift环境可以使用自己安装的4.2或4.3集群版本,也可使用单机版的CodeReady环境(可参见我以前的微头条). 应用是如何部署到OpenShift上的 OpenShi ...
- OpenShift 与 OpenStack:让云变得更简单
OpenShift 与 OpenStack 都是在 2010.2011 年左右创建的,用于构建可扩展云平台的开源技术,两者都用于在混合云环境中构建可扩展系统.从历史来看,OpenStack 的存在时间 ...
最新文章
- 为什么优秀的程序员都成了无能的领导?
- 一台台式计算机的主要配件有哪些,电脑的基本配件有哪些
- java 显示天气的小程序_超级简单的微信小程序获取今日天气预报代码 小程序获取七日天气...
- 从基于Maven的Web应用程序获取版本字符串
- python构建二叉树_BinaryTree:学习二叉树的Python库
- python3.5安装教程linux_Linux下安装python3.6和第三方库的教程详解
- 你们一年大概可以存多少钱?
- android 录像 源代码,android安卓视频录制摄像拍摄源码(测试可用)
- selenium 如何处理table
- 飞鸽传书2011下载(飞鸽传书)
- 计算机桌面壁纸在哪个文件夹,Win10桌面背景在哪个文件夹 Win10桌面背景所在文件夹介绍...
- MySQL存储IP字段类型
- Ubuntu软件包升级失败的终极修复方法
- 2021年「博客之星」参赛博主:dnbug Blog
- GB28181开源项目WVP部署详细流程
- WeChat applet 微信小程序(1)
- 基于ASP网上团购系统的设计与实现
- 大数据模型研究报告pdf_高速公路大数据模型研究.PDF
- H5Plus自定扫码页面
- 为什么localstorage获取不到数据_纯干货!小白必看,为什么你微博超话引流不到人?揭秘在超话快速获取5000精准客源的引流实操方法...
热门文章
- 超市收银机属于通用计算机,我是一名刚入超市做收银的,我录入货品后微信收钱之后没有在超市电脑上按确定导入账目导致超市系统上多出来钱这改正过来会很难吗?...
- jquery 替换括号里面内容_【推荐】前端框架 Bootstrap 5.0 alpha 发布,不再依赖 jQuery...
- 闭包函数 python_python 函数,闭包
- elk如何同步到es 方案靠谱吗_架构设计:微服务架构如何划分?这6个标准原则让你一目了然...
- matlab打开矩阵表,如何将Excel数据导入MATLAB中?:EXCLE中通过矩阵表输出选项
- 专业设计师是哪里找到高质量素材的!
- vsftp账号_Linux下vsftp的重新安装和配置虚拟用户
- ssm如何在mapper插入实时的时间_第一个ssm整合
- 2019.4.26今日任务
- asp.net MVC ViewData详解