Velero:备份、迁移Kubernetes集群资源和PV
Velero基本介绍
官方文档:https://velero.io/docs/v1.4/
基本工作原理:
不管需求是实现什么,比如:集群迁移、恢复、备份,其核心都是通过velero client CLI创建一个backup,然后迁移和恢复等操作都是需要这个backup来完成的。
创建一个backup,velero backup create test-backup
:
- Velero client 调用Kubernetes API服务器以创建Backup。
- BackupController检测到新的backup,并验证。
- BackupController开始backup,通过请求ApiServer获取资源来收集数据以进行备份。
- BackupController将要备份的数据上传到一个对象存储服务器,如AMS S3。
- 默认情况下,
velero backup create
会生产每一个PV的磁盘快照。您可以通过指定其他参数来调整快照。运行velero backup create --help
以查看可用的参数。可以使用选项禁用快照--snapshot-volumes=false
。
安装需要的工具
安装对象存储服务器:Minio
Velero支持的storage providers:https://velero.io/docs/v1.4/supported-providers/
这里使用本地安装的对象存储服务器,Minio
安装的Minio需要能被两个集群(集群迁移,一个到另外一个),都能访问到。
安装Velero Client
Velero Client就是命令行工具,安装版本应该是v1.3.0, or later。
官方提供了多种安装方式:https://velero.io/docs/master/basic-install/
安装Velero Server
使用Velero
首先需要明确一点是:不管需求是什么,比如:集群迁移、恢复、备份,其核心都是通过backup实现的。灾难恢复是如果出现意外,那么从备份的backup恢复这个集群,而迁移的过程是使用当前集群的backup来在另外一个集群恢复。
Velero常用命令
备份Backup
velero backup get
:查看已备份的
velero backup create <backupname>
:创建一个backup包含所有资源
velero backup create <backupname> --include-namespaces ns1,ns2
:为ns1,ns2命名空间下的资源备份
velero backup create <backupname> --exclude-namespaces ns1,ns2
:排除掉ns1,ns2的命名空间,创建备份
velero backup create <backupname> --include-resources resource1,resource2
:为指定资源备份
`velero backup create --exclude-resources resource1,resource2``:不备份指定资源
--storage-location <localpath>
:将创建的备份保存到本地路径下
-l, --selector
:通过指定label来匹配要back up的资源
除此以外还包括:delete、describe、logs
恢复Restore
velero restore get
:查看已经restore的资源
vel ero restore create restore-1 --from-backup backup-1
:从backup-1恢复
velero restore create --from-backup backup-2 --include-resources persistentvolumeclaims,persistentvolumes
:仅恢复指定资源,同样使用--exclude-resources
:不恢复某资源
velero restore create --from-schedule schedule-1
:从创建的schedule恢复
除此以外还包括:delete、describe、logs
Schedule定时备份
Schedule是针对backup的,是独立于backup之外的一种资源,但他本身也是一个backup只不过是具有了定时的功能,符合Cron规则。
velero create schedule NAME --schedule="0 */6 * * *"
:每6小时自动备份一次
velero create schedule NAME --schedule="@every 24h" --include-namespaces web
:因为schedule也是一种backup,所以创建backup指定的参数这里也都可以使用
除此以外还包括:delete、describe、logs
介绍:
Velero 可以帮助你:
- 对集群进行备份并在丢失的情况下进行恢复。
- 将集群资源迁移到其他集群。
- 将生产集群复制到开发和测试集群。
Velero 包括:
- 在集群上运行的服务端
- 本地的CLI客户端
推荐用这个安装:https://velero.io/docs/master/contributions/minio/
Velero v1.4.0下面两线之间是过程,结论是 两个集群里安装下面这个,参考的上面的这个url:
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.0.0 \
--kubeconfig /etc/rancher/k3s/k3s.yaml \
--bucket velero \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.lab3.cn \
--use-restic \
--wait\
运行安装命令:
velero install \
--image registry.cn-hangzhou.aliyuncs.com/acs/velero:latest \
--provider aws \
--bucket velero \
--namespace velero \
--secret-file ./credentials-velero \
--velero-pod-cpu-request 200m \
--velero-pod-mem-request 200Mi \
--velero-pod-cpu-limit 200m \
--velero-pod-mem-limit 200Mi \
--use-volume-snapshots=false \
--use-restic \
--restic-pod-cpu-request 200m \
--restic-pod-mem-request 200Mi \
--restic-pod-cpu-limit 200m \
--restic-pod-mem-limit 200Mi \
--backup-location-config region=minio,s3ForcePathStyle="false",s3Url=http://127.0.0.1:30464
出现错误:
An error occurred: --plugins flag is required
需要添加一个插件:
velero plugin add velero/velero-plugin-for-aws:v1.0.0
An error occurred: deployments.apps "velero" not found
尝试下面这个 ok:
velero install \
--plugins velero/velero-plugin-for-aws:v1.0.0 \
--image registry.cn-hangzhou.aliyuncs.com/acs/velero:latest \
--provider aws \
--bucket velero \
--namespace velero \
--secret-file ./credentials-velero \
--velero-pod-cpu-request 200m \
--velero-pod-mem-request 200Mi \
--velero-pod-cpu-limit 200m \
--velero-pod-mem-limit 200Mi \
--use-volume-snapshots=false \
--use-restic \
--restic-pod-cpu-request 200m \
--restic-pod-mem-request 200Mi \
--restic-pod-cpu-limit 200m \
--restic-pod-mem-limit 200Mi \
--backup-location-config region=minio,s3ForcePathStyle="false",s3Url=http://127.0.0.1:30464
删除安装的:
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero
下一个出现的错误:
An error occurred: unknown flag: --feature
暂时解决:https://velero.io/docs/master/customize-installation/
用disable --feature来解决:
$ kubectl -n velero edit deploy/velero
$ kubectl -n velero edit daemonset/restic
下一个错误出现:
An error occurred: unable to register plugin (kind=VolumeSnapshotter, name=velero.io/aws, command=/plugins/velero-plugin-for-aws) because another plugin is already registered for this kind and name (command=/velero)
Velero:备份、迁移Kubernetes集群资源和PV的更多相关文章
- 在 TKE 中使用 Velero 迁移复制集群资源
概述 Velero(以前称为Heptio Ark)是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 群集资源和持久卷,可以在 TKE 集群或自建 Kubernetes ...
- 解决项目迁移至Kubernetes集群中的代理问题
解决项目迁移至Kubernetes集群中的代理问题 随着Kubernetes技术的日益成熟,越来越多的企业选择用Kubernetes集群来管理项目.新项目还好,可以选择合适的集群规模从零开始构建项目: ...
- kubernetes集群断电后etcd启动失败之etcd备份方案
一.问题描述 二进制部署的单Master节点的v1.13.10版本的集群,etcd部署的是3.3.10版本,部署在master节点上.在异常断电后,kubernetes集群无法正常启动.这里通过查看k ...
- Kubernetes — 从0到1:搭建一个完整的Kubernetes集群
准备工作 首先,准备机器.最直接的办法,自然是到公有云上申请几个虚拟机.当然,如果条件允许的话,拿几台本地的物理服务器来组集群是最好不过了.这些机器只要满足如下几个条件即可: 满足安装 Docker ...
- 基于kubernetes集群的Vitess最佳实践
概要 本文主要说明基于kubernetes集群部署并使用Vitess; 本文假定用户已经具备了kubernetes集群使用环境,如果不具备请先参阅基于minikube的kubernetes集群搭建, ...
- Kubernetes集群
Kubernetes已经成为当下最火热的一门技术,未来一定也会有更好的发展,围绕着云原生的周边产物也越来越多,使得上云更加便利更加有意义,本文主要讲解一些蔚来汽车从传统应用落地到Kubernetes集 ...
- K8s 二、(1、kubeadm部署Kubernetes集群)
准备工作 满足安装 Docker 项目所需的要求,比如 64 位的 Linux 操作系统.3.10 及以上的内核版本: x86 或者 ARM 架构均可: 机器之间网络互通,这是将来容器之间网络互通的前 ...
- Kubernetes 集群无损升级实践 转至元数据结尾
一.背景 活跃的社区和广大的用户群,使 Kubernetes 仍然保持3个月一个版本的高频发布节奏.高频的版本发布带来了更多的新功能落地和 bug 及时修复,但是线上环境业务长期运行,任何变更出错都可 ...
- Kubernetes集群部署关键知识总结
Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...
随机推荐
- codevs 1300:文件排版(DP)
题目描述 写电子邮件是有趣的,但不幸的是经常写不好看,主要是因为所有的行不一样长,你的上司想要发排版精美的电子邮件,你的任务是为他编写一个电子邮件排版程序. 完成这个任务最简单的办法是在太短的行中的单 ...
- 如何优雅地读写HttpServletRequest和HttpServletResponse的请求体
最近很多交互要同原生的HttpServletRequest和HttpServletResponse打交道.从HttpServletRequest中读取body数据封装成某种数据结构:向HttpServ ...
- Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。
相关 知识 >>> 相关 练习 >>> 实现要求: 使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执 ...
- JDBC编程工具类 Dbconnection
JDBC基础:https://blog.csdn.net/weixin_44893902/article/details/106746880 Dbconnection工具类(包含了连接,增删改查,关闭 ...
- Pycharm的界面修改与基本设置
Pycharm的一些基本设置 设置字体大小与字体样式 首先我们打开Pycharm,点击左上角File,找到sitting 点击后就能进入设置界面 xdm,我将介绍两种更改字体的设置 方法一 设置界面找 ...
- JZOJ5409. Fantasy && Luogu2048 [NOI2010]超级钢琴
题目大意 给出一个序列和\(L, R\), 求前k大长度在\([L,R]\)之间的连续子序列的和的和. 解题思路 朴素的想法是对于一个左端点\(p\), 它的右区间取值范围是一个连续的区间即\([p+ ...
- java POJO中 Integer 和 int 的不同,用int还是用Integer
https://www.jianshu.com/p/ff535284916f [int和Integer的区别] int是java提供的8种原始类型之一,java为每个原始类型提供了封装类,Intege ...
- vue3.0+vite+ts项目搭建--初始化项目(一)
vite 初始化项目 使用npm npm init vite@latest 使用yarn yarn create vite 使用pnpm pnpx create-vite 根据提示输入项目名称,选择v ...
- 帮你克服web字体选择焦虑症
1.背景 前端时间产品经理问我,移动端web默认字体有哪些,哪些字体不侵权?我当时感觉这方面的知识很匮乏,只能回答出微软雅黑和苹方简体,平常写代码时,没怎么留意过font-family设置的字体属性, ...
- JuiceFS 即将发布 1.0 并调整开源许可
开源一周年 JuiceFS 开始于 2017 年,是一款云原生分布式文件系统,旨在帮助企业解决多云.跨云.混合云环境下所面临的诸多挑战:数据安全和保护.大数据架构升级.海量小文件访问.Kubernet ...