本地IDC或第三方公有云集群应用迁移至天翼云
适用场景
本地IDC或第三方云集群未纳管至分布式容器云,实现备份迁移一体化,应用快捷上云。
1、集群创建
根据应用规模评估与准备云容器引擎集群,具体请参见云容器引擎。
2、数据迁移
本阶段需要将源集群应用依赖镜像,数据库或者缓存数据迁移到云端,对于各类数据,您可以使用天翼云的其他产品来配套实现。
镜像迁移
1)订购容器镜像服务CRS,创建容器镜像服务实例,具体请参见CRS实例开通。
2)使用image-syncer工具将应用所需的镜像迁移到容器镜像服务仓库中。具体请参见image-syncer工具。
数据库迁移
1) 迁移mysql
订购公网IP,并开通配置DTS迁移实例,实现本地MySQL或第三方云MySQL与天翼云DTS的公网IP互通,迁移应用对应的MySQL数据,具体迁移步骤请参见Mysql迁移。
2) 迁移PostgreSQL
订购公网IP,并开通配置DTS迁移实例,实现本地PostgreSQL或第三方云PostgreSQL与天 翼云DTS的公网IP互通,迁移应用对应的PostgreSQL数据,具体迁移步骤请参见PostgreSQL迁移。
3) 分布式缓存Redis迁移
开通分布式缓存服务Redis版,具体迁移流程可查看Redis迁移。
3、应用备份
1)创建ccseone-managed命名空间和对应的sa。
apiVersion: v1
kind: Namespace
metadata:
name: ccseone-managed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ccseone-backup
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
component: ccseone-backup
name: ccseone-backup
namespace: ccseone-managed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
component: ccseone-backup
name: ccseone-backup
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ccseone-backup
subjects:
- kind: ServiceAccount
name: ccseone-backup
namespace: ccseone-managed
2)安装helm,然后使用helm安装ccse-backup-1.0.4.tgz。
3)提前创建oss桶,然后登录到待备份集群,编写备份job,job的编写可参考backupexport.yaml,将存储桶的相关配置填写至pod的环境变量当中,注意配置待备份的命名空间以及对象。
apiVersion: batch/v1
kind: Job
metadata:
name: ccseone-backup-01
namespace: ccseone-managed
spec:
# 如果job在900s内没有完成,将被系统终止
activeDeadlineSeconds: 900
# 自动重试次数设为0,意味着如果Job失败,不会自动重试
backoffLimit: 0
# 不用索引模式来处理完成状态
completionMode: NonIndexed
# Job完成所需的成功次数设为1
completions: 1
# job的并行执行个数设为1,表示同一时间只有一个Pod实例在运行
parallelism: 1
# Job是否可被暂停,false为不可暂停
suspend: false
template:
spec:
containers:
- command:
- ./backup
- export
- --exportName=ccseone-backup-01
- --clusterId=localcluster
- --jobName=ccseone-backup-01
# 命名空间,按需更改
- --includeNs=default
# k8s资源,要求pv和pvc,按需更改
- --includeRs=pod,PersistentVolume,PersistentVolumeClaim,configmap
# 需声明需要备份pv
- --backupPv=true
env:
- name: OSS_PROVIDER
value: s3
- name: OSS_ACCESS_KEY_ID
value: a123456
- name: OSS_ACCESS_KEY_SECRET
value: a123456
- name: OSS_BUCKET
value: a123456
- name: OSS_ENDPOINT
value: 127.0.0.1:1234
# 镜像来源:按需更改
image: ***.ctyun.cn/library/backup:1.3.1
imagePullPolicy: IfNotPresent
name: ccseone-backup-01
dnsPolicy: ClusterFirst
restartPolicy: Never
schedulerName: default-scheduler
securityContext: {}
serviceAccount: ccseone-backup
serviceAccountName: ccseone-backup
terminationGracePeriodSeconds: 30
4)执行kubectl apply -f ,将job部署在待备份集群。
4、应用恢复
当集群还未纳管到CCSE ONE时,可执行以下操作:
1)创建ccseone-managed命名空间和对应的sa。
apiVersion: v1
kind: Namespace
metadata:
name: ccseone-managed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ccseone-backup
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
component: ccseone-backup
name: ccseone-backup
namespace: ccseone-managed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
component: ccseone-backup
name: ccseone-backup
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ccseone-backup
subjects:
- kind: ServiceAccount
name: ccseone-backup
namespace: ccseone-managed
2)安装helm,然后使用helm安装ccse-backup-1.0.4.tgz。
3)登录到待恢复集群,编写恢复job,job的编写可参考backupimport.yaml,将存储桶的相关配置填写至pod的环境变量当中,注意配置待备份的命名空间以及对象。
apiVersion: batch/v1
kind: Job
metadata:
name: ccseone-backup-01
namespace: ccseone-managed
spec:
# 如果job在900s内没有完成,将被系统终止
activeDeadlineSeconds: 900
# 自动重试次数设为0,意味着如果Job失败,不会自动重试
backoffLimit: 0
# 不用索引模式来处理完成状态
completionMode: NonIndexed
# Job完成所需的成功次数设为1
completions: 1
# job的并行执行个数设为1,表示同一时间只有一个Pod实例在运行
parallelism: 1
# Job是否可被暂停,false为不可暂停
suspend: false
template:
spec:
containers:
- command:
- ./backup
- export
- --exportName=ccseone-backup-01
- --clusterId=localcluster
- --jobName=ccseone-backup-01
# 命名空间,按需更改
- --includeNs=default
# k8s资源,要求pv和pvc,按需更改
- --includeRs=pod,PersistentVolume,PersistentVolumeClaim,configmap
# 需声明需要备份pv
- --backupPv=true
env:
- name: OSS_PROVIDER
value: s3
- name: OSS_ACCESS_KEY_ID
value: a123456
- name: OSS_ACCESS_KEY_SECRET
value: a123456
- name: OSS_BUCKET
value: a123456
- name: OSS_ENDPOINT
value: 127.0.0.1:1234
# 镜像来源:按需更改
image: ***.ctyun.cn/library/backup:1.3.1
imagePullPolicy: IfNotPresent
name: ccseone-backup-01
dnsPolicy: ClusterFirst
restartPolicy: Never
schedulerName: default-scheduler
securityContext: {}
serviceAccount: ccseone-backup
serviceAccountName: ccseone-backup
terminationGracePeriodSeconds: 30
4)执行kubectl apply -f ,将job部署在待恢复集群。
5、验证应用
根据业务规则验证已恢复应用的正确性。