velero备份k8s集群

news2024/11/24 6:45:10

流程图

img

img

velero备份原理

  1. 本地 Velero 客户端发送备份指令。
  2. Kubernetes 集群内就会创建一个 Backup 对象。
  3. BackupController 监测 Backup 对象并开始备份过程。
  4. BackupController 会向 API Server 查询相关数据。
  5. BackupController 将查询到的数据备份到远端的对象存储。

velero的特点

  1. 支持kubernetes集群数据备份和恢复
  2. 支持将备份好的数据,恢复到其他kubernetes集群(前提是前一个集群所用到的资源(如存储)以及kubernetes不能夸大版本,否则会恢复不了)

安装minio对象存储

1、下载minio镜像

docker pull minio/minio:latest

2、准备minio挂载目录

mkdir -pv /velvero/data

3、启动minio

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

MINIO_ROOT_USER= 指定minio用户

MINIO_ROOT_PASSWORD 指定用户密码

--console-address 指定控制台监听地址和端口

4、创建buckets桶

img

img

部署velero

1、下载/配置velero二进制客户端工具

~# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
~# tar xvf velero-v1.8.1-linux-amd64.tar.gz 
~# cp velero-v1.8.1-linux-amd64/velero  /usr/local/bin/
~# velero  --help

安装velero资源

1、创建velero-system名称空间

kubectl create ns velero-system

2、创建velero组件

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

关键参数解读:

--kubeconfig 指定集群认证文件

--provider 声明velero使用的存储插件类型

--use-restic 使用开源免费的备份工具restic备份和还原持久卷数据

--secret-file 指定对象存储的账号密码

--use-volume-snapshots=false 关闭存储卷快照数据快照方式备份

--namespace 指定velero安装在那个名称空间

default-volumes-to-restic使用rustic 来备份所有pod卷,前提是需要提前开启 --use-restic 参数

验证功能

# kubectl get pod -nvelero-system
NAME                      READY   STATUS    RESTARTS   AGE
velero-858b9459f9-m6zm4   1/1     Running   0          46h

查看velero日志

img

日志出现Backup storage location valid, marking as available表示velero运行正常

创建备份

# velero backup create myserver-ns-backup-${DATE} --include-namespaces default 【--kubeconfig=/root/.velero/config】 --namespace velero-system
Backup request "myserver-ns-backup-20220808025816" submitted successfully.
Run `velero backup describe myserver-ns-backup-20220808025816` or `velero backup logs myserver-ns-backup-20220808025816` for more details.

--include-namespaces 指定需要备份的名称空间

--kubeconfig指定k8s认证文件 注意:如果使用的是k8s默认的.kube目录下的认证文件可以不用该参数

--namespace指定velero contallor所在的名称空间

查看velero备份是否成功

  • 1、查看日志
  • 2、get备份信息
# velero backup get -nvelero-system
NAME                                STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
myserver-ns-backup-20220808025954   Completed   0        0          2022-08-08 03:00:02 +0000 UTC   29d       default            <none>
myserver-ns-backup-20220808025816   Completed   0        0          2022-08-08 02:58:19 +0000 UTC   29d       default            <none>
  • 3、查看minio存储桶是否存在数据

img

验证备份带有pvc数据的pod

1、环境准备

  • 1、创建pod、pvc资源
~/manifests# cat pod-pvc.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-pvc
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /usr/share/nginx/html/
      name: test-volume
  volumes:
  - name: test-volume
    persistentVolumeClaim:
        claimName: myclaim
        
        
~/manifests# cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs-client
  
  
  
  ~/manifests# kubectl get pod
NAME                                     READY   STATUS    RESTARTS   AGE
test-pvc                                 1/1     Running   0          31s
root@k8s-eploy:~/manifests# kubectl get pvc
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
myclaim   Bound    pvc-f5e4f5d4-c829-49b9-89fa-568587796e46   1Gi        RWO            nfs-client     40s
  • 2、增添数据
:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# ls
root@k8s-eploy:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# echo test pv > index.html
root@k8s-eploy:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# ls
index.html
root@k8s-eploy:/data/nfs/default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46# cat index.html
test pv

2、备份数据

  • 1、执行备份命令
velero backup create  \
default-ns-backup-`date +%Y%m%d%H%M%S` \
--default-volumes-to-restic \ 
--snapshot-volumes  \
--include-namespaces default \ 
-nvelero-system

Backup request "default-ns-backup-20220808131011" submitted successfully.
Run `velero backup describe default-ns-backup-20220808131011` or `velero backup logs default-ns-backup-20220808131011` for more details.
  • 2、查看备份信息
~# velero backup get -nvelero-system
NAME                               STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
default-ns-backup-20220808131011   Completed   0        0          2022-08-08 13:10:11 +0000 UTC   29d       default            <none>

3、模拟意外删除资源及pvc数据

1、删除pod、pvc及数据

root@k8s-eploy:~/manifests# ls
pod-pvc.yaml  pvc.yaml


~/manifests# kubectl delete -f ./
pod "test-pvc" deleted
persistentvolumeclaim "myclaim" deleted



/data/nfs# rm -rf archived-default-myclaim-pvc-f5e4f5d4-c829-49b9-89fa-568587796e46

2、还原备份

:/data/nfs# velero restore create \
--from-backup default-ns-backup-20220808131011 \
-nvelero-system


Restore request "default-ns-backup-20220808131011-20220808132317" submitted successfully.
Run `velero restore describe default-ns-backup-20220808131011-20220808132317` or `velero restore logs default-ns-backup-20220808131011-20220808132317` for more details.

3、查看pod数据是否恢复

:/data/nfs# kubectl get pod
NAME                                     READY   STATUS    RESTARTS   AGE
test-pvc                                 1/1     Running   0          49s


:/data/nfs# kubectl get pvc
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
myclaim   Bound    pvc-9bb398e3-0883-402e-a1c7-d345d2cb2750   1Gi        RWO            nfs-client     106s

4、查看pvc数据是否恢复

:/data/nfs/default-myclaim-pvc-9bb398e3-0883-402e-a1c7-d345d2cb2750# ls
index.html

定时备份

Usage:
  velero schedule create NAME --schedule [flags]

Examples:
  # 每六小时备份一次.所有namespace
  velero create schedule NAME --schedule="*/1 * * * *"

  # 每六小时备份一次.所有namespace
  velero create schedule NAME --schedule="@every 6h"

  # 每24小时备份一次 web namespace的数据
  velero create schedule NAME --schedule="@every 24h" --include-namespaces web

  # 7天备份一次所有名称空间数据,备份保存90天
  velero create schedule NAME --schedule="@every 168h" --ttl 2160h0m0s
 cat deploy.sh

cat > velero-auth.txt  <<EOF
[default]
aws_access_key_id=admin
aws_secret_access_key=admin123
EOF

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

编写好的makefile

.DELETE_ON_ERROR:
TIMESTAMP := $(shell date +%s)
KUBECONFIG=./config
NAMESPACE ?= velero-system

show:
        velero backup get -n  $(NAMESPACE) --kubeconfig=$(KUBECONFIG)
deploy:
        ./deploy.sh
un:
         velero uninstall  -n  $(NAMESPACE) --kubeconfig=$(KUBECONFIG) 
del:
            @for i in $$(velero backup get -n $(NAMESPACE) --kubeconfig=$(KUBECONFIG) | awk '{print $$1}'); do \
                            velero backup delete $$i -n $(NAMESPACE) --kubeconfig=$(KUBECONFIG); \
                                done

backup-restic:
				echo "备份带pvc数据的 $(NAMESPACE)"
        velero backup create $(NAMESPACE)-backup-$(TIMESTAMP) --default-volumes-to-restic --snapshot-volumes         --include-namespaces  $(NAMESPACE)  --kubeconfig=./config   --namespace velero-system
backup:
      echo "备份不带pvc的$(NAMESPACE)"
			velero backup create $(NAMESPACE)-backup-$(NAMESPACE) --include-namespaces $(NAMESPACE)  --kubeconfig=$(KUBECONFIG)  --namespace velero-system

