若本地或三方云集群,无法通过公网/内网方式纳管到天翼云分布式容器云平台CCE One时,将不能使用三方单集群控制台相关运维能力,也即无法通过前端操作指引方式对集群应用进行必要的备份和恢复。此时,可考虑通过登录用户集群离线备份恢复方式进行操作。
适用场景
本地或三方云集群未纳管至分布式容器云,需在集群内实现备份迁移一体化操作,应用快捷上云。
操作指引
步骤一:集群评估与纳管
在这个阶段,您将根据源集群的现状来评估适合迁移的目标集群类型。可以基于必要的开源工具自动或手工收集源集群的信息,包括Kubernetes版本、规模、工作负载、存储等数据,并根据收集到的数据考虑合适的目标集群信息。
为方便后续的数据备份与恢复,或者基于联邦的细粒度应用迁移,您需要将源集群注册到天翼云CCE One注册集群;
步骤二:数据迁移
在这个阶段,您将把镜像和相关依赖服务的数据迁移到云端。可基于天翼云上提供的专业云迁移、云备份等迁移工具,或基于云产品提供的专门迁移指引进行迁移。例如:
自建镜像仓库迁移请参考:迁移自建Harbor至容器镜像服务企业版
自建数据库如mysql迁移请参考:本地MySql迁移到RDS For MySQL
自建PostgreSQL迁移请参考:本地PostgreSQL迁移到RDS For PostgreSQL
自建Redis迁移请参考:自建Redis迁移到DCS
其他类型存储迁移,请参考天翼云上对应云产品提供的迁移指引;
步骤三:云上集群创建与纳管
在这个阶段,您将评估目标集群所需规格信息并创建对应的天翼云CCE集群;然后将该目标集群关联到分布式容器云平台CCE One注册集群。
云容器引擎允许用户对集群资源进行个性化选取,以精准匹配其多样化的业务诉求。如下所示的表中,列举了集群的指标参数,并提供了参考规划选择;用户应依据自身业务的确切需求,对相关设置做出合理调配,其间,我们建议尽可能保持与原集群性能配置的一致性水平。
主要指标参数 | 指标参数说明 | 本示例规划 |
---|---|---|
kubernetes版本 |
| 1.29.3 |
网络插件 |
| cubecni |
apiserver访问 | API Server的访问需要依赖ELB实例,您可根据需要选择合适的ELB规格,系统将根据该规格创建一个私网ELB实例。规格选择请见:了解ELB实例规格 | 标准型I |
控制节点数 |
| 3 |
节点规格 | 分为控制节点规格和工作节点规格,如何选择可以参考:集群规格推荐规划 | 通用型4C8G |
工作节点操作系统 |
| ctyunos23.01 |
在目标CCE集群创建好后,需要进入天翼云分布式容器云平台CCE One控制台,将目标CCE集群关联到CCE One的注册集群以便支持后期的纳管与联邦调度能力;
步骤四:应用迁移
注意
由于迁移的源/目标集群任意之一无法被纳管到天翼云CCE One注册集群,如下备份/恢复操作均为离线操作。理论上可独立于天翼云环境。
如下将仅以天翼云提供的ccse-backup插件为例进行介绍;当然,您也可以选择基于三方或开源工具来进行集群备份和恢复,例如也可选择开源Velero,此时操作步骤请参考其官方指引。
1. 创建ccseone-managed命名空间和对应的sa
在迁移源和目标集群均需进行如下YAML创建:
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
在迁移源和目标集群均需进行该步骤操作。
通过helm创建以及标准创建情况下,依赖从天翼云CRS拉取相关helm配置及镜像地址,需要打通与云上服务的公网或内网访问通道。
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
执行kubectl apply -f ,将job部署在待备份集群
4. 在目标集群中进行应用恢复
登录到待恢复集群,编写恢复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
执行kubectl apply -f ,将job部署在待恢复集群。
5、验证应用
根据业务规则验证已恢复应用的正确性。