应用迁移
第三方云集群中应用的迁移包含两个步骤:应用备份和应用迁移,即备份第三方云集群中应用,然后通过数据恢复的方式迁移至目标集群。
k8clone是一个简便的Kubernetes元数据克隆工具,它可以将Kubernetes元数据(对象)保存为本地压缩包,然后将这些元数据恢复到目标集群(UCS华为云集群或本地集群)中,从而实现本地IDC集群应用的迁移上云。
约束限制
当前不支持高版本集群应用向低版本集群迁移。
前提条件
- 确认云原生应用依赖的服务(镜像、存储、数据库等非集群内的数据)都已经迁移完成。
- 确认源集群中元数据备份数据已经下载到执行k8clone的服务器上。
k8clone数据恢复原理
数据恢复的流程参考如下:
在执行恢复操作前,需要准备一个数据恢复配置文件“restore.json”,目的是在应用恢复时自动更换PVC、StatefulSet的存储类名称,以及工作负载所使用镜像的Repository地址。
文件内容如下:
{ "StorageClass": "OldStorageClassName": "NewStorageClassName" //支持修改PVC、StatefulSet的StorageClassName字段 "ImageRepo": "OldImageRepo1": "NewImageRepo1", //eg:"dockerhub.com": "cn-north-4.swr.huaweicloud.com" "OldImageRepo2": "NewImageRepo2", //eg:"dockerhub.com/org1": "cn-north-4.swr.huaweicloud.com/org2" "NoRepo": "NewImageRepo3" //eg:"golang": "swr.cn-north-4.myhuaweicloud.com/paas/golang" }
- StorageClass:支持PVC、有状态应用VolumeClaimTemplates中存储类名称按照配置进行自动更换。
- ImageRepo:支持工作负载所使用镜像的Repository地址的更换,工作负载包括Deployment(含initContainer)、StatefulSet、Orphaned Pod、Job、CronJob、Replica Set、Replication Controller、DaemonSet。
k8clone恢复使用方法
k8clone工具支持在Linux(x86、arm)和Windows环境中运行,使用方法相似。本文将以Linux(x86)环境为例进行介绍。
若使用Linux(arm)或Windows环境,请将下述命令中的k8clone-linux-amd64分别替换为k8clone-linux-arm64或k8clone-windows-amd64.exe。
在k8clone工具所在目录下执行./k8clone-linux-amd64 restore -h,可以查看k8clone工具恢复的使用方法。
- -k, --kubeconfig:指定kubectl的KubeConfig位置,默认是$HOME/.kube/config。kubeConfig文件:用于配置对Kubernetes集群的访问,KubeConfig文件中包含访问注册Kubernetes集群所需要的认证凭据以及Endpoint(访问地址),详细介绍可参见Kubernetes文档。
- -s, --api-server:Kubernetes API Server URL,默认是""。
- -q, --context:Kubernetes Configuration Context,默认是""。
- -f, --restore-conf:指定restore.json的路径,默认是k8clone工具所在目录下。
- -d, --local-dir:备份数据放置的路径,默认是k8clone工具所在目录下。
$ ./k8clone-linux-amd64 restore -h ProcessRestore from backup Usage: k8clone restore [flags] Flags: -s, --api-server string Kubernetes api-server url -q, --context string Kubernetes configuration context -h, --help help for restore -k, --kubeconfig string The kubeconfig of k8s cluster's. Default is the $HOME/.kube/config. -d, --local-dir string Where to restore (default "./k8clone-dump.zip") -f, --restore-conf string restore conf file (default "./restore.json")
示例:
./k8clone-linux-amd64 restore -d ./k8clone-dump.zip -f ./restore.json
应用恢复操作步骤
- 通过kubectl连接目标集群。具体方法可参考使用kubectl连接集群。
- 准备数据恢复配置文件:restore.json。
新建一个restore.json文件,按照格式修改,并将文件放置在k8clone工具所在目录下。
示例:
{ "StorageClass": { "csi-disk": "csi-disk-new" }, "ImageRepo": { "quay.io/coreos": "swr.cn-north-4.myhuaweicloud.com/paas" } }
- 进入k8clone工具所在目录,执行恢复命令,将备份数据恢复到目标集群。
示例:
./k8clone-linux-amd64 restore -d ./k8clone-dump.zip -f ./restore.json