使用Velero备份K8S资源,看这篇干货就够了

news/2025/1/22 16:54:22/文章来源:https://www.cnblogs.com/cheyunhua/p/18334448

一、Velero简介

图片

 

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

Velero功能:

对群集进行备份,并在丢失时进行还原。

将集群资源迁移到其他集群。

Velero 包括:

在群集上运行的服务器

在本地运行的命令行客户端

开源地址:https://github.com/vmware-tanzu/velero

官方文档:Velero

velero备份流程

velero客户端调用kubernetes API Server创建backup任务

Backup控制器基于watch机制通过Api Server获取到备份任务

Backup控制器开始执行备份动作,会通过请求Api Server获取到需要备份的数据

Backup 控制器将获取到的数据备份到指定的对象存储server端




图片图片

二、准备后端存储

图片

 

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

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

1、下载minio的docker镜像

图片    

2、准备数据目录

# mkdir -pv /data/minio

3、docker部署minio

图片

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

MINIO_ROOT_USER

MINIO_ROOT_PASSWORD

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

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

图片

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

图片

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

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://100.149.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/774556.html

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

相关文章

锐龙ai 9 hx 370性能怎么样 锐龙ai9hx370相当于什么水平

锐龙ai 9 hx 370 采用 Zen5 架构, 4nm 工艺制程,拥有 12 核 24 线程,基础频率为 2.0GHz,最大加速频率可达 5.1GHz。三级缓存 24MB 热设计功耗(TDP) 28W 集成显卡 AMD Radeon 890M锐龙ai 9 hx 370性能怎么样这些点很重要 http://www.adiannao.cn/dy

NDM 小记

NDM 1、什么是ndm Neat Download Manager(简称 NDM)是一款免费且轻量级的多线程下载工具,支持 Windows 和 macOS 操作系统。这款软件的特点在于它能够有效地提升网络下载速度,并且具有简单的用户界面,易于上手。 最重要的是: 体积小 且 免费!!! 2、安装ndm下载地址…

HarmonyOS 集成 Flutter 问题记录

1、DevEco-Studio 升级到 DevEco-Studio NEXT Developer Beta2 5.0.3 版本之后报错:> hvigor ERROR: Schema validate failed.Detail: Please check the following fields. {instancePath: modules[2].srcPath,keyword: pattern,params: { pattern: ^(\\./|\\.\\./)[\\s\\S…

在react中使用Particles

step one首先封装一个粒子效果组件,option各项配置在tsparticles/react 有介绍。 // ParticleBackground.js import React, { useEffect, useState } from "react"; import { loadSlim } from "@tsparticles/slim"; import Particles, { initParticlesEn…

Game UI Kit 游戏UI 开发套件

Game UI Kit https://assetstore.unity.com/zh-CN/search#q=Game%20UI%20Kit%20 适合个人开发者 UI 套件

FreeRtos笔记1

记录学习过程: 了解简单的Arm架构,CPU中各种寄存器的作用:堆的含义(就是空闲的内存),堆的作用是用来管理这些内存(堆函数,链表):内存的栈-->每个任务都有独属于自己的栈,在自己的任务栈中会保存函数,局部变量,还有自己的现场:任务是如何进行的:任务的调度过程:

图片弹窗放大代码

代码链接 https://www.5axxw.com/questions/simple/37xmlj 效果图展示全屏展示

【日记】9 个发箍只有 2 个能压住头发……(513 字)

正文今天下午实在有些受不了,从正大门外走了出去。抬头望着天空,望着那些悠然自在纯白无暇的云,竟然有些眼睛疼,刺激到想要流泪。我在室内待得太久太久了。似乎很久没有在这种时间段出来过了。下午快下班的时候,有个客户拿了一张远古的转账支票出来,说要转账。我懵了,我…

go安装playwright-go

写go 调用Playwright时,遇到 could not start Playwright: please install the driver (v1.45.1) and browsers first: %!w(<nil>) 报错 解决方式:安装驱动和浏览器依赖。go run github.com/playwright-community/playwright-go/cmd/playwright install --with-deps 测…

论文阅读:End to End Chinese Lexical Fusion Recognition with Sememe Knowledge

模型论文中提出的模型旨在联合处理提及词汇和共指关系。 该模型由一个编码器、一个用于提及识别的CRF解码器和一个用于共指识别的BiAffine解码器组成。 此外,利用HowNet的sememe知识增强了编码器。基础模型编码器:利用 BERT 作为基本编码器:\[h_1 ... h_n = BERT(c_1,...,c_…

敏捷产品经理实训:成为高效产品领导者的秘诀

敏捷产品经理实训:成为高效产品领导者的秘诀​ 在当今快节奏的市场环境中,产品经理和产品负责人需要快速响应市场变化,推动产品创新,以满足用户不断变化的需求。敏捷产品经理实训课程专为产品经理和产品负责人设计,旨在帮助他们掌握敏捷方法,提高团队协作和产品开发效率,…