Velero

k8s集群的数据备份方式有两种,第一种是备份etcd数据库,这种备份方式比较简单,但是恢复数据时只能全部恢复。试想一下,需求是恢复误删除的一个namespace,恢复时却要将整个etcd数据库重新导入覆盖,etcd作为k8s的核心数据库,这是个非常危险的操作。第二种就是velero备份,velero的备份恢复策略颗粒度更细,除了对 Kubernetes 集群进行整体备份外,Velero 还可以通过对 Type、Namespace、Label 等对象进行分类备份或者恢复,可控性很强。

velero简介

k8s备份工具之velero, velero 是一个云原生的灾难恢复和迁移工具,它本身也是开源的, 采用 Go 语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源和持久卷。

Velero 特性

  • 支持 Kubernetes 集群数据备份和恢复

  • 支持复制当前 Kubernetes 集群的资源到其它 Kubernetes 集群

  • 支持复制生产环境到开发以及测试环境(不同命名空间的备份还原)

velero部署

velero部署分为3个部分,部署客户端,服务端及一个对象存储,这里用minio代替,生产环境可以保存到硬件存储或ceph集群中

minio部署

利用docker简单快捷部署minio存储

minio最新镜像hub地址:https://hub.docker.com/r/minio/minio

启动minio容器
#拉取minio镜像
docker pull minio/minio:RELEASE.2022-04-12T06-55-35Z
#启动命令
docker run -itd \-p 9000:9000 \-p 9001:9001 \-d --restart=always \-e "MINIO_ROOT_USER=admin" \-e "MINIO_ROOT_PASSWORD=12345678" \-v /data/minio/data:/data \minio/minio:RELEASE.2022-04-12T06-55-35Z server /data \--console-address ":9001"# MINIO_ROOT_USER  MINIO_ROOT_PASSWORD参数为账户密码,默认为minioadmi/minioadmi
#端口9000,9001分别是api端口(程序连接),web管理页面端口
创建存储buckets

#web管理页面:http://172.26.156.214:9001/login

创建buckets,名称为velerdata,后面备份会用到这个名字


velero客户端部署

velero github下载地址:https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz

root@master01:~# cd /data/work/
root@master01:/data/work# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
root@master01:/data/work# tar xf velero-v1.8.1-linux-amd64.tar.gz
root@master01:/data/work# cp velero-v1.8.1-linux-amd64/velero   /usr/local/bin/

客户端安装完成

velero服务端部署

velero服务端安装一条命令即可

先创建连接对象存储的密码文件

root@master01:/data/work/velero-v1.8.1-linux-amd64# vi credentials-velero
[default]
aws_access_key_id = admin
aws_secret_access_key = 12345678

执行安装命令

velero install \--provider aws \--kubeconfig ~/.kube/config \--bucket velerodata \--secret-file ./credentials-velero \--use-volume-snapshots=false \--plugins velero/velero-plugin-for-aws:v1.3.1 \--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://172.26.156.214:9000# --kubeconfig 默认找KUBECONFIG环境变量制定的认证文件# --bucket minio创建存储名# --secret-file 密码认证文件# --namespace 默认是velero命名空间,指定该参数指定创建命名空间

查看velero服务端正常运行起来

卸载velero

kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero

velero备份恢复

备份单个test命名空间并恢复

#备份test命名空间
velero backup create test-bakcup-20220420 --include-namespaces test
#查看备份
velero get backups
#查看备份详情
velero backup describe test-bakcup-20220420
#恢复test命名空间
kubectl delete ns test
velero restore create --from-backup test-bakcup-20220420

备份全部命名空间并恢复

velero backup create k8s-all-ns
kubectl delete ns deploy
velero restore create --from-backup k8s-all-ns

待完善

通过velero备份恢复PV存储资源

