做卡贴的网站,做的不好的网站,建设银行上海分行网站,建设网站破解版《OpenShift 4.x HOL教程汇总》 说明#xff1a;本文已经在OpenShift 4.14环境中验证 文章目录 什么是 MTC #xff1f;MTC 中有关应用迁移的概念MTC 中的定制资源 准备对象存储配置迁移源集群的环境安装 MTC 运行环境部署 file-uploader 测试应用查看集群配置 配置迁移目标集…《OpenShift 4.x HOL教程汇总》 说明本文已经在OpenShift 4.14环境中验证 文章目录 什么是 MTC MTC 中有关应用迁移的概念MTC 中的定制资源 准备对象存储配置迁移源集群的环境安装 MTC 运行环境部署 file-uploader 测试应用查看集群配置 配置迁移目标集群的环境安装 MTC 运行环境添加 Replication Repository MigStorage添加迁移的 OpenShift 集群添加迁移计划 应用迁移和回退执行迁移计划回退迁移 其他功能查看迁移过程涉及到哪些对象不迁移某些特定资源 演示视频参考 什么是 MTC
红帽的容器迁移工具包Migration Toolkit for Containers - MTC可以在不同的 OpenShift Container Platform 集群之间以命名空间的粒度复制有状态应用工作负载。复制的应用资源包括这些应用运行相关的 Kubernetes 对象、镜像和应用使用的 PV 数据。
MTC 使用了开源项目 Velero 来实现在源和目标集群之间复制应用资源。在复制应用资源过程中被复制的应用资源是存放在基于对象存储的副本库中。对象存储将在间接迁移过程中用来复制 Image、PV 和 Kubernetes 对象或在直接 PV 迁移或直接 Image 迁移过程中用来复制 Kubernetes 对象。 为了在源集群和目标集群之间迁移应用需要将 MTC 运行在每个 OpenShift 集群上。可参见《MTC 文档》已确认需要使用那个版本的 MTC Operator。
MTC 中有关应用迁移的概念
间接迁移使用 Restic 将 Image、PV 和 Kubernetes 对象先从源群集复制到副本库再从副本复制到目标群集。Direct volume migration - DVM使用 Rsync 将 PV 直接从源群集复制到目标群集。Direct image migration - DIM将 Image 直接从源群集复制到目标群集。Cutover migration先停止源群集上的应用程序再将其资源迁移到目标群集。Stage migration无需停止应用程序只将数据复制到目标群集不迁移应用的 Kubernetes 对象。Host cluster通常是目标集群用来运行 migration-controller 和 web console。Remote cluster通常是源集群。远程群集需要一个公开的 Registry Route用来接迁移映像。另外还需要有用来访问 migration-controller 服务账户的 Secret。MTC web console 和 Migration Controller运行在 Host cluster 之上用来运行 MTC 的控制台和控制器。缺省使用目标集群充当 Host cluster但也可运行在独立集群或源集群之上。
MTC 中的定制资源
MTC 使用以下几种 CR 定制资源完成应用资源的迁移
MigCluster定义集群的配置。MigStorage定义存储的配置。MigPlan定义迁移涉及的源和目标集群、副本库和命名空间等配置。MigMigration每次在源和目标集群之间执行迁移计划的动作。Backup当执行迁移计划时在源集群中创建 Velero 的 Backup CR。Restore当执行迁移计划时在目标集群中创建 Velero 的 Restore CR。
准备对象存储
MTC 的 Replication Repository 可以使用以下对象存储
Amazon Web Services (AWS) S3Google Cloud Provider (GCP)Microsoft Azure GenericS3 object storage, MinIO 或 Ceph
请参考《OpenShift 4 - 部署运行 MinIO 对象存储》在 OpenShift 4 上部署 MinIO 环境。然后根据文档创建一个名为 ocp-migration-bucket 的 Bucket。
配置迁移源集群的环境
注意本文以 OpenShift 3 为迁移的源集群。如果源集群是 OpenShift 4 的环境可以参考下一章节先在 OpenShift 4 上安装 MTC Operator然后使用缺省配置创建一个 MigrationController 对象即可。随后可继续完成本文的“部署 file-uploader 测试应用”等后续操作。
安装 MTC 运行环境
执行命令根据 2 个 yaml文件创建 MTC 运行环境。
$ 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配置迁移目标集群的环境
安装 MTC 运行环境
使用缺省配置安装 Migration Toolkit for Containers Operator。注意缺省会安装到 openshift-migration 项目中。 使用缺省配置创建一个 MigrationController 对象创建过程还会自动创建一个 MigCluster 对象并且安装 OADP Operator。 查看运行在 “openshift-migration” 项目中的 Pod还可在 “开发者” 视图的 “拓扑” 中可以查看部署资源的状态或查看 “migration-controller” 的 Resources 栏目中的资源状态。
$ oc get pods -n openshift-migration
NAME READY STATUS RESTARTS AGE
migration-controller-5bc4bc78b9-pbdwn 2/2 Running 0 7m20s
migration-log-reader-6f8bfbdb99-2tjwb 2/2 Running 0 7m19s
migration-operator-5bcf744cc7-mz2gm 1/1 Running 0 9m25s
migration-ui-7d687d9476-xqc6t 1/1 Running 0 7m13s
node-agent-mzkfq 1/1 Running 0 7m40s
openshift-adp-controller-manager-7c67d4554c-5h68m 1/1 Running 0 9m28s
velero-6dc746b548-4whf2 1/1 Running 0 7m40s查看名为 “migration ” 的路由地址然后登录该地址后可以看到 Migration Toolkit for Containers 的控制台。
$ oc get route migration -n openshift-migration -o jsonpathhttps://{.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 nameocp-migration-repository S3 bucket nameocp-migration-bucket S3 endpointMinio 服务的路由地址 S3 provider access keyminio S3 provider secret access keyminio123 完成后可以在 OpenShift 控制台的 MTC Operator 中查找创建的 MigStore 对象。
添加迁移的 OpenShift 集群
进入 MTC 控制台中的 “Clusters” 菜单然后点击 “Add cluster”。在 “Add cluster” 窗口提供以下配置 Cluster nameocp3 URLhttps://OCP3-API Service account tokenOCP3-TOKEN 然后点击 “Add cluster” 按钮成功后会显示“Connection successful”。 完成后 Clusters 中的 “ocp3” 是迁移的源集群“host” 是迁移的目标集群。
添加迁移计划
进入 MTC 控制台的 Migration plan然后点击 “Add migration plan”。在 “Create a migration plan” 窗口的 General 步骤按照下图设置 Plan namefile-uploader-mig-plan Source clusterocp3 Target clusterhost Repositoryocp-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 迁移计划的下列菜单中选择 “Cutover”。注意如果是 Stage则只迁移 PV 数据而不迁移 Kubernetes 对象。 在弹出的窗口中点击 “Migrate”。进入上图 “Migrations” 列的链接查看迁移的执行进度知道全部执行完。 在目标 OpenShift 4 集群中确认已经有 file-uploader 项目并且file-uploader应用已经可以访问并且已经有前面上传的文件。 确认此时在迁移源 OpenShift 3 集群的 file-uploader 应用中的 Pod 数量已经降为 “0” 确认迁移目标 OpenShift 4 集群的 file-uploader 应用中的 Pod 数量为 “3且应用中已包含测试图片这说明 PV 也迁移成功。
回退迁移
在 file-uploader-migration-plan 迁移计划的下列菜单中选择 “Rollback”。查看执行进入直到完成。确认迁移目标 OpenShift 4 的 file-uploader 应用已经不能访问而迁移源 OpenShift 3 的 file-uploader 应用已经恢复访问了。
其他功能
查看迁移过程涉及到哪些对象
可以查看 MigAnalytic 对象它记录了迁移过程涉及到哪些类型的对象被迁移了。
不迁移某些特定资源
可以定制 MigrationController 对象以定义默认对那些资源进行迁移。
apiVersion: migration.openshift.io/v1alpha1
kind: MigrationController
metadata:name: migration-controllernamespace: openshift-migration
spec:disable_image_migration: truedisable_pv_migration: true...excluded_resources:- imagetags- templateinstances- clusterserviceversions- packagemanifests- subscriptions- servicebrokers- servicebindings- serviceclasses- serviceinstances- serviceplans- operatorgroups- events演示视频
视频
参考
https://docs.openshift.com/container-platform/4.15/migration_toolkit_for_containers/about-mtc.html https://docs.openshift.com/container-platform/4.15/migration_toolkit_for_containers/advanced-migration-options-mtc.html https://docs.openshift.com/container-platform/4.15/migrating_from_ocp_3_to_4/installing-3-4.html https://github.com/migtools/labs/blob/master/mtc/bookbag/workshop/content/Intro.adoc https://developer.ibm.com/tutorials/migrate-kubernetes-cluster-openshift-konveyor-crane/ https://redhat-cop.github.io/openshift-migration-best-practices/ https://github.com/konveyor/labs/tree/master/mtc https://github.com/konveyor/mig-demo-apps https://www.konveyor.io/blog/direct-migration/ https://access.redhat.com/articles/5064151 https://www.redhat.com/it/blog/a-guide-to-migrating-workloads-from-ocp3-to-red-hat-openshift-service-on-aws-rosa-using-the-migration-toolkit-for-containers-mtc