如何备份和还原您的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;亦有…

seaborn.heatmap概述

点击这里查看官网文档 如果是单纯看数据分布情况&#xff0c;则直接调用包即可。 如果是想看特征两两之间的相似图&#xff0c;则需先求一个相关系数矩阵。 参考样例 import numpy as np import seaborn as sns import matplotlib.pyplot as pltnp.random.seed(10) sns.set_t…

视频来了!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…

PAT-A Sign In and Sign Out

这题挺水的&#xff0c;就是要注意char数组长度至少设置为16&#xff0c;设成15由于存在结尾结束符&#xff0c;会导致长度为15的ID无法存入数组中。 #include<bits/stdc.h> using namespace std;int main() {int n;scanf("%d", &n);char be[16], ed[16];…

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

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

PAT-A Maximum Subsequence Sum

是道常规的动态规划题&#xff0c;不过我有被卡住&#xff08;丢脸 需要考虑当序列整体求和为0的情况。 #include<bits/stdc.h> using namespace std;int main() {int k;vector<int> v;scanf("%d", &k);int temp;bool all_negative true;for(int i…

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

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

GridSearchCV和RandomizedSearchCV(以SVM为例)

GridSearchCV参考代码 CC []gammas []for i in range(-5, 16, 2):CC.append(2 ** i)for i in range(3, -16, -2):gammas.append(2 ** i)param_grid {"C": CC, "gamma": gammas}gs GridSearchCV(SVC(probabilityTrue), param_grid, cv10)gs.fit(x, y)pr…

为什么你没有选择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 的文件必须设置正确的…

使用Java查询Sql Server数据库

import java.sql.*;public class Connect {static Connection con;static Statement stmt;public static void doConnect() throws SQLException{String JDriver "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQL数据库引擎String connectDB "jdbc:sql…

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

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

交叉验证中n_jobs=-1并行运算

scikit_learn包中的cross_val_score&#xff08;&#xff09;是支持并行运算&#xff0c;但这并不是说只要让n_jobs-1就能让CPU使用率接近100%。这要取决于交叉验证的折数cv&#xff0c;假如折数cv是n&#xff0c;这意味着最多只能使用n个物理CPU。 score1 cross_val_score(c…

本地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的…

深度学习初步理解

梯度下降概念&#xff1a; 我们用到一种名为梯度下降&#xff08;gradient descent&#xff09;的方法&#xff0c; 这种方法几乎可以优化所有深度学习模型。 它通过不断地在损失函数递减的方向上更新参数来降低误差。 梯度下降最简单的用法是计算损失函数&#xff08;数据集中…

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…