使用Velero备份、恢复k8s集群上的资源

一、Velero简介

Velero提供备份和恢复 Kubernetes 集群资源和持久卷的工具。

Velero功能:

  • 对群集进行备份,并在丢失时进行还原。
  • 将集群资源迁移到其他集群。

Velero 包括:

  • 在群集上运行的服务器
  • 在本地运行的命令行客户端
  • 开源地址:https://github.com/vmware-tanzu/velero
  • 官方文档:Velero
velero备份流程
  1. velero客户端调用kubernetes API Server创建backup任务
  2. Backup控制器基于watch机制通过Api Server获取到备份任务
  3. Backup控制器开始执行备份动作,会通过请求Api Server获取到需要备份的数据
  4. Backup 控制器将获取到的数据备份到指定的对象存储server端

二、准备后端存储

Velero支持很多种存储插件,可查看:Velero Docs - Providers获取插件信息,我们这里使用minio作为S3兼容的对象存储提供程序。也可以在任意地方部署Minio对象存储,只需要保证K8S集群可以访问到即可。

这里使用一台独立机器docker部署minio

1、下载minio的docker镜像

2、准备数据目录

# mkdri -pv /data/minio

3、docker部署minio

两个变量定义minio的用户、密码

MINIO_ROOT_USER

MINIO_ROOT_PASSWORD

一个管理端口9999,一个数据端口9000

容器正常启动后,通过浏览器访问http://IP:9999 输入上面定义的用户、密码即可登录

登录之后,创建一个Bucket,命名为velerodata

参考文章 Docker 搭建 Minio 容器 (完整详细版)_docker minio-CSDN博客

minio也可部署到 k8s集群里

三、安装velero

velero包含velero客户端和服务端,服务端需要部署在可以使用kubectl命令操作k8s集群的机器上,这里就安装在k8s的master上

从GitHub上搜索下载即可:Releases · vmware-tanzu/velero · GitHub

下载最新的release linux_amd64版本

将velero执行程序cp至/usr/local/bin/目录下即可,部署Server之前Server的版本是获取不到的

部署Server

先创建认证文件,把minio的用户名、密码写到这个文件

使用velero命令部署velero server

velero install \--provider aws \--image velero/velero:latest \--plugins velero/velero-plugin-for-aws:v1.8.2 \--bucket velerodata \--secret-file /root/credentials-velero \--use-node-agent \--use-volume-snapshots=false \--namespace velero \--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://10.49.133.147:9000 \--wait

# 执行install命令后会创建一系列清单,包括CustomResourceDefinition、Namespace、Deployment等。

这里遇到一个坑

有些节点上的node-agent pod总是起不来,查看日志报没有velero命令(这个是node-agent pod里容器的默认命令),后面通过检查发现报错的节点上的velero image不是最新的,但tag确实是latest,确实是个坑

旧版本镜像是45.5MB,新版本镜像是59.7MB,使用crictl重新下载正常的镜像,然后使用nerdctl工具把新版本镜像的tag改成docker.io/velero/velero:latest(与daemonset里的一致),之后pods成功启动

卸载velero

kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero

四、备份、恢复k8s上的资源

使用官方案例创建测试应用

创建备份

到minio上查看备份数据

测试恢复

先删除nginx-example名称空间里的所有资源

创建恢复,再检查nginx-example名称空间里的资源,可以看到名称空间里的资源恢复回来了

备份命令参数

恢复命令参数

批量备份名称空间脚本,这个脚本定时执行即可达到定时备份所有名称空间的目的

五、资源迁移

这个架构里有个巧妙的地方是,如果两个k8s集群上都有velero,并且velero的后端存储指向同一个Bucket,这样这个Bucket可以当做共享存储来用,即从集群A备份出来的数据,可以轻松恢复到集群B上,这样也相当于一个迁移动作。

如上个步骤备份的nginx-backup1220可以在另一个集群上恢复,如下是在集群B上恢复了nginx-backup1220,从svc的cluster-ip可以看到这是另一个集群

从这个过程得知,如果多个集群上的velero的后端存储指向相同的Bucket,velero的备份可以在多个集群上共享使用。

更多自定义的备份恢复,后面再补充。。。

参考文章 https://www.cnblogs.com/wubolive/p/17345716.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/295117.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】MySQL的数据类型