restore:
		echo "恢复 $(NAMESPACE)"
		velero restore create --from-backup  $(NAMESPACE)-backup-$(TIMESTAMP)   -n  velero-system ----kubeconfig=$(KUBECONFIG)



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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习】pytorch——Tensor(张量)详解

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ pytorch——Tensor 简介创建Tensortorch.Tensor( )和torch.tensor( )的区别torch.Tensor( )torch.tensor( ) tensor可以是一个数&#xff08;标量&#xff09;、一维数组&#xff08;向量&#xff09;、二维数组&…

EasyExcel动态复杂表头导出方法

目录 需求分析解决方案数据问题数据导入 需求分析 公司数据比较特殊有一部分数据需要动态修改导致信息导入时表头是不确定的&#xff0c;但其中又有一部分表头是固定的&#xff0c;如下图所示&#xff0c;如果表头全部是固定的话可以通过EasyExcel实体类的注解很轻松的解决&am…

Linux CentOS7.9安装OpenJDK17

Linux CentOS7.9安装OpenJDK17 一、OpenJDK下载 清华大学开源软件镜像站 国内的站点&#xff0c;下载速度贼快 二、上传解压 文件上传到服务器后&#xff0c;解压命令&#xff1a; tar -zxvf jdk-xxxx-linux-x64.tar.gz三、配置环境 export JAVA_HOME/home/local/java/j…

ffmpeg mp3截取命令,视频与mp3合成带音频视频命令

从00:00:03.500开始截取往后长度到结尾的mp3音频&#xff08;这个更有用&#xff0c;测试好用&#xff09; ffmpeg -i d:/c.mp3 -ss 00:00:03.500 d:/output.mp3 将两个音频合并成一个音频&#xff08;测试好用&#xff09; ffmpeg -i "concat:d:/c.mp3|d:/output.mp3&…

Linux C语言进阶-D10指针数组

指针变量构成的数组 理解下面printf中的a和p的表示&#xff0c;其中p[0]、p[1]、p[2]表示存储的a,a1和a2这几个地址&#xff0c;而再加个*&#xff0c;相当于对地址解引用&#xff0c;从而得到数组中的值。 如下图&#xff0c;要想得到a[0][1]的值可以直接打印a[0][1]&#xf…

使用pytorch处理自己的数据集

目录 1 返回本地文件中的数据集 2 根据当前已有的数据集创建每一个样本数据对应的标签 3 tensorboard的使用 4 transforms处理数据 tranfroms.Totensor的使用 transforms.Normalize的使用 transforms.Resize的使用 transforms.Compose使用 5 dataset_transforms使用 1 返回本地…

YOLOv5:修改backbone为SPPCSPC

YOLOv5&#xff1a;修改backbone为SPPCSPC 前言前提条件相关介绍SPPCSPCYOLOv5修改backbone为SPPCSPC修改common.py修改yolo.py修改yolov5.yaml配置 参考 前言 记录在YOLOv5修改backbone操作&#xff0c;方便自己查阅。由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬…

一文读懂最小相位滤波器和线性相位滤波器

一文读懂最小相位滤波器和线性相位滤波器 1. 举例说明2. 最小相位定义2.1 最小相位多项式2.2 最大相位滤波器2.3 最小相位意味最快的衰减2.4 最小相位/全通分解 3. 建立最小相位系统 前一篇博客 《一文读懂滤波器的线性相位&#xff0c;全通滤波器&#xff0c;群延迟》 详细解…

curl(二)HTTP协议和头

一 HTTP协议相关 ① 强制发出请求的http1.0 7.29 版本默认是http1.1 ② 查看当前curl版本是否支持http2 方式2: curl --version看Features 补充&#xff1a; 7.33.0 版本才引入 http2,才能使用curl发出http2.0版本的请求 ③ 强制发送http3 说明&#xff1a; 了解即可 二…

DevChat:超越编码的未来 - 优势、安装、使用、以及未来前景

