k8s备份恢复实践--velero
k8s备份恢复实践--velero
使用Velero备份k8资源到minio,阿里云oss,七牛云Kodo
环境linux + kubectl
#1.velero简介
- Velero是用于Kubernetes资源备份、恢复、迁移的开源工具
- 客户端(velero命令行) -> 服务端(部署在k8s) -> 对象储存(s3或兼容s3储存)
- velero将k8s资源备份为json文件,可以通过namespace、label等进行筛选备份或恢复
- github地址 https://github.com/vmware-tanzu/velero
#2.velero安装
#2.1 安装velero客户端
#wget https://github.com/vmware-tanzu/velero/releases/download/v1.13.2/velero-v1.13.2-linux-amd64.tar.gz
wget http://files.elvin.vip/k8s/velero-v1.13.2-linux-amd64.tar.gz
tar -zxf velero-v1.13.2-linux-amd64.tar.gz
mv velero-v1.13.2-linux-amd64/velero /usr/local/bin/
velero version
#启用命令补全
velero completion bash > /etc/bash_completion.d/velero
. /etc/bash_completion.d/velero
#查看帮助
velero -h
#2.2 安装velero服务端
在kubernetes集群安装velero 需要配置好kubectl和kubeconfig
#查看k8s node
kubectl get node
#2.2.1 k8s安装velero使用minio储存
docker安装mino
#创建minio
docker rm -f minio
docker run -dit --name minio -u 0 \
-h minio --net host --restart always \
-e MINIO_ROOT_USER="minio" \
-e MINIO_ROOT_PASSWORD="miniow2p0w2r4" \
-v /data/minio:/data -w /data \
registry.aliyuncs.com/elvin/minio:2022 \
minio server /data --console-address '0.0.0.0:9001'
#创建bucket velero
docker exec -it minio bash -c 'mc mb velero; mc ls'
#minio储存地址 http://minio-ip:9000
k8s安装minio
kubectl -f https://gitee.com/alivv/elvin-demo/raw/master/k8s/3.data-minio.yml
#volumes使用hostPath: /opt 可根据需求修改pvc部分
#minio储存地址 http://minio.kube-public.svc:9000
安装velero使用k8s-minio储存
#创建凭证 create auth
mkdir -p /k8s/velero
cat >~/k8s/velero/auth-minio.txt <<EOF
[default]
aws_access_key_id = minio
aws_secret_access_key = miniow2p0w2r4
EOF
#velero install
velero install \
--image registry.aliyuncs.com/elvin/velero:v1.13.2 \
--plugins registry.aliyuncs.com/elvin/velero-plugin-for-aws:v1.9.2 \
--provider aws \
--bucket velero \
--use-volume-snapshots=false \
--secret-file ~/k8s/velero/auth-minio.txt \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.kube-public.svc:9000
#自定义镜像地址 --image --plugins
velero version
#2.2.2 k8s安装velero使用阿里云oss
在阿里云oss创建bucket
bucket名称elvin-k8s region为oss-cn-shanghai
oss的region和访问域名 https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints
#创建凭证 create auth
mkdir -p /k8s/velero/velero
cat >~/k8s/velero/velero/auth-oss.txt <<EOF
[default]
aws_access_key_id = LTAI4FoDtp4y7ENqv9X4emSE
aws_secret_access_key = lVNCxCVGciaJqUa5axxx
EOF
#install
velero install \
--image registry.aliyuncs.com/elvin/velero:v1.13.2 \
--plugins registry.aliyuncs.com/elvin/velero-plugin-for-aws:v1.9.2 \
--provider aws \
--use-volume-snapshots=false \
--bucket elvin-k8s \
--secret-file ~/k8s/velero/auth-oss.txt \
--backup-location-config region=oss-cn-shanghai,s3ForcePathStyle="false",s3Url=http://oss-cn-shanghai.aliyuncs.com
#oss使用virtual hosting访问方式,配置s3ForcePathStyle="false"
velero version
#2.2.3 k8s安装velero使用七牛云
在七牛云创建储存https://portal.qiniu.com/kodo/bucket
获取S3空间域名,打开创建的储存,空间概述,S3 域名,点击查询
七牛云储存region和访问域名 https://developer.qiniu.com/kodo/4088/s3-access-domainname
#创建凭证 create auth
mkdir -p /k8s/velero/velero
cat >~/k8s/velero/auth-qiniu.txt <<EOF
[default]
aws_access_key_id = foqsLZBJSr7yF59_3sB5RguezMh0l223s2NcC9Kz
aws_secret_access_key = BTBwrrCE7TLKjztpsBZX2GA45Cb3yR9Fxxxx
EOF
#install
velero install \
--image registry.aliyuncs.com/elvin/velero:v1.13.2 \
--plugins registry.aliyuncs.com/elvin/velero-plugin-for-aws:v1.9.2 \
--provider aws \
--use-volume-snapshots=false \
--bucket 817nb3 \
--secret-file ~/k8s/velero/auth-qiniu.txt \
--backup-location-config region=cn-east-1,s3ForcePathStyle="false",s3Url=http://s3.cn-east-1.qiniucs.com
#七牛云bucket使用S3空间域名前部分
velero version
#3. 使用velero备份和恢复
#3.1 备份和恢复测试
#部署nginx-demo
kubectl apply -f https://gitee.com/alivv/elvin-demo/raw/master/k8s/2.1.nginx-demo.yml
kubectl get pod
#备份namespaces为default的所有资源
velero backup create k8s-backup-test --include-namespaces default
#查看备份
velero backup get
#删除nginx-demo
kubectl delete -f https://gitee.com/alivv/elvin-demo/raw/master/k8s/2.1.nginx-demo.yml
kubectl get pod
#使用velero恢复nginx-demo
velero restore create nginx-demo \
--from-backup k8s-backup-test \
--include-namespaces default \
--selector name=nginx-demo
#查看恢复
velero restore get
#查看pod nginx-demo
kubectl get pod -n default
#卸载velero后重新安装以验证备份正常
velero uninstall
#查看备份
velero backup get
#3.2 备份和定时任务
#备份所有资源保留72小时
velero backup create k8s-bakcup-all-$(date +%F) --ttl 72h
#查看备份
velero backup get
#周期性任务
velero schedule create -h
#定时任务,每天16点(UTC时区)备份,保留7天(168h)
velero create schedule k8s-bakcup-all --schedule="0 16 * * *" --ttl 168h
#查看定时任务
velero get schedule
#3.3 velero备份和迁移
- 创建velero使用的储存
- 在k8s-A集群安装velero并备份
- 在k8s-B集群安装velero并恢复,即完成k8s迁移
#4 velero其它实例
#velero基本命令
velero get backup #查看备份
velero get schedule #查看定时备份
velero get restore #查看已有的恢复
velero get plugins #查看插件
#备份所有
velero backup create k8s-bakcup-all --ttl 72h
#恢复集群所有备份,对已经存在的服务不会覆盖
velero restore create --from-backup k8s-bakcup-all
#仅恢复default的namespace,包括集群资源
velero restore create --from-backup k8s-bakcup-all --include-namespaces default --include-cluster-resources=true
#恢复储存pv,pvc
velero restore create pvc --from-backup k8s-bakcup-all --include-resources persistentvolumeclaims,persistentvolumes
#恢复指定资源deployments,configmaps
velero restore create deploy-test --from-backup k8s-bakcup-all --include-resources deployments,configmaps
#筛选备份name=nginx-demo -l, --selector:通过指定label来匹配要backup的资源
velero backup create nginx-demo --from-backup k8s-bakcup-all --selector name=nginx-demo
#筛选备份恢复对象
--include-namespaces 筛选命名空间所有资源,不包括集群资源
--include-resources 筛选的资源类型
--exclude-resources 排除的资源类型
--include-cluster-resources=true 包括集群资源
#将test1命名空间资源恢复到test2
velero restore create test1-test2 --from-backup k8s-bakcup-all --namespace-mappings test1:test2
#备份hooks
#Velero支持在备份任务执行之前和执行后在容器中执行一些预先设定好的命令
k8s备份恢复实践--velero的更多相关文章
- 容灾恢复 | 记一次K8S集群中etcd数据快照的备份恢复实践
[点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...
- 利用Velero对K8S备份还原与集群迁移实战
一.简介 Velero 是一款云原生时代的灾难恢复和迁移工具,采用 Go 语言编写,并在 github 上进行了开源,利用 velero 用户可以安全的备份.恢复和迁移 Kubernetes 集群资源 ...
- 删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南
本章目录 0x00 数据持久化 1.RDB 方式 2.AOF 方式 如何抉择 RDB OR AOF? 0x01 备份容灾 一.备份 1.手动备份redis数据库 2.迁移Redis指定db-数据库 3 ...
- Grafana 备份恢复教程
原文链接:https://fuckcloudnative.io/posts/how-to-back-up-all-of-your-grafana-dashboards/ 目前我们 k8s 集群的 Gr ...
- 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)
公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...
- 40+倍提升,详解 JuiceFS 元数据备份恢复性能优化之路
JuiceFS 支持多种元数据存储引擎,且各引擎内部的数据管理格式各有不同.为了便于管理,JuiceFS 自 0.15.2 版本提供了 dump 命令允许将所有元数据以统一格式写入到 JSON 文件进 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- 基于MySQL MEB的备份恢复
MEB(MySQL Enterprise Backup)是MySQL商业版中提供的备份工具,属于物理备份. 同XtraBackup一样,mysqlbackup的使用过程同样包含如下三个步骤: 备份(- ...
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- 在Linux操作系统下备份恢复技术的应用 转自https://yq.aliyun.com/articles/50205?spm=5176.100239.blogcont24250.9.CfBYE9
摘要: 安全防护:在Linux操作系统下备份恢复技术的应用 原文参见:http://linux.chinaunix.net/techdoc/system/2005/12/19/925898.shtm ...
随机推荐
- 安卓Android虚拟机分享及使用
不知道大家伙在安装安卓虚拟机时被各式各样的问题折磨过没,我在安装安卓虚拟机时,遇到的问题简直就像长江之水源源不断,就算是最后安装好了也会因为各式各样的原因无法进入启动桌面. 当我发现这个可以直接导入到 ...
- CTF中特别小的EXE是怎么生成的
我们在打CTF时候,出题的爷爷们给出的exe都很小 就10k左右,有的甚至就5k,那时候我很郁闷啊.现在我也能了啊哈哈 不多bb按如下操作: 我们来看看正常的release生成的代码 #include ...
- c#传统读取配置文件
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; namespace C ...
- JDBC 和 Mybatis
使用JDBC连接操作数据库 Mybatis是JDBC的二次封装 使用更加简单了
- kotlin函数和Lambda表达式——>内联函数
1.内联函数 使用高阶函数会带来一些运行时的效率损失:每一个函数都是一个对象,并且会捕获一个闭包.即那些 在函数体内会访问到的变量.内存分配(对于函数对象和类)和虚拟调用会引入运行时间开销. 但是在许 ...
- Excel488个函数一览
目录: 常用函数 Web 函数 财务函数 查找和引用函数 多维数据集函数 工程函数 兼容性函数 逻辑函数 日期和时间函数 数据库函数 数学和三角函数 统计函数 文本函数 信息函数 与加载项一起安装的用 ...
- day09-类型转换
类型转换 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换 低-----------------------------------------------------高 byte ...
- 别人可以访问本项目的ip地址
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- Mysql导出文本文件
使用mysqldump命令导出文本文件 mysqldump -u root -pPassword -T 目标目录 dbname [tables] [option]; 其中: Password 参数表示 ...
- Mysql(2)—SQL语法详解(通俗易懂)
一.关于SQL 1.1 简介 SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准编程语言.它主要用于数据的查询.插入.更新和删除等操作.SQL ...