velero备份k8s集群
流程图
velero备份原理
- 本地 Velero 客户端发送备份指令。
- Kubernetes 集群内就会创建一个 Backup 对象。
- BackupController 监测 Backup 对象并开始备份过程。
- BackupController 会向 API Server 查询相关数据。
- BackupController 将查询到的数据备份到远端的对象存储。
velero的特点
- 支持kubernetes集群数据备份和恢复
- 支持将备份好的数据,恢复到其他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桶
部署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日志
日志出现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存储桶是否存在数据
验证备份带有pvc数据的pod
1、环境准备
- 1、创建pod、pvc资源
~/manifests# cat pod-pvc.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pvc
spec:containers:- image: nginxname: test-containervolumeMounts:- mountPath: /usr/share/nginx/html/name: test-volumevolumes:- name: test-volumepersistentVolumeClaim:claimName: myclaim~/manifests# cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: myclaim
spec:accessModes:- ReadWriteOncevolumeMode: Filesystemresources:requests:storage: 1GistorageClassName: 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-systemBackup 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-systemRestore 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:# 每六小时备份一次.所有namespacevelero create schedule NAME --schedule="*/1 * * * *"# 每六小时备份一次.所有namespacevelero 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.shcat > velero-auth.txt <<EOF
[default]
aws_access_key_id=admin
aws_secret_access_key=admin123
EOFvelero --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-systemshow: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); \donebackup-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-systemrestore:echo "恢复 $(NAMESPACE)"velero restore create --from-backup $(NAMESPACE)-backup-$(TIMESTAMP) -n velero-system ----kubeconfig=$(KUBECONFIG)
相关文章:

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

描述低轨星座的特点和通信挑战,以及它们在5G和B5G中的作用。
文章目录 2章4 章5章(没看)6章(没看) 2章 将卫星星座中每个物理链路中可实现的数据速率、传播延迟和多普勒频移与3GPP技术报告中的参数进行分析和比较[3]。 相关配置 面向连接的网络,预先简历链路 卫星和地面终端有…...

