众所周知,Kubernetes可以协调连接在一起,作为一个工作单元,形成高可用性的计算机集群。Kubernetes包含许多抽象概念,这些抽象概念允许将容器化的应用程序部署到集群中,而无需将它们附加到单独的机器上。

简而言之,Kubernetes拥有以下特性:

  • 便携式:公有、私有、混合、多云

  • 可扩展:模块化、可插拔、可挂钩、可组合

  • 自我修复:自动放置、自动重启、自动复制、自动缩放

在本文中,我们将介绍如何使用Velero开源工具备份和还原Kubernetes集群资源和持久卷的步骤。

第一节 为什么要备份?

首先,让我们了解您需要使用备份的典型方案,如果从灾难中恢复,则可以减少恢复时间。Kubernetes 资源从一个集群迁移到另一个集群或更高版本的 Kubernetes ,需要复制环境以进行调试、开发等。

现在我们已经清楚了为什么需要备份了,接下来我们可以检查要备份的对象列表。

要备份什么?Kubernetes资源存储在etcd存储中。etcd是一个一致且高度可用的键值存储,用作所有集群数据的 Kubernetes 的后备存储。您可以在官方文档中找到有关 etcd 的详细信息。集群中运行的有状态应用程序的应用程序数据,即持久卷。

第二节 Velero如何运作

Velero( 以前称为Heptio Ark )为您提供了备份和还原 Kubernetes 集群资源和持久卷的工具。

Velero包含:

  • Ivacy VPN

  • 在集群上运行的服务器

  • 在本地运行的命令行客户端

每个Velero操作(例如:按需备份、计划备份、还原等)都是自定义资源,使用Kubernetes自定义资源(CRD)定义并存储在etcd存储中。

当你运行命令 velero backup create test-backup:时。

1.Velero客户端调用Kubernetes API服务器以创建一个 Backup 对象。

2.BackupController 看起来像一个新的 Backup 对象并执行验证。

3.BackupController 开始备份操作。它通过查询API服务器以获取资源来收集数据以进行备份。

4.BackupController 调用对象存储服务(例如AWS S3)以上传备份文件。

在下一节中,我们将介绍有关如何备份和还原Kubernetes集群资源和持久卷的步骤。

第三节 先决条件

以下是此快速入门所需的先决条件:

1.具有Kubernetes最新稳定版本的集群
2.Kubectl CLI

在安装之前,请检查我们是否具有正确的Kubernetes版本。

步骤#1 下载Velero

使用以下命令下载最新版本的Velero:

curl -LO https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz

使用Linux或者其他平台的朋友,请参见发行页面的说明。

解压缩下载文件并将velero可执行文件移至/ usr / local / bin或您的路径。

在您的本地目录中创建特定于Velero的凭证文件(credentials-velero)。

echo "[default] 

aws_access_key_id = minio

aws_secret_access_key = minio123" > credentials-velero

Velero需要合适的存储提供商来存储备份和快照数据,在本演示中,我们将使用Minio,这是一个在本地集群上运行的S3兼容存储服务,Minio实例将使用上述凭据。

现在我们已经准备好凭据和群集,接下来就可以安装Velero服务器了。

步骤#2 安装Velero服务器

在以下步骤中,我们将启动服务器和本地存储服务。在Velero文件夹中,运行以下命令:

使用以下命令配置本地存储服务:

kubectl apply -f examples/minio/00-minio-deployment.yaml

使用以下命令启动Velero服务器:

velero install \    --provider aws \    --bucket velero \    --secret-file ./credentials-velero \    --use-volume-snapshots=false \    --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000

现在,我们假设Velero在本地集群中运行,而没有能够提供快照的卷。

检查是否成功创建部署了Velero。

步骤#3 部署示例应用程序

下一步是使用以下命令在集群上部署示例nginx应用程序:

kubectl apply -f velero/examples/nginx-app/base.yaml

检查是否成功创建了示例应用程序部署。

步骤#4 备份

现在,我们将为与 app = nginx 标签选择器匹配的任何对象创建备份:

velero backup create nginx-backup --selector app=nginx

如果要备份除匹配标签的对象以外的所有对象,则可以使用“ backup notin(ignore)”选项。

还有一些选项可用于基于 cron 表达式创建备份计划。

要验证备份是否已完成,请使用 describe 命令,如下所示:

velero backup describe nginx-backup

现在我们已经完成了备份操作,为了测试还原操作,我们将删除命名空间。

验证是否删除了 nginx 服务和部署:

通常需要几分钟才能完全清理名称空间。

步骤#5 Restore

要列出我们创建的备份,请使用以下命令:

velero restore get

要恢复我们创建的备份,请使用以下命令:

velero restore create --from-backup nginx-backup

还原完成后,您可以检查还原的部署是否返回名称空间:

如果在还原操作过程中出现错误或警告,则可以使用以下命令检查详细信息:

velero restore describe

恭喜! 我们已经成功进行了备份和还原。

如果由于某些限制而无法使用Velero,则可以始终使用 Kubectl CLI 从现有 Kubernetes 集群中导出资源定义,然后将其应用于目标集群。

以下是导出对象的命令

kubectl get deployment -o=yaml --export > deployments.yaml

第四节 局限性

