请选择 进入手机版 | 继续访问电脑版
点击联系客服
客服QQ:509006671 客服微信:mengfeiseo

广州老站长门户

 找回密码
 立即注册
查看: 61|回复: 45

在TKE中使用Velero迁移复制群集资源

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-2-23 22:28:50 | 显示全部楼层 |阅读模式
# # #概述

Velero(以前称为Heptio  Ark)是一款开源工具,用于执行安全备份和还原、执行灾难恢复、迁移Kubernetes群集资源和永久卷,以及将Velero部署到TKE群集或自行构建的Kubernetes群集。

-群集备份和丢失时恢复。

-将群集资源迁移到另一个群集。

-将生产群集复制到开发和测试群集。

有关Velero介绍的更多信息,请访问[Velero](https://Velero.io/)主页。介绍了使用velero在TKE群集之间无缝迁移复制群集资源的过程。

# # #迁移原则

在需要迁移的群集和目标群集上安装Velero实例,两个群集的Velero实例指向同一个tengyun  COS对象的存储位置,在需要使用Velero迁移的群集上执行备份操作,将备份数据存储在tengyun  COS中,然后在目标群集上使用Velero执行数据还原操作以执行迁移,如下所示:

![img](https://main  . qcloudimg.com/raw/61 a  9 CFC  9067555 df  1494 Fe  1 f  48 add  278 . jpg)

# # #前提条件

-注册信息云帐户(https://cloud  . Tencent.com/register)。

-腾云COS服务已打开。

-要迁移的TKE群集(以下简称群集A)已存在,迁移目标的TKE群集(以下简称群集B)已创建。创建TKE群集[创建群集](3359 cloud  . Tencent.com/document/)

-群集a和群集b都必须安装Velero实例(1.5版或更高版本),并将相同的信息云COS存储桶共享为Velero后端存储。有关安装过程,请参阅[存储配置和velero安装](3359 cloud  . Tencent.com/DDM)

# # #注意事项

1.从1.5版开始,Velero可以使用Restic备份所有pod卷,而无需单独注释每个pod。默认情况下,此功能允许您使用restic备份所有pod卷。但是,以下卷除外:

-装载默认的“Service  Account  Secret”卷

-已装载的“主机路径”类型卷

装载-Kubernetes“secrets”和“configmaps”的卷

此示例需要velero  1.5版或更高版本,以启用[restic](https://velero  . io/docs/v  1.5/restic/)来备份永久卷数据。在velero安装阶段,请参阅[存储配置和velero安装](3359 cloud  . Tencent.com/document/product/457/50122)以了解安装过程。

2.在迁移过程中,请勿对两个群集资源执行任何CRUD操作。请确保迁移过程中发生数据差异,迁移后不会出现数据不一致。

3.确保群集B和群集A工作节点的CPU、内存等规格配置相同或不同。如果迁移的Pods由于资源原因无法调度,请不要发生Pending。

程序# #

# # #在群集a上创建备份

可以手动执行备份操作,也可以使用“velero  schedule  -h”在velero上设置定期自动备份。本示例比较了default、default2命名空间的资源情况,该命名空间显示了群集A的两个命名空间下的Pods和PVC资源状态。

提示:可以指定在备份过程中执行某些自定义Hook操作。例如,备份前必须将运行应用程序的内存中的数据保留在磁盘上。有关Hook备份的详细信息,请参阅[hook备份](https://velero  . io/docs/v  1.5/backup-hooks/)。

![img](https://main  . qcloudimg.com/raw/b4c  1614d  0563086 a  63 AFA  5 a  7 f  8 e  318 cf  . png)

其中,群集中的minio对象存储服务使用永久卷,并上传了部分照片数据,如下图所示。

![img](https://main  . qcloudimg.com/raw/0a  68 ad8 b  570 a  93 a  1 FDE  133 f  3997 e  8 Fe  7 . png)

要备份群集中不包含velero命名空间(velero安装的默认命名空间)资源的所有其他资源,或自定义需要备份的群集资源的范围,可以使用“velero  create  backup  -h”查看支持的资源过滤参数。

` ` ` ` ` ` ` ` ` ` ` `)

velero  backup  create-exclude-namespaces

` ` ` ` ` ` ` ` ` ` ` `)

本示例将创建“default-all”的群集备份,如下图所示。

![img](https)
://main.qcloudimg.com/raw/f55f2bc19f7e1c24ade24f2fc35ffcd2.png)
备份任务状态显示是 “Completed” 时,说明备份任务完成,可以通过 `velero backup logs  | grep error` 命令检查是否有备份操作发生错误,没有输出则说明备份过程无错误发生,如下图所示:
> 注意:请确保备份过程未发生任何错误,假如 velero 在执行备份过程中发生错误,请排查解决后重新执行备份。
![img](https://main.qcloudimg.com/raw/bab5013f7216f4867edb8572bc63a5ca.png)
备份完成后,临时将备份存储位置更新为只读模式(非必须,这可以防止在还原过程中 Velero 在备份存储位置中创建或删除备份对象):
```
kubectl patch backupstoragelocation default --namespace velero \
    --type merge \
    --patch '{"spec":{"accessMode":"ReadOnly"}}'
```
### 在集群 B 执行还原
在执行还原操作前集群 B 中 default 、default2 命名空间下没有任何工作负载资源,查看结果如下图:
![img](https://main.qcloudimg.com/raw/69447424d741418a88a85b7579fd124c.png)
临时将集群 B 中 Velero 备份存储位置也更新为只读模式(非必须,这可以防止在还原过程中 Velero 在备份存储位置中创建或删除备份对象):
```
kubectl patch backupstoragelocation default --namespace velero \
    --type merge \
    --patch '{"spec":{"accessMode":"ReadOnly"}}'
```
> 提示:可以选择指定在还原期间或还原资源后执行自定义 Hook 操作。例如,可能需要在数据库应用程序容器启动之前执行自定义数据库还原操作。 有关还原 Hook 的更多信息请参阅 [还原 Hook](https://velero.io/docs/v1.5/restore-hooks/)。
在还原操作之前,需确保集群 B 中 的 Velero 资源与云存储中的备份文件同步。默认同步间隔是1分钟,可以使用`--backup-sync-period` 来配置同步间隔。可以使用下面命令查看集群 A 的备份是否已同步:
```
velero backup get [B]
```
获取备份成功检查无误后,执行下面命令还原所有内容到集群 B 中:
```
velero restore create --from-backup [B]
```
本示例执行还原过程如下图:
![img](https://main.qcloudimg.com/raw/13b5c653d6f64f800ef242567571408c.png)
等待还原任务完成后查看还原日志, 可以使用下面命令查看还原是否有报错和跳过信息:
```
# 查看迁移时是否有错误的还原信息
velero restore logs [B] | grep error
# 查看迁移时跳过的还原操作
velero restore logs [B] | grep skip
```
从下图可以看出没有发生错误的还原步骤,但是有很多 “skipped” 步骤,是因为我们在备份集群资源时备份了不包含 velero 命名空间的所有集群资源,有一些同类型同名的集群资源已经存在了,如 kube-system下的集群资源,当还原过程中有资源冲突时,velero 会跳过还原的操作步骤。所以实际上还原过程是正常的,可以忽略这些 “skipped” 日志,假如有特殊情况可以分析下日志看看。
![img](https://main.qcloudimg.com/raw/a358dfe4757b7dd3d4d062494fda674b.png)
### 迁移结果核验
查看校验集群 B 执行迁移操作后的集群资源,可以看到 default 、default2 命名空间下的 pods 和 PVC 资源已按预期迁移成功:
![img](https://main.qcloudimg.com/raw/57b9724a809ea73a699fc4c437da07b7.png)
再通过 Web 管理页面登录集群 B 中的 monio 服务,可以看到 minio 服务中的图片数据没有丢失,说明持久卷数据也已按预期迁移成功。
![img](https://main.qcloudimg.com/raw/bd300f7d86584af3b59bf0fef0f253e5.png)
至此,我们完成了 TKE 集群间资源的迁移,迁移操作完成后,请不要忘记把备份存储位置恢复为读写模式(集群 A 和 集群B),以便下次备份任务可以成功使用:
```
kubectl patch backupstoragelocation default --namespace velero \
   --type merge \
   --patch '{"spec":{"accessMode":"ReadWrite"}}'
```
## 总结
本文主要介绍了在 TKE 集群间使用 Velero 迁移集群资源的原理、注意事项和操作方法,成功的将示例集群 A 中的集群资源无缝迁移到集群 B 中,整个迁移过程非常简单方便,是一种非常友好的集群资源迁移方案。
回复

使用道具 举报

0

主题

358

帖子

214

积分

中级会员

Rank: 3Rank: 3

积分
214
发表于 2021-2-23 22:45:19 | 显示全部楼层
不错
回复

使用道具 举报

1

主题

357

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2021-2-23 23:08:56 | 显示全部楼层
学习了,谢谢分享、、、
回复

使用道具 举报

0

主题

343

帖子

157

积分

注册会员

Rank: 2

积分
157
发表于 2021-2-23 23:31:07 | 显示全部楼层
小手一抖,积分到手!
回复

使用道具 举报

0

主题

341

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2021-2-23 23:56:40 | 显示全部楼层
有竞争才有进步嘛
回复

使用道具 举报

1

主题

354

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2021-2-24 06:04:15 | 显示全部楼层
看帖回帖是美德!
回复

使用道具 举报

0

主题

381

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2021-2-24 06:25:17 | 显示全部楼层
好帖,来顶下
回复

使用道具 举报

0

主题

360

帖子

173

积分

注册会员

Rank: 2

积分
173
发表于 2021-2-24 06:45:37 | 显示全部楼层
不错不错,楼主您辛苦了。。。
回复

使用道具 举报

1

主题

361

帖子

137

积分

注册会员

Rank: 2

积分
137
发表于 2021-2-24 07:06:19 | 显示全部楼层
有竞争才有进步嘛
回复

使用道具 举报

0

主题

380

帖子

192

积分

注册会员

Rank: 2

积分
192
发表于 2021-2-24 07:26:48 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|广州@IT精英团

GMT+8, 2021-3-4 13:40 , Processed in 0.074183 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表