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

众所周知,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 <RESTORE_NAME>

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

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

以下是导出对象的命令

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

第四节 局限性

以下是Velero的已知限制:

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

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

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

  • 不支持跨提供商快照。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sklearn评价指标

机器学习中&#xff0c;常见的评价指标如下&#xff1a; 准确率&#xff08;Accuracy&#xff09; 精确率&#xff08;Precision&#xff09; 灵敏度&#xff08;Sensitivity&#xff09;&#xff0c;即召回率&#xff08;Recall&#xff09; 特异度&#xff08;Specificity&am…

C# WPF抽屉效果实现

时间如流水&#xff0c;只能流去不流回&#xff01;点赞再看&#xff0c;养成习惯&#xff0c;这是您给我创作的动力&#xff01;本文 Dotnet9 https://dotnet9.com 已收录&#xff0c;站长乐于分享dotnet相关技术&#xff0c;比如Winform、WPF、ASP.NET Core等&#xff0c;亦有…

视频来了!Visual Studio Online 东半球首秀 @ .NET Conf 2019 中国峰会

2019 年 11 月 9 日&#xff0c; .NET Conf 2019 中国峰会于上海中谷小南国花园酒店举行&#xff0c;全国的 .NET 大咖相聚上海。这次我演讲的主题是《Visual Studio Code —— .NET 开发利器》。除了聊了聊韩老师开发的 .NET Core Test Explorer&#xff0c;还重点聊了聊 Visu…

开源性能监控工具APM之Skywalking和Pinpoint的实测对比

作者&#xff1a;zollty&#xff0c;资深程序员和架构师&#xff0c;私底下是个爱折腾的技术极客&#xff0c;架构师社区合伙人&#xff01;零&#xff0c;什么是APM&#xff1f;APM&#xff08;ApplicationPerformance Management&#xff09;是一种应用性能监控工具&#xff…

.Net Core 3.1,这匹黑马,2020年值得所有程序员重视!

强人掌舵 重回巅峰2014年萨蒂亚纳德拉接棒史蒂芬鲍尔默成为微软掌门人&#xff0c;五年的时间&#xff0c;纳德拉将夕阳西下、停滞不前的微软重新带回巅峰状态。2019年&#xff0c;微软今年挤下苹果&#xff0c;成为2019年全球市值最高企业&#xff0c;终止苹果过去7年来的龙头…

为什么你没有选择xamarin?

点击上方“dotNET全栈开发”&#xff0c;“设为星标”加“星标★”&#xff0c;每天11.50&#xff0c;好文必达全文约900字&#xff0c;预计阅读时间11分钟注&#xff1a;本篇文章只是关于xamarin的一个分享&#xff0c;没有xamarin技术深入的地方2019 年&#xff0c;注定会是 …

新款 Azure .NET SDK 如何设定 Content-Type

点击上方蓝字关注“汪宇杰博客”导语前不久我写了一篇《尝鲜新版 Azure .NET SDK》之后&#xff0c;使用了一段时间发现没爆&#xff0c;于是今天决定把博客的图片存储从旧版 SDK 迁移到新版 SDK&#xff0c;结果小收福报。Content-Type上传到 Azure Blob 的文件必须设置正确的…

聊聊程序员的成长与价值提升

一、 回顾我的职场体会我的职场生涯开始于十年前&#xff0c;一直在中小企业发展&#xff0c;未曾有幸到沿海那些高速发展的互联网公司工作&#xff0c;也就错过了互联网的大时代。但这不影响我的正常工作生活&#xff0c;事实上无论你身在何处&#xff0c;或在哪家公司&#x…

本地Jupyter连接远程linux服务器

连接的前提是本地装好了Jupyter&#xff0c;以及远程的服务器也配置好了。 先连接远程的Linux服务器&#xff0c;输入脚本命令&#xff1a; jupyter notebook得到执行结果&#xff1a; [I 14:29:11.290 NotebookApp] Serving notebooks from local directory: /home/ubuntu …

PowerBI 2019.12更新完美收官2019