Velero备份恢复相关推荐

  1. “免费”容器存储及备份恢复方案

    云原生时代为什么还需要本地存储? 云原生时代,对于有存储应用的容器化上云,一般的解决思路是"计算存储分离",计算层通过容器技术实现弹性伸缩,而相应的存储层也需要配合进行" ...

  2. Kubernetes 上免费的容器存储及容灾备份恢复方案

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 云原生时代为什么还需要本地存储? 云原生时代,对于有存储应用的容器化上云,一般的解决思路是"计算存储分离 ...

  3. 国内外公有云容器服务备份恢复中文指南

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 因为业务需求,需要针对自建的集群进行备份和恢复,所以针对国内外友商的容器服务备份恢复方案做了一个简单的调研分析. ...

  4. 备份集过期时间_TiDB备份恢复方式你知多少?

    背景 学习一款数据库,要学会备份和恢复.备份是一个严谨的工作,作为一个dba,掌握数据库备份.恢复的各种手段. 下面让我们一起来看看TiDB的备份恢复有那些手段吧. 基于MVCC的恢复方式 相关原理已 ...

  5. 虚拟桌面的备份恢复最佳实践 第一部分

    摘要 VMware View 是目前虚拟桌面市场的旗舰产品.借助它,企业可以将办公系统.应用和基础架构以高性能.高度可扩展的集中式托管服务形式交付给用户.View 还可提供保护它所支持的系统和应用以及 ...

  6. mysql备份数据库语句6_13.4 MySQL用户管理;13.5 常用sql语句;13.6 MySQL数据库备份恢复...

    扩展 : SQL语句教程 什么是事务?事务的特性有哪些? 根据binlog恢复指定时间段的数据 mysql字符集调整 使用xtrabackup备份innodb引擎的数据库  innobackupex  ...

  7. mysql用户管理,常用sql语句,mysql数据库备份恢复

    2019独角兽企业重金招聘Python工程师标准>>> mysql用户管理 grant all on . to 'user1' identified by 'passwd'; gra ...

  8. 什么鬼!基于备份恢复的实例数据还能变多?

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 对数据库进行数据备份无非两种方式,一种是逻辑备份,也就是直接连上数据库导出所有的数据,对于MySQL,就是通 ...

  9. mysql 数据库 xtrabackup (完全备份恢复,恢复后重启失败总结)

    一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...

最新文章

  1. [BZOJ1072][SCOI2007]排列perm
  2. python3中使用subprocess模块执行外部命令
  3. XmlHttpRequest 对象详解
  4. magento 基本配置
  5. h matlab,较优H圈matlab实现
  6. AKKA Actor创建
  7. python脚本入门_python 脚本学习(一)
  8. 百度服务器临时文件多久一删,百度站长提醒:11月9日前尽快删除超出站点配额的历史sitemap文件...
  9. 深度学习TF—7.卷积神经网络CNN
  10. 在mysql怎样查询地址和电话_手机号码怎么查找位置
  11. 滑动门套滑动门css,CSS 实现滑动门的实例代码
  12. mysql 取首字母_MySQL中获取拼音首字母的方法
  13. 超简单,自己动手写一个二维码生成器
  14. 国二C语言用编译器做题,C语言编程实例100题——国二国三题库大全(必过).doc
  15. 配置MatConvNet
  16. 生产执行系统MES架构设计及应用架构
  17. Stemming词干提取 和 Lemmatization 词形还原
  18. 从AWSome Day你可以学到什么?
  19. kaggle TMDB5000电影数据分析和电影推荐模型
  20. 手Q支付Android开发面试前小记

热门文章

  1. HTML实现自动刷新
  2. 解决1099端口被占用的问题
  3. Jeesite 4.3 按钮权限,设置按钮只针对某个账号显示及使用
  4. python类中没有属性_Python属性错误类型对象没有属性
  5. 洛谷刷题 - 入门 - 1
  6. vue鼠标移入移出事件注意事项
  7. B站上诉A站抢注商标被驳回,承担案件受理费100元
  8. mysql 修改表字段长度
  9. 计算机常见应用软件有哪些,计算机应用软件有哪些常用的分类
  10. Excel快速定位快捷键