基于velero+minio对k8s进行备份和恢复

author author     2023-03-17     650

关键词:

velero介绍​

Velero 是由vmware公司团队研发开源工具,用于安全地备份、恢复和迁移 Kubernetes 集群和持久卷。它可以在本地和公共云中运行。Velero 由一个在您的 Kubernetes 集群中作为部署运行的服务器进程和一个命令行界面 (CLI) 组成,DevOps 团队和平台操作员可通过该界面配置计划备份、触发临时备份、执行恢复等。官网地址:​​https://velero.io/​

基于velero+minio对k8s进行备份和恢复_备份文件

基于velero+minio对k8s进行备份和恢复_备份文件_02


安装minio

1、创建minio数据目录

mkdir -pv /data/minio/data

2、下载镜像

docker pull minio/minio

3、启动镜像

docker run --name minio \\
-p 9000:9000 \\
-p 9999:9999 \\
-d --restart=always \\
-e "MINIO_ROOT_USER=admin" \\
-e "MINIO_ROOT_PASSWORD=12345678" \\
-v /data/minio/data:/data \\
minio/minio server /data \\
--console-address 0.0.0.0:9999

​4、浏览器访问:​​http://ip:9999​​

基于velero+minio对k8s进行备份和恢复_Backup_03

5、创建目录

基于velero+minio对k8s进行备份和恢复_Backup_04

基于velero+minio对k8s进行备份和恢复_Backup_05

基于velero+minio对k8s进行备份和恢复_备份文件_06

安装velero

在master节点上面安装velero

​下载velero客户端

​​       ​​https://github.com/vmware-tanzu/velero/releases​

基于velero+minio对k8s进行备份和恢复_docker_07

解压velero到/usr/local/bin

tar xvf velero-v1.9.6-linux-amd64.tar.gz
cp velero /usr/local/bin/
chmod +x /usr/local/sbin/velero

​测试使用

​velero --help

基于velero+minio对k8s进行备份和恢复_docker_08

配置auth认证信息

mkdir /data/velero -p
cd /data/velero
root@easzlab-k8s-master-01:/data/velero# cat velero-auth.txt
[default]
aws_access_key_id = admin
aws_secret_access_key = 12345678

创建namespaces

kubectl create ns velero-system

启动服务:

velero --kubeconfig /root/.kube/config \\
install \\
--provider aws \\
--plugins velero/velero-plugin-for-aws:v1.3.1 \\
--bucket velerodata \\
--secret-file ./velero-auth.txt \\
--use-volume-snapshots=false \\
--namespace velero-system \\
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://192.168.0.201:9000/

查看镜像日志

[root@master1 ~]# kubectl logs deployments/velero -nvelero-system

确保正常连接至minio.

基于velero+minio对k8s进行备份和恢复_Backup_09

使用velero进行备份

[root@master1 ~]# DATE=`date +%Y%m%d%H%M%S`
[root@master1 ~]# velero backup create default-backup-$DATE --include-cluster-resources=tru --include-namespaces kube-system --kubeconfig=/root/.kube/config --namespace velero-system
Backup request "default-backup-20230316213429" submitted successfully.
Run `velero backup describe default-backup-20230316213429` or `velero backup logs default-bacup-20230316213429` for more details.
[root@master1 ~]# velero backup create myserver-backup-$DATE --include-cluster-resources=tre --include-namespaces myserver --kubeconfig=/root/.kube/config --namespace velero-system
Backup request "myserver-backup-20230316213429" submitted successfully.
Run `velero backup describe myserver-backup-20230316213429` or `velero backup logs myserver-bckup-20230316213429` for more details.

查看备份

[root@master1 ~]# velero backup get --kubeconfig=/root/.kube/config --namespace velero-system

基于velero+minio对k8s进行备份和恢复_Backup_10

查看minio

基于velero+minio对k8s进行备份和恢复_docker_11

批量备份所有namespace

编写脚本自动备份

