nginx 集群部署_如何备份和还原您的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
恭喜! 我们已经成功进行了备份和还原。
如果由于某些限制而无法使用Velero,则可以始终使用 Kubectl CLI 从现有 Kubernetes 集群中导出资源定义,然后将其应用于目标集群。
以下是导出对象的命令。
kubectl get deployment -o=yaml --export > deployments.yaml
第四节 局限性
以下是Velero的已知限制:
Velero当前每个提供商都支持一套凭据。 尚无法在不同的位置使用不同的凭据。
卷快照受提供程序创建快照位置限制。 例如,AWS和Azure不允许您在不同卷所在区域中创建卷快照。
每个Velero备份每个卷都有一个BackupStorageLocation和一个VolumeSnapshotLocation。无法将单个 Velero 备份同时发送到多个备份存储位置,也不能将单个卷快照同时发送到多个位置。
不支持跨提供商快照。
nginx 集群部署_如何备份和还原您的Kubernetes集群资源和持久卷?相关推荐
- 如何备份和还原您的Kubernetes集群资源和持久卷?
众所周知,Kubernetes可以协调连接在一起,作为一个工作单元,形成高可用性的计算机集群.Kubernetes包含许多抽象概念,这些抽象概念允许将容器化的应用程序部署到集群中,而无需将它们附加到单 ...
- nginx 集群部署_入门级实操教程!从概念到部署,全方位了解K8S Ingress!
Kubernetes Ingress用于添加规则,以将流量从外部路由到Kubernetes集群的服务中.在本文中你将了解ingress 的概念,以及用于路由外部流量到Kubernetes deploy ...
- 需要单机还是集群部署_单机、分布式、集群的区别与联系
一.单机结构 一个系统业务量很小的时候所有的代码都放在一个项目中,然后这个项目部署在一台服务器上就好了,整个项目所有的服务都由这台服务器提供.这就是单机结构.单机结构的缺点是显而易见的,单机的处理能力 ...
- k8s集群部署 | 二进制三节点(复用)高可用集群部署过程
文章目录 1. 二进制部署三节点(复用)高可用 k8s 集群 1.1 环境规划阶段 1.1.1 实验架构图 1.1.2 系统版本说明 1.1.3 环境基本信息 1.1.4 k8s 网段划分 1.2 基 ...
- 集群资源分配_推荐一款MySQL日常运维和集群管理的自动化平台--Arkcontrol
概述 今天主要推荐Arkcontrol这个平台,比inception还要强大,目前主要是用在mysql上,如果大家有玩mysql的话,不烦一起来看看吧~ Arkcontrol Arkcontrol是极 ...
- 自动化运维之k8s——Kubernetes集群部署、pod、service微服务、kubernetes网络通信
目录 一.Kubernetes简介 1.Kubernetes简介 2.kubernetes设计架构 3.Kubernetes核心组件 4.kubernetes设计结构 二.Kubernetes部署 1 ...
- 【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 ...
- 容器集群k8s从入门到精通实战第一天 kubernetes集群简介及其实例
第一章 kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念.组件和工作原理. 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署 ...
- 频繁项目集java实现_关联分析(2):Apriori产生频繁项集
在关联分析(1):概念及应用中,我们介绍了关联分析的应用场景.基本概念和规则产生思路.在本次的文章中,我们将介绍Apriori算法频繁项集产生的原理.文章中会涉及专有名词,不清楚概念的可在上一篇文章中 ...
最新文章
- linux 下的远程上传命令行,使用scp命令用命令行从服务器上传下载文件
- Android Studio 1.0 苹果电脑安装配置
- android开发实例-socket(一)
- Python多进程读写文件操作
- 有没有软件能限制cpu的使用符合_电脑使用中突然黑屏是什么原因?电脑突然黑屏但是主机还运行的解决方法...
- arguments的类型是Array吗?
- 安装CloudReady,体验Chrome OS
- 芯片设计流程 芯片的设计原理图
- 热点能打开网页wifi打不开_热点可以打开,无线WiFi打不开
- java 验证码不显示,页面没有显示验证码解决办法
- linux中括号的用法,【shell】Linux shell中括号的用法
- 2021年高教杯数学建模国赛C题思路详解
- 1367:查找二叉树(tree_a)
- 卧槽!又来一个Python大数据学习神器!
- SimulateSlidingTrack滑动轨迹库:一行代码获取仿真手动滑动轨迹
- 微价值:专访个人开发者800万用户之《系统清道夫》
- struts2深入浅出(备java基础,javaweb,javaee,框架)-任亮-专题视频课程
- Linux九阴真经之九阴白骨爪残卷7(Mariadb的三种安装方法)
- 你竟然是这样的人工智能?
- MacBook如何删除Windows并恢复消除磁盘分区?
热门文章
- laravel ajax评论,javascript-Laravel 5.8尝试进行AJAX调用以删除评...
- 笔记本nc10装linux,绝配:Ubuntu 9.04与上网本(NC10)
- 接触网怎么区分t线f线_这个形态是一种庄家线,它是完全由庄家控盘造成的,散户需重视...
- 1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
- Ardino基础教程 11_PWM调控灯光亮度
- 【arduino】pro mini程序下载器接线方法,arduino pro mini 与nodemcu通信方案
- 学习 git clone 几种不同的协议
- 【个人笔记】《知了堂》MySQL中的数据类型
- jQuery操作json
- Vs2008 开发Wap 网站