MySQL的数据类型 一、数据类型分类二、数值类型1、整数类型2、bit类型3、小数类型 三、字符串类型四、时间日期类型五、enum和set类型enum和set查找 数据类型的作用: 决定了存储数据时应该开辟的空间大小和数据的取值范围。决定了如何识别一个特定的二进制序列。 …

【自营版】物流系统+取件员收件员/运营级快递系统小程序源码

后端php前端原生小程序 mysql数据库 主要功能: 寄快递 查快递 多门店 市内取送 取件员中心在线接单 提前预约 也可 立即下单 门店入住 取件员入住

需求分析工程师岗位的职责描述(合集)

需求分析工程师岗位的职责描述1 职责: 1,负责需求调研,对需求进行分析,编写解决方案、需求规格说明书等 2,根据需求制作原型,并负责原型展示以及客户沟通等工作 3,负责向技术团队精确地传达业务…

python算法例23 落单的数Ⅰ

1. 问题描述 给出2n1个非负整数元素的数组,除其中一个数字之外,其他每个数字均出现两次,找到这个数字。 2. 问题示例 给出[1,2,2,1,3,4,3],返回4。 3. 代…

Jenkins 插件管理指南

目录 常用插件 插件安装 已安装插件 installed plugins 常用插件 Docker Plugin: 这个插件让Jenkins能够与Docker容器平台进行集成。它允许在Jenkins构建过程中创建、管理和销毁Docker容器,为需要Docker化的项目提供了极大的便利性。对于需要在容器中…

2024年【安全生产监管人员】模拟考试题库及安全生产监管人员理论考试

题库来源:安全生产模拟考试一点通公众号小程序 安全生产监管人员模拟考试题库是安全生产模拟考试一点通总题库中生成的一套安全生产监管人员理论考试,安全生产模拟考试一点通上安全生产监管人员作业手机同步练习。2024年【安全生产监管人员】模拟考试题…

php反序列化漏洞原理、利用方法、危害

文章目录 PHP反序列化漏洞1. 什么是PHP反序列化漏洞?2. PHP反序列化如何工作?3. PHP反序列化漏洞是如何利用的?4. PHP反序列化漏洞的危害是什么?5. 如何防止PHP反序列化漏洞?6. PHP反序列化漏洞示例常见例子利用方法PH…

Ubuntu 常用命令之 mkfs 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 mkfs 是在 Linux 和其他 Unix-like 系统中用于创建文件系统的命令。在 Ubuntu 系统中,mkfs 命令也是用于创建文件系统的。mkfs 是一个包装器,它会根据用户指定的文件系统类型调用相应的程序。 mkfs 命令的…

宝塔面板 -- 创建第一个自己的网站

文章目录 前言 一、安装宝塔面板 二、注册宝塔面板 三、安装nginx 四、第一个hello world运行 五、总结 文章目录 前言一、安装宝塔面板二、注册宝塔面板三、安装nginx四、第一个hello world运行五、总结 前言 阿里云最近对在校大学生免费每人赠送一台服务器&#xff0c…

49.网游逆向分析与插件开发-游戏反调试功能的实现-软件调试器设计的基本原理

图0: 下方是一个简化过的代码 做一个软件调试器最基本的是,首先要调试一个进程那么就要有一个进程 拿x96dbg来讲调试一个进程有两种方式,第一种通过附加(如图1),通过附加可以对已经创建的进程进行调试&…

条款7:为多态基类声明虚析构函数

文章目录 虚析构函数声明虚析构函数的情况继承的情况总结 虚析构函数 纪录时间的方法很多,合理的做法是创建一个基类,并为不同的计时方法创建派生类: class TimeKeeper { public:TimeKeeper();~TimeKeeper();... }; class AtomicClock : public TimeKee…

RobotMaster学习——工序导入,参数设置,轨迹生成

目录 引出1.导入工序2.修改刀具其他刀具参数 3.进行工序分配4.设置TCP5.设置工作站6.工序整体导入配置7.进行计算 总结 引出 RobotMaster的操作流程,从导入工序到生产轨迹。 1.导入工序 2.修改刀具 要选择第七把刀具 其他刀具参数 第一把刀具 第二把刀具 第三把刀…