Velero基本介绍

官方文档:https://velero.io/docs/v1.4/

基本工作原理:

不管需求是实现什么,比如:集群迁移、恢复、备份,其核心都是通过velero client CLI创建一个backup,然后迁移和恢复等操作都是需要这个backup来完成的。

创建一个backup,velero backup create test-backup

  1. Velero client 调用Kubernetes API服务器以创建Backup。
  2. BackupController检测到新的backup,并验证。
  3. BackupController开始backup,通过请求ApiServer获取资源来收集数据以进行备份。
  4. BackupController将要备份的数据上传到一个对象存储服务器,如AMS S3。
  5. 默认情况下,velero backup create会生产每一个PV的磁盘快照。您可以通过指定其他参数来调整快照。运行velero backup create --help以查看可用的参数。可以使用选项禁用快照--snapshot-volumes=false

安装需要的工具

安装对象存储服务器:Minio

Velero支持的storage providers:https://velero.io/docs/v1.4/supported-providers/

这里使用本地安装的对象存储服务器,Minio

安装的Minio需要能被两个集群(集群迁移,一个到另外一个),都能访问到。

安装Velero Client

Velero Client就是命令行工具,安装版本应该是v1.3.0, or later。

官方提供了多种安装方式:https://velero.io/docs/master/basic-install/

安装Velero Server

使用Velero

首先需要明确一点是:不管需求是什么,比如:集群迁移、恢复、备份,其核心都是通过backup实现的。灾难恢复是如果出现意外,那么从备份的backup恢复这个集群,而迁移的过程是使用当前集群的backup来在另外一个集群恢复。

Velero常用命令

备份Backup

velero backup get :查看已备份的

velero backup create <backupname>:创建一个backup包含所有资源

velero backup create <backupname> --include-namespaces ns1,ns2:为ns1,ns2命名空间下的资源备份

velero backup create <backupname> --exclude-namespaces ns1,ns2:排除掉ns1,ns2的命名空间,创建备份

velero backup create <backupname> --include-resources resource1,resource2:为指定资源备份