[root@master1 velero]# vim backupvelero.sh
#!/bin/bash
NS_NAME=$(kubectl get ns |awk if(NR>1)print $1)
DATE=$(date +%Y%m%d%H%M%S)
cd /data/velero/

for i in $NS_NAME;do
velero backup create $i-ns-backup-$DATE \\
--include-cluster-resources=true \\
--include-namespaces $i \\
--kubeconfig=/root/.kube/config \\
--namespace velero-system
done

基于velero+minio对k8s进行备份和恢复_docker_12

从备份文件恢复

[root@master1 velero]# kubectl get pod
NAME READY STATUS RESTARTS AGE
test 1/1 Running 0 9m2s
test2 1/1 Running 23 (123m ago) 116d
test3 1/1 Running 23 (123m ago) 116d

基于velero+minio对k8s进行备份和恢复_备份文件_13

删除pod

[root@master1 velero]# kubectl delete pod test
pod "test" deleted
[root@master1 velero]# kubectl get pod
NAME READY STATUS RESTARTS AGE
test2 1/1 Running 23 (133m ago) 116d
test3 1/1 Running 23 (133m ago) 116d
[root@master1 velero]#

使用备份还原

[root@master1 velero]# velero restore create --from-backup test-ns-backup-20230316213943 --wait --kubeconfig=/root/.kube/config --namespace velero-system            Restore request "test-ns-backup-20230316213943-20230316220740" submitted successfully.
Waiting for restore to complete. You may safely press ctrl-c to stop waiting - your restore will continue in the background.
..................
Restore completed with status: Completed. You may check for more information using the commands `velero restore describe test-ns-backup-20230316213943-20230316220740` and `velero restore logs test-ns-backup-20230316213943-20230316220740`.
[root@master1 velero]# kubectl get pod
NAME READY STATUS RESTARTS AGE
test 1/1 Running 0 22s
test2 1/1 Running 23 (134m ago) 116d
test3 1/1 Running 23 (134m ago) 116d


k8s:通过velero实现集群备份和恢复(代码片段)

...是存活的。Velero适用于集群迁移,k8s子集备份恢复,比如基于命名空间备份。某个命名空间误删,且YAML文件没有备份,那么可以Velero快速恢复。涉及多API资源对象的系统升级,可以做升级前备份,升 查看详情

velero安装及测试

velero安装及测试与Etcd备份相比,直接备份Etcd是将集群的全部资源备份起来。而velero是可以对k8s集群内对象级别进行备份。除了对k8s集群进行整体备份外,velero还可以通过对Type、NameSpace、Label等对象进行分类备份或者恢复。<!--br... 查看详情

关于k8s集群备份和恢复工具velero的一些笔记整理(代码片段)

写在前面分享一个k8s集群容灾备份恢复开源工具Velero博文内容涉及:Velero的简单介绍Velero安装下载备份恢复Demo,以及容灾测试Demo恢复失败情况分析理解不足小伙伴帮忙指正我所渴求的,無非是將心中脫穎語出的本性... 查看详情

详解kubernetes备份恢复利器velero-深入了解carina系列第三期

...备份方案主要有两种,一种是利用存储数据的服务端实现基于快照的备份,另一种是在每台目标服务器上部署专有备份agent并指定备份数据目录,定期把数据复制到外部存储上。这两种方式的备份机制相对固化,在云原生时代无... 查看详情

使用velero去备份k8s集群(代码片段)

先决条件:k8s>1.10,主要考虑restic的兼容性集群内部署dns已经安装kubectlvelero安装下载velerowgethttps://github.com/vmware-tanzu/velero/releases/download/v1.5.2/velero-v1.5.2-linux-amd64.tar.gztar-zxvfvelero-v1.5.2-linux-amd64. 查看详情

minio笔记3--基于k8s搭建minio集群

minio笔记3--基于k8s搭建minio集群​​介绍​​​​安装单个节点​​​​安装minio集群​​​​注意事项​​​​说明​​介绍笔者在​​minio笔记01–部署与测试minio​​​和​​minio笔记02–基于swarm搭建minio集群​​​中介绍了m... 查看详情

