首页 > 其他分享 >velero备份恢复k8s集群

velero备份恢复k8s集群

时间:2023-01-28 14:34:32浏览次数:56  
标签:velero -- 备份 集群 k8s backup create

参考文档:

https://blog.51cto.com/kaliarch/4919159

https://blog.csdn.net/john1337/article/details/123335046

一、什么是velero?
Velero 是一个云原生的灾难恢复和迁移工具,它本身也是开源的, 采用 Go 语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源和持久卷。
Velero 是西班牙语,意思是帆船,非常符合 Kubernetes 社区的命名风格。Velero 的开发公司 Heptio,之前已被 VMware 收购,其创始人2014就职于Google,当时被认为是 Kubernetes 核心成员。
Velero 是一种云原生的Kubernetes优化方法,支持标准的K8S集群,既可以是私有云平台也可以是公有云。除了灾备之外它还能做资源移转,支持把容器应用从一个集群迁移到另一个集群。
Heptio Velero ( 以前的名字为 ARK) 是一款用于 Kubernetes 集群资源和持久存储卷(PV)的备份、迁移以及灾难恢复等的开源工具。
使用velero可以对集群进行备份和恢复,降低集群DR造成的影响。velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来。可以从官方文档查看可接收的对象存储,本地存储可以使用Minio
1.1 特性
支持 Kubernetes 集群数据备份和恢复
支持复制当前 Kubernetes 集群的资源到其它 Kubernetes 集群
支持复制生产环境到开发以及测试环境
注意: 备份过程中创建的对象是不会被备份的。

1.2 与ETCD备份的区别
与 Etcd 备份相比,直接备份 Etcd 是将集群的全部资源备份起来。而 Velero 就是可以对 Kubernetes 集群内对象级别进行备份。除了对 Kubernetes 集群进行整体备份外,Velero 还可以通过对 Type、Namespace、Label 等对象进行分类备份或者恢复。

二、流程图

三、现在开始
3.1 安装velero二进制命令
wget https://github.com/vmware-tanzu/velero/releases/download/v1.4.2/velero-v1.4.2-linux-amd64.tar.gz

tar -zxvf velero-v1.4.2-linux-amd64.tar.gz

3.2 初始化velero

创建credentials-velero文件填入minio的信息,文件内容如下

[default]
aws_access_key_id = minioadmin
aws_secret_access_key = minioadmin

使用install命令安装velero

velero install
--provider aws
--plugins velero/velero-plugin-for-aws:v1.0.0
--bucket velero
--secret-file ./credentials-velero
--use-volume-snapshots=false
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://58.56.21.14:9000

注释:http://58.56.21.14:9000 这个地址是公司内网部署的minio,通过防火墙映射,用于公网环境下的备份存储

参数详解

--provider:声明使用的 Velero 插件类型。

--plugins:使用 S3 API 兼容插件 “velero-plugin-for-aws ”。

--bucket:在腾讯云 COS 创建的存储桶名。

--secret-file:访问 COS 的访问凭证文件,见上面创建的 “credentials-velero”凭证文件。

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

(尝试过备份pv数据,但是没有成功,感兴趣的同事可以再试一下 =_=)

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

--backup-location-config:备份存储桶访问相关配置。

--region:兼容 S3 API 的 COS 存储桶地区,例如创建地区是广州的话,region 参数值为“ap-guangzhou”。

--s3ForcePathStyle:使用 S3 文件路径格式。

--s3Url:COS 兼容的 S3 API 访问地址

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

安装完成后,会自动创建velero的namespace

[root@k8s-master velero]# kubectl get pod -n velero
NAME READY STATUS RESTARTS AGE
velero-59b956f6b5-pj57n 1/1 Running 0 7s

3.3 创建备份任务

手动发起备份任务

velero backup create nginx-example --include-namespaces nginx-example

指定备份排除某些命名空间下面的资源

velero backup create ${BACKUP_NAME} --exclude-namespaces ${NAMESPACE1},$