`velero backup create --exclude-resources resource1,resource2``:不备份指定资源

--storage-location <localpath>:将创建的备份保存到本地路径下

-l, --selector:通过指定label来匹配要back up的资源

除此以外还包括:delete、describe、logs

恢复Restore

velero restore get:查看已经restore的资源

vel ero restore create restore-1 --from-backup backup-1:从backup-1恢复

velero restore create --from-backup backup-2 --include-resources persistentvolumeclaims,persistentvolumes:仅恢复指定资源,同样使用--exclude-resources:不恢复某资源

velero restore create --from-schedule schedule-1:从创建的schedule恢复

除此以外还包括:delete、describe、logs

Schedule定时备份

Schedule是针对backup的,是独立于backup之外的一种资源,但他本身也是一个backup只不过是具有了定时的功能,符合Cron规则。

velero create schedule NAME --schedule="0 */6 * * *":每6小时自动备份一次

velero create schedule NAME --schedule="@every 24h" --include-namespaces web:因为schedule也是一种backup,所以创建backup指定的参数这里也都可以使用

除此以外还包括:delete、describe、logs

介绍:

Velero 可以帮助你:

  • 对集群进行备份并在丢失的情况下进行恢复。
  • 将集群资源迁移到其他集群。
  • 将生产集群复制到开发和测试集群。

Velero 包括:

  • 在集群上运行的服务端
  • 本地的CLI客户端

推荐用这个安装:https://velero.io/docs/master/contributions/minio/

Velero v1.4.0下面两线之间是过程,结论是 两个集群里安装下面这个,参考的上面的这个url:

velero install  \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.0.0 \
--kubeconfig /etc/rancher/k3s/k3s.yaml \
--bucket velero \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.lab3.cn \
--use-restic \
--wait\

运行安装命令:

velero install \
--image registry.cn-hangzhou.aliyuncs.com/acs/velero:latest \
--provider aws \
--bucket velero \
--namespace velero \
--secret-file ./credentials-velero \
--velero-pod-cpu-request 200m \
--velero-pod-mem-request 200Mi \
--velero-pod-cpu-limit 200m \
--velero-pod-mem-limit 200Mi \
--use-volume-snapshots=false \
--use-restic \
--restic-pod-cpu-request 200m \
--restic-pod-mem-request 200Mi \
--restic-pod-cpu-limit 200m \
--restic-pod-mem-limit 200Mi \
--backup-location-config region=minio,s3ForcePathStyle="false",s3Url=http://127.0.0.1:30464

出现错误:

An error occurred: --plugins flag is required

需要添加一个插件:

velero plugin add velero/velero-plugin-for-aws:v1.0.0
  • An error occurred: deployments.apps "velero" not found

尝试下面这个 ok:

velero install \
--plugins velero/velero-plugin-for-aws:v1.0.0 \
--image registry.cn-hangzhou.aliyuncs.com/acs/velero:latest \
--provider aws \
--bucket velero \
--namespace velero \
--secret-file ./credentials-velero \
--velero-pod-cpu-request 200m \
--velero-pod-mem-request 200Mi \
--velero-pod-cpu-limit 200m \
--velero-pod-mem-limit 200Mi \
--use-volume-snapshots=false \
--use-restic \
--restic-pod-cpu-request 200m \
--restic-pod-mem-request 200Mi \
--restic-pod-cpu-limit 200m \
--restic-pod-mem-limit 200Mi \
--backup-location-config region=minio,s3ForcePathStyle="false",s3Url=http://127.0.0.1:30464

删除安装的:

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

下一个出现的错误:

An error occurred: unknown flag: --feature

暂时解决:https://velero.io/docs/master/customize-installation/

用disable --feature来解决:

$ kubectl -n velero edit deploy/velero
$ kubectl -n velero edit daemonset/restic

下一个错误出现:

An error occurred: unable to register plugin (kind=VolumeSnapshotter, name=velero.io/aws, command=/plugins/velero-plugin-for-aws) because another plugin is already registered for this kind and name (command=/velero)

Velero:备份、迁移Kubernetes集群资源和PV的更多相关文章

  1. 在 TKE 中使用 Velero 迁移复制集群资源

    概述 Velero(以前称为Heptio Ark)是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 群集资源和持久卷,可以在 TKE 集群或自建 Kubernetes ...

  2. 解决项目迁移至Kubernetes集群中的代理问题

    解决项目迁移至Kubernetes集群中的代理问题 随着Kubernetes技术的日益成熟,越来越多的企业选择用Kubernetes集群来管理项目.新项目还好,可以选择合适的集群规模从零开始构建项目: ...

  3. kubernetes集群断电后etcd启动失败之etcd备份方案

    一.问题描述 二进制部署的单Master节点的v1.13.10版本的集群,etcd部署的是3.3.10版本,部署在master节点上.在异常断电后,kubernetes集群无法正常启动.这里通过查看k ...

  4. Kubernetes — 从0到1:搭建一个完整的Kubernetes集群

    准备工作 首先,准备机器.最直接的办法,自然是到公有云上申请几个虚拟机.当然,如果条件允许的话,拿几台本地的物理服务器来组集群是最好不过了.这些机器只要满足如下几个条件即可: 满足安装 Docker ...

  5. 基于kubernetes集群的Vitess最佳实践

    概要 本文主要说明基于kubernetes集群部署并使用Vitess; 本文假定用户已经具备了kubernetes集群使用环境,如果不具备请先参阅基于minikube的kubernetes集群搭建, ...

  6. Kubernetes集群

    Kubernetes已经成为当下最火热的一门技术,未来一定也会有更好的发展,围绕着云原生的周边产物也越来越多,使得上云更加便利更加有意义,本文主要讲解一些蔚来汽车从传统应用落地到Kubernetes集 ...

  7. K8s 二、(1、kubeadm部署Kubernetes集群)

    准备工作 满足安装 Docker 项目所需的要求,比如 64 位的 Linux 操作系统.3.10 及以上的内核版本: x86 或者 ARM 架构均可: 机器之间网络互通,这是将来容器之间网络互通的前 ...

  8. Kubernetes 集群无损升级实践 转至元数据结尾

    一.背景 活跃的社区和广大的用户群,使 Kubernetes 仍然保持3个月一个版本的高频发布节奏.高频的版本发布带来了更多的新功能落地和 bug 及时修复,但是线上环境业务长期运行,任何变更出错都可 ...

  9. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

随机推荐

  1. 实现golang io.Writer支持按照天为单位分割日志

    golang中的日志不支持按照天分割,很多开源的日志包都是只支持按照文件大小分割日志,不太利于生产环境中的使用.因此我实现了timewriter,支持: 实现按照天为单位分割日志,可以完美支持gola ...

  2. 使用zTree插件实现可拖拽的树

    在目前接触到的树插件中,我觉得zTree比较简单,也容易上手.有一次业务需求是将某对象分组树上的对象可以随意拖拽,相当于改变了对象的分组,因此我用到了zTree,对其进行了一些列学习.         ...

  3. 「算法笔记」CRT 与 exCRT

    一.扩展欧几里得 求解方程 \(ax+by=\gcd(a,b)\). int exgcd(int a,int b,int &x,int &y){ if(!b) return x=1,y ...

  4. BBN+

    目录 motivation settings results motivation 观测用BBN的模式训练出来的模型, 配上不同的\(\alpha\), 结果会如何. settings Attribu ...

  5. ZFNet: Visualizing and Understanding Convolutional Networks

    目录 论文结构 反卷积 ZFnet的创新点主要是在信号的"恢复"上面,什么样的输入会导致类似的输出,通过这个我们可以了解神经元对输入的敏感程度,比如这个神经元对图片的某一个位置很敏 ...

  6. 【MySQL作业】连接查询综合应用——美和易思连接查询综合应用习题

    点击打开所使用到的数据库>>> 1.统计每件商品的销售数量和销售金额,要求按照销售量和销售金额升序显示商品名.销售量和销售金额, 由于需要统计每件商品的销售数量和销售金额,即便某种商 ...

  7. playwright--自动化(二):过滑块验证码 验证码缺口识别

    前两天需要自动化登录一个商城的后台 用的是playwright 没有用selenium 中间出了一个滑块验证 现阶段playwright教程不是太多,自己做移动的时候各种找,费劲巴拉的.现在自己整出来 ...

  8. svn钩子脚本

      使用钩子脚本的意义: 我们在测试环境中搭建好svn后,开发人员可以正常的上传和下载写好的代码了.但是上传到测试服务器,在版本库中(tshop)是看不到这些数据的.所以在测试环境中(linux测试服 ...

  9. captcha_生成图片验证码并返回给前端展示

    使用pip install captcha 安装模块 import random import string import os import io from captcha.image import ...

  10. PowerShell 管道符之Select的使用方法【一】

    之前我文章中我们略微提到过管道符的操作,但并不多,这篇主要讲解一下详细的使用方法 假设我们要对数组中的数字1-10中我想要从右往左换句话说就是从字符串最后一个字开始倒过来往前数截取6个子字符串时可以这 ...