tidboperator恢复持久卷上的备份文件

...上的备份数据恢复到K8S集群环境上。本文介绍的恢复方法基于TiDBOperator的CustomResourceDefinition(CRD)实现,底层使用​​BR​​工具来恢复数据。BR全称为Backup&Restore,是TiDB分布式备份恢复的命令行工具,用于对TiDB集群进行数据备... 查看详情

k8s容灾方案的五个关键点

...进行重新设计,并按Kubernetes的原生方式来运行。传统的基于VM的备份和恢复解决方案,使用快照来收集数据,但这些数据对于某个具体容器化应用并不足够。因为任何一个特定的VM都将包含来自多个应用的数据。如果您尝试通过V... 查看详情

如何在本地安装 Velero

】如何在本地安装Velero【英文标题】:HowtoinstallVeleroonpremise【发布时间】:2022-01-0201:56:10【问题描述】:我正在关注thistutorial安装Velero来备份我的集群。我已成功安装Minio部署,但在安装Velero本身时遇到问题。当我运行命令时:v... 查看详情

三十五、elasticsearchi基于snapshot+hadoophdfs进行数据备份和恢复

参考技术A一、es生产集群备份恢复之基于snapshot+hdfs进行数据备份1、es集群数据备份任何一个存储数据的软件,都需要定期的备份数据。esreplica提供了运行时的高可用保障机制,可以容忍少数节点的故障和部分数据的丢失,但是... 查看详情

使用 Java 对 mysql 数据库进行简单备份和恢复

】使用Java对mysql数据库进行简单备份和恢复【英文标题】:SimpleBackupandRestoreformysqlDatabasefromJava【发布时间】:2013-02-1718:53:56【问题描述】:如何从java代码中备份mysql数据库:它的保存路径是动态分配的。Path中的空格不会产生问... 查看详情

ceph中rbd的增量备份和恢复(代码片段)

...虚机备份和恢复的实验步骤:1.前言:?快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的数据没有破坏,举个简单的例子,Vmware里面对虚拟机做了一个快照... 查看详情

大型数据库作业(代码片段)

...何根据数据库损坏情形不同进行数据库恢复。完全恢复(基于数据文件的完全恢复,基于表空间的完全恢复,基于数据库的完全恢复)不完全恢复(基于时间的不完全恢复,基于SCN和CANCEL的不完全恢复)简述使用RMAN进行数据库备份与恢复... 查看详情

redis数据库备份、迁移、恢复实践

...及用户账号后恢复方法流程,实际环境中建议利用rdb文件进行重新部署。2.Kubernetes中单实例异常数据迁移恢复实践方案1.利用其他kubernetes集群进行恢复原k8s集群的redis数据。命令执行示例:Tips:从上述恢复结果可以看出以aof方式恢... 查看详情

oracle数据库实验--oracle数据库备份(代码片段)

...份过程。二、实验内容及步骤1、利用EnterpriseManager中进行基于磁盘的备份配置,配置要求:1)并行度:要求根据CPU实际情况进行配置。无2)磁盘备份位置:要求RMAN可以直接将备份数据保存到快速恢复区。... 查看详情

minio分布式集群搭建(代码片段)

...代阿里云OSS,并为K8S提供对象存储服务。简介MinIO是一个基于ApacheLicensev2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟... 查看详情

基于elasticsearch和elastalert的备份状态检查(代码片段)

一,业务背景数据的备份(恢复)对于企业来说,是挽救生命的最后一根稻草;也是运维日常工作的一个重要组成部分。目前流行的方式是采用脚本对数据进行备份,并同步到远端进行异地备份。一旦需要备份的数据多了后,会... 查看详情

mysql数据库备份恢复

...据二进制恢复数据居于二进制日志中的位置恢复数据配置基于二进制日志中的开始和结束时间恢复数据​使用MySQL配置完整备份登录MySQL数据库创建HB3035数据库中创建student表设置表结构表中插入数据使用MySQL备份数据备份HB3035数... 查看详情