目录 前言1 DevChat的优势1.1 精确的上下文控制1.2 灵活的提示管理1.3 上下文构建1.4 提前准备好的提示模板1.5 高级命令控制 2 安装DevChat插件3 使用DevChat插件3.1 代码生成3.2 文档撰写3.3 解释代码3.4 解决问题3.5 版本控制 4 DevChat的未来前景结语 前言 在软件开发领域…

Docker 多阶段构建的原理及构建过程展示

Docker多阶段构建是一个优秀的技术&#xff0c;可以显著减少 Docker 镜像的大小&#xff0c;从而加快镜像的构建速度&#xff0c;并减少镜像的传输时间和存储空间。本文将详细介绍 Docker 多阶段构建的原理、用途以及示例。 Docker 多阶段构建的原理 在传统的 Docker 镜像构建…

阿里面试:让代码不腐烂,DDD是怎么做的?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 谈谈你的高并发落地经验&#xff1f; 谈谈你对DDD的理解&#xf…

CIM与MES

CIM系统&#xff0c;全称计算机集成制造系统&#xff08;Computer-Integrated Manufacturing&#xff09;&#xff0c;是一种集成了计算机技术、网络通讯技术和软件系统的制造自动化框架。CIM的主要目标是整合制造过程中的所有活动&#xff0c;包括生产管理、设备管理和品质管理…

物流小程序制作教程:从零到有,详细解析

随着互联网的快速发展&#xff0c;物流行业也逐渐实现了数字化转型。为了满足消费者对更加便捷、高效的服务需求&#xff0c;许多物流企业选择制作自己的小程序。本文将通过乔拓云网后台&#xff0c;带你轻松搭建物流小程序&#xff0c;主要分为以下几个部分&#xff1a; 一、进…

设置echarts折线图虚线

itemStyle:{normal: {lineStyle: { type: solid}}}itemStyle:{normal: {lineStyle: { type: dashed}}}放到每个红框里面

梯度消失和梯度爆炸的原因

梯度消失和梯度爆炸 梯度爆炸和梯度消失本质上是因为梯度反向传播中的连乘效应。 梯度下降算法 举一个简单的例子,函数表达式为loss 2w^2 4w,如下图 ​​​​​​​ ​​​​​​​ 为了求得w的最优值,使得loss最小,从上图很容易看出来当w -1时,loss最小…

ER图设计神器,帮你省时省力,高效完成工作!

ER图&#xff08;Entity-Relationship Diagram&#xff09;工具用于设计数据库模型&#xff0c;通常用于表示数据实体、关系和属性之间的关系。以下是10个好用的ER图工具。 一、Lucidchart Lucidchart 是一款基于云的协作式图表设计工具&#xff0c;它允许用户创建、编辑和共享…

SAP发票及复制控制

一、概述 众所周知&#xff0c;SAP为业财一体化的ERP管理系统&#xff0c;因此财务发票必不可少&#xff0c;很多外贸企业还会用到形式发票。 发票相关的配置主要包含&#xff1a;发票类型、复制控制、发票定价以及自动过账的配置。 二、系统配置 1. 发票类型 1.1 概述 发…

Latex安装使用教程

在论文投稿时有些期刊要求使用Latex格式&#xff0c;比如博主现在就遇到了这个问题&#xff0c;木有办法&#xff0c;老老实实的学呗。大家可以去官网下载&#xff0c;但官网的界面设计属实有些一言难尽&#xff0c;因此我们可以使用国内的镜像。 LaTeX 基于 TeX&#xff0c;主…

2023年双十一第2波红包活动淘宝天猫京东双11红包领取优惠券跨店满多少减多少规则?

本文为大家提供众多福利&#xff1a; 2023年淘宝/天猫双十一红包第2波活动时间与领取入口&#xff0c;最高23888超级红包 2023年京东双十一红包第2波活动时间与领取入口&#xff0c;最高11111京享红包 草柴APP领淘宝/天猫、京东大额内部隐藏优惠券&#xff0c;拿购物返利 美…