Spring Boot实践 --windows环境下 K8s 部署 Docker
第一步:搭建项目并制作合适的jar包 这里我们准备好前面项目 用户管理系统 项目里的jar包。测试功能,定时任务会每过10s打印一次日志: E:\test>java -jar demospringboot-0.0.1-SNAPSHOT.jar2023-11-01 20:24:21.059 INFO 11848 --- [ …...

Linux 将Qt程序打包为AppImage包
前言 在 Linux 环境下,开发完 Qt 程序后,也需要制作为一个安装包或者可执行文件进行分发。这里介绍使用 linuxdeployqt 将 Qt 程序打包为 .AppImage 应用程序(类似于 Windows 的绿色免安装软件) 环境配置 配置 Qt 环境变量 这…...

修复国产电脑麒麟系统开机出现initramfs 问题
目录预览 一、问题描述二、原因分析三、解决方案四、知识点呀initramfsBusyBox 五、参考链接 一、问题描述 国产麒麟系统出现 initramfs 模式 二、原因分析 一般在拷贝卡顿过程【强制关机】或者电【脑异常断电】的情况下概率性导致系统分区损坏,重启后大概率就会进…...

机器人控制算法—如何使用C++读取pgm格式的栅格地图并转化为ROS地图格式的data?
1.Introduction 近期正在做全局规划局部动态规划的项目,目前遇到的问题是,我们如何利用C处理pgm地图文件。即将地图信息要与像素点结合起来。所以我们需要知道地图读取和处理的底层原理,这样更好地在非ROS平台下移植。 2.Main 如下几条信息…...

牛客项目(五)-使用kafka实现发送系统通知
kafka入门以及与spring整合 Message.java import java.util.Date;public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;public int getId() {retur…...
计算机网络——第一章时延部分深入学习、相关习题及详细解析
目录 时延相关 习题1 习题1-改 习题2 时延相关 之前我们学习过,时延由发送时延、传播时延和处理时延三部分构成。 发送时延的计算公式为“分组长度除以发送速率”, 发送速率应该从网卡速率、信道带宽、以及对端的接口速率中取最小。 传播时延的计…...

CSS3媒体查询与页面自适应
2017年9月,W3C发布媒体查询(Media Query Level 4)候选推荐标准规范,它扩展了已经发布的媒体查询的功能。该规范用于CSS的media规则,可以为文档设定特定条件的样式,也可以用于HTML、JavaScript等语言。 1、媒体查询基础 媒体查询…...

UG\NX二次开发 超长的对象属性值,怎么设置
文章作者:里海 来源网站:里海NX二次开发3000例专栏 感谢粉丝订阅 感谢 Dr. Lin 订阅本专栏,非常感谢。 简介 使用UF_ATTR_assign设置对象属性,如果属性值超过UF_ATTR_MAX_STRING_LEN则会报错。 #define UF_ATTR_MAX_STRING_LEN 132 怎么办呢?下面这种方法可以解决: 效果 …...

流媒体服务实现H5实时预览视频
目录 背景方案业务实践细节注意 待办 背景 客户aws服务磁盘存储告急,最高可扩容16T。排查如下:主要是视频文件存在大量复制使用的情况。例如发布节目时复制、预览时复制,这样上传一份视频后最大会有四份拷贝(预览、普通发布、互动…...

C++适配器
文章目录 引言栈和队列 priority_queue仿函数迭代器区间 引言 栈的特性是先进后出,队列的特性是先进先出,然而双向队列同时具有栈和队列的特性,所以我们可以通过双向队列来适配出栈和队列。 先看库里面 栈和队列 stack和queue模板参数里面都…...

基于openresty waf二次开发多次匹配到的ip再做拉黑
我们想在openresty waf的基础上做二次开发,比如再精确一些。比如我们先匹配到了select的url我们先打分10分,匹配到cc 1000/s我们再给这个ip打10分…直到100分我们就拉黑这个ip。 [openresty waf][1] #cat reids_w.lua require lib local redis require…...

新一代构建工具Vite-xyphf
一、什么vite? vite:是一款思维比较前卫而且先进的构建工具,他解决了一些webpack解决不了的问题——在开发环境下可以实现按需编译,加快了开发速度。而在生产环境下,它使用Rollup进行打包,提供更好的tree-shaking、代码压缩和性能优化&…...

Flink源码解析三之执行计划⽣成
JobManager Leader 选举 首先flink会依据配置获取RecoveryMode,RecoveryMode一共两两种:STANDALONE和ZOOKEEPER。 如果用户配置的是STANDALONE,会直接去配置中获取JobManager的地址如果用户配置的是ZOOKEEPER,flink会首先尝试连接zookeeper,利用zookeeper的leadder选举服务发现…...

Flutter 常见错误记录总结
1、当 flutter pub get 指令报如下错误时: pub get failed command: "/Users/***/developer/flutter/bin/cache/dart-sdk/bin/dart __deprecated_pub --color --directory . get --example" pub env: { "FLUTTER_ROOT": "/Users/***/dev…...

[ASP]校无忧在线报名系统 v2.1
校无忧在线报名系统为了满足各地不同的报名人员的需求,为提供更为高效、方便、快捷的报名条件,同时也为减轻管理人员的工作难度;更为协调报名人员与管理人员的关系,快速提高了报名人员与管理人员的工作效率应运而生。系统适用于政…...

【Hydro】部分基流分割方法及程序代码说明
目录 说明一、数字滤波法单参数数字滤波Lyne-Hollick滤波法Chapman滤波法Chapman-Maxwell滤波法Boughton-Chapman滤波法 双参数滤波法Eckhardt滤波法 二、其他基流分割方法基流指数(BFI)法时间步长(HYSEP)法PART法加里宁-阿里巴扬…...

C#Regex正则表达式(Regular Expression)
在C#中,Regex是正则表达式(Regular Expression)的缩写,它是一种强大的文本匹配和处理工具。正则表达式是一种用于描述模式的字符串,它可以用来在文本中查找、替换和提取满足特定模式的内容。 在C#中,你可以…...

Wi-Fi还可以做什么?柯南解释IOT应用
大会报告:无线人工智能技术正在改变世界 Wi-Fi还可以做什么?随着带宽的提升,无线终端可以识别出更多的多径,每条多径都可以视作一个虚拟传感器,以感知周边环境。基于此,越来越多的无线感知产品应运而生。20…...

centos部署java程序
后台启动java程序 nohup java -jar -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/data/app1/logs/ /data/app1.jar --spring.config.location/data/app1/config/application.properties,/data/app1/config/application-dev.properties > /data/app1/logs 2>&1…...

Sqoop导入到Hive,Hive使用 HA
Sqoop写入Hive卡在连接Hive的JDBC上不执行 Sqoop访问 启用 HA模式的Hive 找到Hive的安装根目录:$HIVE_HOME/conf 创建一个新的配置文件:beeline-hs2-connection.xml <?xml version"1.0"?> <?xml-stylesheet type"text/xsl…...

[笔记] %的含义
取模 不赘述。 引导符 重点说一下在printf("%d", n);中的意思。 这里的意思是:将""外对应位置的结果返回给引导符所在的位置, %后面跟着的是结果对应的数据类型, 只有数据类型匹配才能正确输出结果。...

FRI及相关SNARKs的Fiat-Shamir安全
1. 引言 本文主要参考: Alexander R. Block 2023年论文 Fiat-Shamir Security of FRI and Related SNARKsAlbert Garreta 2023年9月在ZK Summit 10上分享 ZK10: Fiat-Shamir security of FRI and related SNARKs - Albert Garreta (Nethermind) 评估参数用的Sage…...

TensorFlow案例学习:使用 YAMNet 进行迁移学习,对音频进行识别
前言 上一篇文章 TensorFlow案例学习:简单的音频识别 我们简单学习了音频识别。这次我们继续学习如何使用成熟的语音分类模型来进行迁移学习 官方教程: 使用 YAMNet 进行迁移学习,用于环境声音分类 模型下载地址(需要科学上网&…...

MySQL CHAR 和 VARCHAR 的区别
文章目录 1.区别1.1 存储方式不同1.2 最大长度不同1.3 尾随空格处理方式不同1.4 读写效率不同 2.小结参考文献 在 MySQL 中,CHAR 和 VARCHAR 是两种不同的文本数据类型,CHAR 和 VARCHAR 类型声明时需要指定一个长度,该长度指示您希望存储的最…...

虚拟机 ping: www.baidu.com:未知的名称或服务
1、打开ifcfg-ens33文件 vi /etc/sysconfig/network-scripts/ifcfg-ens332、如下,加上网关和dns就行了,紫色部分,也就是DNS1“114.114.114.114” TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no" BOOTP…...

第二章 Python字符串处理
系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…...

混合编程 ATPCS规范及案例(汇编调用C、C调用汇编、内联汇编)
1.混合编程的规范 2.汇编调用C 2.C调用汇编 3.内联汇编 例子:...

使用Gorm进行CRUD操作指南
使用GORM在Go中创建、读取、更新和删除记录的逐步教程 在数据库管理中,CRUD操作是应用程序的支柱,它们使数据的创建、检索、更新和删除成为可能。强大的Go对象关系映射库GORM通过抽象SQL语句的复杂性,使这些操作变得轻松。本文将作为您全面指…...