以下是Velero的已知限制:

  • Velero当前每个提供商都支持一套凭据。 尚无法在不同的位置使用不同的凭据。

  • 卷快照受提供程序创建快照位置限制。 例如,AWS和Azure不允许您在不同卷所在区域中创建卷快照。

  • 每个Velero备份每个卷都有一个BackupStorageLocation和一个VolumeSnapshotLocation。无法将单个 Velero 备份同时发送到多个备份存储位置,也不能将单个卷快照同时发送到多个位置。

  • 不支持跨提供商快照。

nginx 集群部署_如何备份和还原您的Kubernetes集群资源和持久卷?相关推荐

  1. 如何备份和还原您的Kubernetes集群资源和持久卷?

    众所周知,Kubernetes可以协调连接在一起,作为一个工作单元,形成高可用性的计算机集群.Kubernetes包含许多抽象概念,这些抽象概念允许将容器化的应用程序部署到集群中,而无需将它们附加到单 ...

  2. nginx 集群部署_入门级实操教程!从概念到部署,全方位了解K8S Ingress!

    Kubernetes Ingress用于添加规则,以将流量从外部路由到Kubernetes集群的服务中.在本文中你将了解ingress 的概念,以及用于路由外部流量到Kubernetes deploy ...

  3. 需要单机还是集群部署_单机、分布式、集群的区别与联系

    一.单机结构 一个系统业务量很小的时候所有的代码都放在一个项目中,然后这个项目部署在一台服务器上就好了,整个项目所有的服务都由这台服务器提供.这就是单机结构.单机结构的缺点是显而易见的,单机的处理能力 ...

  4. k8s集群部署 | 二进制三节点(复用)高可用集群部署过程

    文章目录 1. 二进制部署三节点(复用)高可用 k8s 集群 1.1 环境规划阶段 1.1.1 实验架构图 1.1.2 系统版本说明 1.1.3 环境基本信息 1.1.4 k8s 网段划分 1.2 基 ...

  5. 集群资源分配_推荐一款MySQL日常运维和集群管理的自动化平台--Arkcontrol

    概述 今天主要推荐Arkcontrol这个平台,比inception还要强大,目前主要是用在mysql上,如果大家有玩mysql的话,不烦一起来看看吧~ Arkcontrol Arkcontrol是极 ...

  6. 自动化运维之k8s——Kubernetes集群部署、pod、service微服务、kubernetes网络通信

    目录 一.Kubernetes简介 1.Kubernetes简介 2.kubernetes设计架构 3.Kubernetes核心组件 4.kubernetes设计结构 二.Kubernetes部署 1 ...

  7. 【Druid】(四)Apache Druid 部署和配置(单机版 / Docker 容器版 / Kubernetes 集群版)

    文章目录 一.Apache Druid 部署 1.1 单机版 1.1.1 Jar 包下载 1.1.2 Druid 的安装部署 1.2 Docker 容器版 1.2.1 下载 1.2.2 配置 Dock ...

  8. 容器集群k8s从入门到精通实战第一天 kubernetes集群简介及其实例

    第一章 kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念.组件和工作原理. 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署 ...

  9. 频繁项目集java实现_关联分析(2):Apriori产生频繁项集

    在关联分析(1):概念及应用中,我们介绍了关联分析的应用场景.基本概念和规则产生思路.在本次的文章中,我们将介绍Apriori算法频繁项集产生的原理.文章中会涉及专有名词,不清楚概念的可在上一篇文章中 ...

最新文章

  1. linux 下的远程上传命令行,使用scp命令用命令行从服务器上传下载文件
  2. Android Studio 1.0 苹果电脑安装配置
  3. android开发实例-socket(一)
  4. Python多进程读写文件操作
  5. 有没有软件能限制cpu的使用符合_电脑使用中突然黑屏是什么原因?电脑突然黑屏但是主机还运行的解决方法...
  6. arguments的类型是Array吗?
  7. 安装CloudReady,体验Chrome OS
  8. 芯片设计流程 芯片的设计原理图
  9. 热点能打开网页wifi打不开_热点可以打开,无线WiFi打不开
  10. java 验证码不显示,页面没有显示验证码解决办法
  11. linux中括号的用法,【shell】Linux shell中括号的用法
  12. 2021年高教杯数学建模国赛C题思路详解
  13. 1367:查找二叉树(tree_a)
  14. 卧槽!又来一个Python大数据学习神器!
  15. SimulateSlidingTrack滑动轨迹库:一行代码获取仿真手动滑动轨迹
  16. 微价值:专访个人开发者800万用户之《系统清道夫》
  17. struts2深入浅出(备java基础,javaweb,javaee,框架)-任亮-专题视频课程
  18. Linux九阴真经之九阴白骨爪残卷7(Mariadb的三种安装方法)
  19. 你竟然是这样的人工智能?
  20. MacBook如何删除Windows并恢复消除磁盘分区?

热门文章

  1. laravel ajax评论,javascript-Laravel 5.8尝试进行AJAX调用以删除评...
  2. 笔记本nc10装linux,绝配:Ubuntu 9.04与上网本(NC10)
  3. 接触网怎么区分t线f线_这个形态是一种庄家线,它是完全由庄家控盘造成的,散户需重视...
  4. 1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. Ardino基础教程 11_PWM调控灯光亮度
  6. 【arduino】pro mini程序下载器接线方法,arduino pro mini 与nodemcu通信方案
  7. 学习 git clone 几种不同的协议
  8. 【个人笔记】《知了堂》MySQL中的数据类型
  9. jQuery操作json
  10. Vs2008 开发Wap 网站