PowerBI 的2019年12月更新来了。终于 PowerBI 完成了在 2019 年的进化。对于 12 月来说&#xff0c;最大的更新就是提供了主题设置&#xff0c;这使得我们彻底摆脱编写一个从来都不应该编写的JSON来设置主题文件。下面我们分别来详细介绍。自定义主题首先你需要打开预览&#x…

Task.CompletedTask和Task.Result小记

在任何返回Task的方法中&#xff0c;如果可以在不进行异步的情况下计算结果&#xff0c;则最好避免使用Task.Run。例如&#xff0c;一个简短的计算函数&#xff0c;或者测试中返回了一个预先计算过的结果&#xff0c;则无需使用Task.Run。例如&#xff0c;定义了一个返回Task的…

Dapr 运用之集成 Asp.Net Core Grpc 调用篇

前置条件&#xff1a; 《Dapr 运用》改造 ProductService 以提供 gRPC 服务从 NuGet 或程序包管理控制台安装 gRPC 服务必须的包Grpc.AspNetCore配置 Http/2gRPC 服务需要 Http/2 协议public static IHostBuilder CreateHostBuilder(string[] args) {return Host.CreateDefault…

蓝桥杯 印章拿金币

今日心得 对于大数组的定义要放在main函数外&#xff0c;否则会报错认真思考动态规划的边界设置&#xff0c;不是机械地设置1或0 动态转移方程&#xff1a; dp[i][j] dp[i-1][j]*j/n dp[i-1][j-1]*(n-j1)/n;参考代码 #include<bits/stdc.h> using namespace std;int…

ASP.NET Core Web API 最佳实践指南

原文地址&#xff1a; ASP.NET-Core-Web-API-Best-Practices-Guide介绍当我们编写一个项目的时候&#xff0c;我们的主要目标是使它能如期运行&#xff0c;并尽可能地满足所有用户需求。但是&#xff0c;你难道不认为创建一个能正常工作的项目还不够吗&#xff1f;同时这个项目…

蓝桥杯 砝码称重

试题&#xff1a; 思路&#xff1a; 经典的0-1背包问题&#xff0c;这题坑的地方在于方案数会超过边界&#xff0c;当发现当前重量可行时&#xff0c;直接归为1&#xff0c;防止dp数组累加时溢出。或者最后统计的时候&#xff0c;将判断条件从if(dp[n][i])>0改为if(dp[n][i…

[小技巧]你真的了解C#中的Math.Round么?

今天在某.NET Core 群中看到有人在问Math.Round的问题。其实这个问题之前有很多人遇到了&#xff0c;在此总结一下。开发者为了实现小数点后 2 位的四舍五入&#xff0c;编写了如下代码&#xff0c;var num Math.Round(12.125, 2);代码非常的简单&#xff0c;开发者实际得到的…

蓝桥杯 左baby右兄弟

试题&#xff1a; 思路&#xff1a; “左孩子右兄弟”是常见的多叉树转化成二叉树的方法。具体的实现方式是&#xff0c;从第二层最右边的结点开始&#xff0c;将将自己的孩子结点放到左边&#xff0c;左边一位的兄弟放到左边的结点上。对于是多支的孩子先递归转成一支树。 本…

一文带你了解如何打造持续学习文化

一个学习型组织&#xff0c;必须是通过致力于不懈地改进和促进创新的文化来实现的。持续学习文化能力描述了一套鼓励个人和整个企业不断增长知识、能力、绩效和创新的价值观和实践。它是精益企业的七个核心能力之一&#xff0c;每一个都是实现业务敏捷的关键点。为什么要持续学…

蓝桥杯 数字三角形 贪心+动态规划

参考代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef long long ll; int data[105][105];int main() {ios::sync_with_stdio(false);int n;cin >> n;for(int i 1; i < n; i){for(int j 1; j < i; j){cin >> data[i][j];}}int…

【.NET Core 跨平台 GUI 开发】第三篇:Gtk# 表格布局与事件处理

除了使用 HBox 和 VBox 进行布局外&#xff0c;还可以使用 Table 对象进行布局。这个有点像 html 的 table&#xff0c;适合方方正正大小差不多的空间集合。本篇将会对 Table 布局进行讲解&#xff0c;利用 Table 做出一个计算器的界面并使其可以响应按钮点击并将点击的按钮内容…