--include-resources选项可以指定备份哪些资源类型;--exclude-resources`可以指定排除某些资源类型

velero backup create ${BACKUP_NAME} --include-resources pod,secret

每日1点进行备份

velero create schedule --schedule="0 1 * * *"

每日1点进行备份,备份保留72小时

velero create schedule --schedule="0 1 * * *" --ttl 72h

每5小时进行一次备份

velero create schedule --schedule="@every 5h"

每日对 指定 namespace 进行一次备份 (如panshi-qtc-dev)

velero create schedule --schedule="@every 24h" --include-namespaces panshi-qtc-dev

3.4 查看备份资源
velero get backup #备份查看
velero get schedule #查看定时备份
velero get restore #查看已有的恢复
velero get plugins #查看插件
velero restore create --from-backup all-ns-backup #恢复集群所有备份,(对已经存在的服务不会覆盖)
velero restore create --from-backup all-ns-backup --include-namespaces default,nginx-example #仅恢复 default nginx-example namespace

Velero可以将资源还原到与其备份来源不同的命名空间中。为此,请使用--namespace-mappings标志
velero restore create RESTORE_NAME --from-backup BACKUP_NAME --namespace-mappings old-ns-1:new-ns-1,old-ns-2:new-ns-2
例如下面将test-velero 命名空间资源恢复到test-velero-1下面
velero restore create restore-for-test --from-backup everyday-1-20210203131802 --namespace-mappings test-velero:test-velero-1
3.5 恢复
velero restore create --from-backup $(BACKUP_NAME)

四、注意事项
在velero备份的时候,备份过程中创建的对象是不会被备份的。
velero restore 恢复不会覆盖已有的资源,只恢复当前集群中不存在的资源。已有的资源不会回滚到之前的版本,如需要回滚,需在restore之前提前删除现有的资源。
后期可以讲velero作为一个crontjob来运行,定期备份数据。
在高版本1.16.x中,报错error: unable to recognize "filebeat.yml": no matches for kind "DaemonSet" in version "extensions/v1beta1" ,将yml配置文件内的api接口修改为 apps/v1 ,导致原因为之间使用的kubernetes 版本是1.14.x版本,1.16.x 版本放弃部分API支持!

标签:velero,--,备份,集群,k8s,backup,create
From: https://www.cnblogs.com/python-cat/p/17070236.html

相关文章

  • 将Portiner部署到MicroK8s集群
    在MicroK8s的帮助下,你可以部署Portiner,从而使Kubernetes的管理变得容易多了。Portainer是一个强大的容器管理平台,不仅可以在Docker部署中使用,还可以在Kubernetes环境中使用......
  • MySQL 自动备份还原工具 MySQL-AutoXtraBackup
    MySQL-AutoXtraBackup是Percona实验室中的开源工具,是基于 xtrabackup和autoxtrabackup备份的备份工具。如果不是很熟悉 AutoXtraBackup,个人觉得还不如使用 autoxtr......
  • 博客园,如何进行“博客备份”?
    博客园,如何进行“博客备份”?    一、进入个人首页,点击“管理”      二、进入后台,点击“博客备份”      三、开始备份   ......
  • k8s 单节点部署
    k8s单节点部署参考kubeasz:https://github.com/easzlab/kubeasz/blob/master/docs/setup/quickStart.mddashboard:https://github.com/easzlab/kubeasz/blob/master......
  • 监控Recovery Service Vault备份状态
    接下来再来说下如何监控备份作业的状态,备份不是摆在那就可以的,我们要清楚知道备份是否在成功运行,这就需要监控了,首先来看看如何做RecoveryServiceVault虚机备份的监控主要......
  • 不背锅运维:一文搞清楚应用发布到k8s集群的基本流程
    1.使用yaml文件创建资源对象❝每种资源的apiVersion和kind可通过kubectlapi-resources命令进行查看❞tantianran@test-b-k8s-master:~$ kubectl api-resources......
  • 使用Backup Vault进行Disk备份
    Backup是每个云都必不可少的服务,Azure中的backup服务其实远不止一种,很多时候可能并不一定能很轻松的知道每种场景使用哪种备份服务比较合适,我也计划多写几篇来介绍这些备份......
  • 【云原生kubernetes】k8s中pod使用详解
    一、前言在之前k8s组件一篇中,我们谈到了pod这个组件,了解到pod是k8s中资源管理的最小单位,可以说Pod是整个k8s对外提供服务的最基础的个体,有必要对Pod做深入的学习和探究。二......
  • 基于KubeSphere在K8S发布微服务ruoyi----5.部署基础环境Gitlab
      Docker搭建Gitlab服务器1、Gitlab镜像dockersearchgitlab    dockersearchgitlab-ce  dockerpullgitlab/gitlab-ce      2、创......
  • 基于KubeSphere在K8S发布微服务ruoyi----4.部署基础环境Redis
    从dockerhub查看redis启动所需相关参数https://hub.docker.com/_/redisIfpersistenceisenabled,dataisstoredinthe VOLUME/data,whichcanbeusedwith --......