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的更多相关文章

  1. 容灾恢复 | 记一次K8S集群中etcd数据快照的备份恢复实践

    [点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...

  2. 利用Velero对K8S备份还原与集群迁移实战

    一.简介 Velero 是一款云原生时代的灾难恢复和迁移工具,采用 Go 语言编写,并在 github 上进行了开源,利用 velero 用户可以安全的备份.恢复和迁移 Kubernetes 集群资源 ...

  3. 删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南

    本章目录 0x00 数据持久化 1.RDB 方式 2.AOF 方式 如何抉择 RDB OR AOF? 0x01 备份容灾 一.备份 1.手动备份redis数据库 2.迁移Redis指定db-数据库 3 ...

  4. Grafana 备份恢复教程

    原文链接:https://fuckcloudnative.io/posts/how-to-back-up-all-of-your-grafana-dashboards/ 目前我们 k8s 集群的 Gr ...

  5. 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)

    公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...

  6. 40+倍提升,详解 JuiceFS 元数据备份恢复性能优化之路

    JuiceFS 支持多种元数据存储引擎,且各引擎内部的数据管理格式各有不同.为了便于管理,JuiceFS 自 0.15.2 版本提供了 dump 命令允许将所有元数据以统一格式写入到 JSON 文件进 ...

  7. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  8. 基于MySQL MEB的备份恢复

    MEB(MySQL Enterprise Backup)是MySQL商业版中提供的备份工具,属于物理备份. 同XtraBackup一样,mysqlbackup的使用过程同样包含如下三个步骤: 备份(- ...

  9. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  10. 在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 ...

随机推荐

  1. Android 常用的性能分析工具详解:GPU呈现模式

    此篇将重点介绍几种常用的Android性能分析工具: 一.Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗.当我们打开一个Activit ...

  2. 2023年3月中国数据库排行榜:开源OTO揽获前三,传统达梦、GBase触机便发

    东风何时至,已绿湖上山. 春风送来了2023年3月的 墨天轮中国数据库流行度排行,本月共有260个数据库参与排名,本月榜单前十可以用一句话概括为:榜单前八较上月岿然不动,GBase 奋勇向前重返第九. ...

  3. SpringBoot2.0 整合 JWT 框架后台生成token

    一.传统Session认证 1.1.认证过程 1.用户向服务器发送用户名和密码.2.服务器验证后在当前对话(session)保存相关数据.3.服务器向返回sessionId,写入客户端 Cookie. ...

  4. Avalonia开源控件库强力推荐-Semi.Avalonia

    Avalonia是什么? Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序.它使用自己的渲染引擎绘制UI控件,确保在Windows.macOS.Linux.Android ...

  5. 经典强化学习算法:分层强化学习算法 —— options算法

    论文地址: https://people.cs.umass.edu/~barto/courses/cs687/Sutton-Precup-Singh-AIJ99.pdf 分层强化学习算法options ...

  6. cnblogs的GitHub同步markdown文件的blog如何识别文章的唯一性(身份ID如何判定)

    本篇blog是写在GitHub的对应的仓库中的. cnblogs会给终身用户提供一个把GitHub仓库中的markdown文件同步到cnblogs上的一个服务,本文就是使用这个服务同步到个人blog地 ...

  7. Python启动一个本地服务器文件下载

    日常工作中需要给同事分享下载链接,快速启动一个WebServer即可满足日常需求~ #安装软件 yum install screen -y #启动服务 python -m SimpleHTTPServ ...

  8. Java net.sf.jxls 生成模板 并导出excel

    如果是 maven项目需要引入下面这个就可以 <dependency> <groupId>net.sf.jxls</groupId> <artifactId& ...

  9. 如何把composer版本降下来

    如果想把composer从2版本降到1版本 composer self-update 1.4.1 如果想降到1版本 composer self-update --1

  10. vue2-脚手架

    Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台) https://cli.vuejs.org/zh/ 使用脚手架 安装脚手架 npm install -g @vue/cli 使用脚手架创 ...