首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Portworx Essentials + Velero:备份Kubernetes应用

Portworx Essentials + Velero:备份Kubernetes应用

原创
作者头像
Portworx
修改于 2020-05-08 09:44:08
修改于 2020-05-08 09:44:08
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

Portworx近期发布了免费的Essentials版本。(https://portworx.com/announcing-portworx-essentials/)。Essentias)。

Essentials版本支持小规模Kubernetes生产系统运行所需的必要功能:也许是CICD的pipeline,或是处于开发早期的面向用户的APP。不论是那种应用,都需要更快的存储、高可用、加密、快照等等必要功能。PortworxEssentials提供了这些必要功能。

备份和恢复Kubernetes集群和所有应用,或仅备份和恢复一个独立的Kubernetes应用,包括数据、应用配置和Kubernetes对象(如CRDs、Secrets、服务账户等),具体应该怎么做呢?

Portworx Enterprise版本的客户可以使用PX-Backup,来完成一个端到端的备份和恢复解决方案。但如果用户正在使用Portworx Essentials,则需要用户把Portworx快照与开源Kubernetes备份方案Velero配合来使用。Velero可以备份Kubernetes状态比如应用配置、和存储在etcd的对象。这个方案很适初始小型规模的Kubernetes环境。当用户的Kubernetes环境规模扩大以后,可以转向使用Portworx Enterprise和PX-Backup。

接下来我们会介绍如何使用Portworx Essentials和Velero,通过Portworx快照来完成备份和恢复功能。

安装Portworx Essentials

你可以登录Portworx网站来获取免费的Portworx Essentials(https://ask.portworx.com/essentials/?utm_medium=website&utm_source=pricing%20page&utm_campaign=Essentials)。

Portworx微信公众号上一期的文章,专门介绍了如何安装和使用Portworx Essentials,可供您参考。

在AWS上使用S3来安装Velero Server组件

为了配合使用Velero和Portworx,用户必须安装服务组件以及对象存储。在下面的操作中,我们使用的是Amazon的S3,建立S3的操作步骤可以参考这里(https://github.com/vmware-tanzu/velero-plugin-for-aws#create-s3-bucket)。

注意:我们在本文中使用S3作为我们备份中需要的对象存储。也可以使用其他的对象存储,比如Minio、微软Azure、GCP,等,只要能够正确的配置即可。

一旦配置完成了Amazon S3,你可以通过下面的命令来安装Velero,首先安装Velero,安装完成后我们会增加Portworx的插件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.0.1 \
--bucket $BUCKET \
--backup-location-config region=$REGION \
--snapshot-location-config region=$REGION \
--secret-file ./credentials-velero

接下来,因为我们需要使用Portworx来完成云中的PV的快照,我们可以使用下面的命令来添加Portworx插件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ velero plugin add portworx/velero-plugin:1.0.0

一旦以上的步骤都顺利完成,就可以继续进行下面的配置了。

增加Portworx云身份验证

Portworx会创建基于云中块存储的快照(https://docs.portworx.com/reference/cli/cloud-snaps/)来备份用户的数据。因此,我们需要为Portworx配置对象存储的云身份验证。我们使用Pxctl – Portworx的CLI工具,来进行操作。首先,通过一个Portworx Pod创建PX-POD环境。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PX_POD=$(kubectl get pods -l name=portworx -n kube-system -o jsonpath='{.items[0].metadata.name}')

接下来,我们要确保我们的云快照是被加密的,这样我们可以创建一个Secret,并用这个Secret作为我们的加密密文,传递给Portworx。一个简单的方式是使用64位的哈希字符串。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "mysupersecret" | base64
bXlzdXBlcnNlY3JldAo=

接下来,我们通过pxctl,并基于Amazon的密钥和加密密文来创建我们的身份验证。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$kubectl exec $PX_POD -n kube-system -- /opt/pwx/bin/pxctl credentials create --s3-access-key  --s3-secret-key  --s3-region us-east-1 --encryption-passphrase bXlzdXBlcnNlY3JldAo= --s3-endpoint s3.amazonaws.com --provider s3 awss3
Credentials created successfully, UUID:f8d2cf6d-ab50-4e42-90b6-9930336ad898

为Portworx创建快照的位置

Velero可以为持久卷的数据和应用元数据使用SnapshotLocation(https://velero.io/docs/master/api-types/volumesnapshotlocation/)和BackupLocation(https://velero.io/docs/master/locations/)。可以使用下面的命令。

注意:你将会需要使用credId,它是一个从上文的你的pxctl 验证身份创建命令里产生的UUID。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ velero snapshot-location create portworx-cloud --provider portworx.io/portworx --config type=cloud,credId=f8d2cf6d-ab50-4e42-90b6-9930336ad898
Snapshot volume location "portworx-cloud" configured successfully.

你可以通过使用Kubectl命令,来检查卷快照的位置,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl get volumesnapshotlocation -n velero
NAME AGE
default 17m
portworx-cloud 30s

创建一个应用(比如WordPress

现在我们来使用PortworxEssentials和Velero。我们需要一个应用,填入一些数据,然后做备份操作。你可以使用WordPress+MySQL应用,部署到一个名为WordPress的命名空间里。(https://github.com/wallnerryan/pwx-app-catalog/tree/master/apps/Blog/Wordpress)

注意:可以通过上面的链接,查看如何部署WordPress和Mysql的操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl get po -n wordpress
NAME READY STATUS RESTARTS AGE
pod/wordpress-79c6db4c56-4sjjs 1/1 Running 0 72m
pod/wordpress-79c6db4c56-697rt 1/1 Running 0 72m
pod/wordpress-79c6db4c56-92whn 1/1 Running 0 72m
pod/wordpress-mysql-d8f757c9d-sknz8 1/1 Running 0 76m

你可以看见两个Portworx卷,分别备份了WordPress和MySQL。其中一个卷是由多个WordPress Pods共享的RWX,另一个是为单独MySQL数据库后端独享的RWO。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl get pvc -n wordpress
NAME STATUS VOLUME STORAGECLASS AGE
mysql-pvc-1 Bound pvc-45837d2c... portworx-sc-repl3 72m
wp-pv-claim Bound pvc-cb520f93... portworx-sc-repl3-shared 72m

通过访问WordPress的服务端点,并且按照提示来创建第一篇文章作为应用的数据。可以通过kubectl get svc -n wordpress 命令来获取端点的信息。默认状态下,这个应用可以被NodePort访问。(https://kubernetes.io/docs/concepts/services-networking/service/#nodeport)

使用Portworx和Velero来完成MySQL+Wordpress的备份

现在我们在应用中已经创建了一些数据,让我们接着来备份一下应用和持久卷。

注意:–wait是可选的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ velero backup create wordpress-backup --include-namespaces=wordpress --snapshot-volumes --volume-snapshot-locations portworx-cloud --wait
Backup request "wordpress-backup" submitted successfully.
Waiting for backup to complete. You may safely press ctrl-c to stop waiting - your backup will continue in the background.
...............................................
Backup completed with status: Completed. You may check for more information using the commands `velero backup describe wordpress-backup` and `velero backup logs wordpress-backup`.

赞!我们已经使用Portworx和Velero成功创建了应用和数据的备份。

注意:Portworx Essentials的功能和限制(https://docs.portworx.com/concepts/portworx-essentials/),只允许每天每个卷备份一个云快照。同一天创建第二个备份会失败。我们可以等到第二天再创建备份,或者如果我们需要更频繁的备份的话,可以使用PX-Backup(https://portworx.com/cloud-native-application-backups-using-px-backup/)。

从备份中恢复MySQL和WordPress

为了模拟系统错误的出现,我们可以删除整个WordPress命名空间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl delete namespace wordpres

这样我们的WordPress和MySQL的部署就完全消失了,以及我们的PVs和PVCs也消失了。不用担心,我们从备份中来恢复。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ velero restore create --from-backup wordpress-backup
Restore request "wordpress-backup-20200422153128" submitted successfully.
Run `velero restore describe wordpress-backup-20200422153128` or `velero restore logs wordpress-backup-20200422153128` for more details.

恢复操作完成后,你就可以重新访问你的NodePort端点了,你所有的数据也都恢复了。

注意:恢复操作中还有其他的选项,比如恢复一个新的命名空间。可以参考这里的文档。(https://velero.io/docs/master/restore-reference/)。

希望这篇文章能够帮助您更好的在小规模Kubernetes生产系统里管理有状态应用!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
android 网络通信框架volly
1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。 这是Volley名称的由来: a burst or emission of many things or a large amount at o
xiangzhihong
2018/01/30
1.3K0
android 网络通信框架volly
Android训练课程(Android Training) - 使用Volley传输网络数据(Transmitting Network Data Using Volley)
Volley 是一个 HTTP 库,它使得在Android应用程序中操作网络更容易,是重要的,更多快速的。Volley 属于“开放源代码项目”。.
张云飞Vir
2020/03/16
2.5K0
Volley框架源码解析
在 2013 年的 Google I/O 大会上,Volley 网络通信框架正式发布。Volley 框架被设计为适用于网络请求非常频繁但是数据量并不是特别大的情景,正如它的名字一样。Volley 相比其他网络框架而言,采用了在 Android 2.3 以下使用 HttpClient ,而 Android 2.3 及以上使用 HttpUrlConnection 的方案。这是因为在 Android 2.3 以下时,HttpUrlConnection 并不完善,有很多 bug 存在。因此在 Android 2.3 以下最好使用 HttpClient 来进行网络通信;而在 Android 2.3 及以上,HttpUrlConnection 比起 HttpClient 来说更加简单易用,修复了之前的 bug 。所以在 Android 2.3 及以上我们使用 HttpUrlConnection 来进行网络通信。
俞其荣
2022/07/28
2.2K0
Volley框架源码解析
android 封装网络框架(java企业自己封装的框架)
本文讲述了Android网络框架OKGo封装,封装的框架适用于项目当中,适合新手操作,OKGO框架本身就以简单易上手而深受喜欢,而此文就是基于框架之上再次封装,废话不多说,直接开始吧!
全栈程序员站长
2022/07/28
1.2K0
Android 二次封装网络加载框架
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/78577450
程序员徐公
2018/09/17
1.6K0
Android 二次封装网络加载框架
Android Apk瘦身方案2——gradle插件将png自动压缩为webp
在 mergeRes 和 processRes 任务之间插入 WebP 压缩任务,如下图所示:
老马的编程之旅
2022/06/23
1.7K0
Android Apk瘦身方案2——gradle插件将png自动压缩为webp
Android图片加载框架最全解析(六),探究Glide的自定义模块功能
用户1158055
2018/01/08
2.1K1
Android图片加载框架最全解析(六),探究Glide的自定义模块功能
Android OkHttp+Retrofit+RxJava搭建网络访问框架(含源码)
  在实际开发APP中,网络访问是必不可少的,最开始访问网络是使用HttpURLConnection、而后面有了一些框架比如Volley、OkHttp、Retrofit等。那么你可能看到最多的是OkHttp,因为它很出名,Google也推荐你使用此框架进行网络访问。你可能会说Retrofit,Retrofit其实就是对OkHttp的二次封装。还有RxJava,这个又是用来干嘛的呢?为什么要将三者组合起来,组合有什么优势吗?带着这些问题看下去。
晨曦_LLW
2022/05/10
4.1K3
Android OkHttp+Retrofit+RxJava搭建网络访问框架(含源码)
Android OkHttp+Retrofit+RxJava搭建网络访问框架
  在实际开发APP中,网络访问是必不可少的,最开始访问网络是使用HttpURLConnection、而后面有了一些框架比如Volley、OkHttp、Retrofit等。那么你可能看到最多的是OkHttp,因为它很出名,Google也推荐你使用此框架进行网络访问。你可能会说Retrofit,Retrofit其实就是对OkHttp的二次封装。还有RxJava,这个又是用来干嘛的呢?为什么要将三者组合起来,组合有什么优势吗?带着这些问题看下去。
晨曦_LLW
2021/01/14
1.5K2
Android  OkHttp+Retrofit+RxJava搭建网络访问框架
精选Android中高级面试题 -- 终局之篇:高级干货
链接:https://juejin.im/post/5c984e926fb9a070c975a9b4
陈宇明
2020/12/16
1.4K0
精选Android中高级面试题 -- 终局之篇:高级干货
Android Automotive Framework调试技巧
三次握手只是一个数据传输的过程,但是,我们传输前需要一些准备工作,比如将创建一个套接字,收集一些计算机的资源,将一些资源绑定套接字里面,以及接受和发送数据的函数等等,这些功能接口在一起构成了socket的编程
wizzie
2022/12/22
5.7K0
Android Automotive Framework调试技巧
《Android面试题思考与解答》2021年1月刊
要声明的一点是:面试题的目的不是为了让大家背题,而是从不同维度帮助大家复习,取长补短。
码上积木
2021/03/10
6490
《Android面试题思考与解答》2021年3月刊
要声明的一点是:面试题的目的不是为了让大家背题,而是从不同维度帮助大家复习,取长补短。
码上积木
2021/04/16
1.5K0
[Java面试二]Java基础知识精华部分.
一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础; JAVAME:Jav
一枝花算不算浪漫
2018/05/18
1.2K0
面试框架题整理
面试题总结 一基础部分 1.1 集合 1.1.1 fail-fast 与 fail-safe 机制有什么区别
全栈程序员站长
2022/08/25
1.3K0
面试框架题整理
张孝祥java就业面试题大全
从享受生活的角度上来说:“程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做;第二,你非常痴迷和爱好程序,并且在这方面有一些天赋和优势。程序员的结局也是有两种:第一,默默退休,第二以程序员为起点或跳板,注意积累,跟对了好的老板或团队,找到和很好的搭档自己创业,成为IT金领和富翁。” 人们在时间面前是平等的,吾生也有涯,所以,你的经验更丰富点,那不算什么,经验是用时间积累的,你一生只有那么多时间,你能积累多少经验呢?最重要的是你的学习能力和学习方法,这个发挥的能量可以有很大差异,要提高学习能力和学习方法首先要学会思考和总结,要学会掌握事物的根本性的东西,而不是一些表面的细节。学习方法和学习能力对于IT工作者来说尤为重要,因为IT行业技术更新太快,并且细节太多,同一个技术的细节变来变去也是常有的事情,所以,IT技术学习者绝不能照着书籍和老师的讲解死记硬背和生搬硬套。搞IT工作很累人,如果学习方法不对、学习能力不强,那就更累了,不过,这怨不得别人,你的学习方法和学习能力只适合做刷盘子的工作,却非要跑到程序员圈子里来混,那谁能有办法拯救你! 在没有人指引的情况下,只能是自己一个知识点、一个知识点地漫无目的学习,等到积累了足够的知识量后,才有能力开始思考和琢磨原理方面的问题,这个学习过程很漫长。如果能在好老师的指引下,老师会启发你先思考原理问题,然后再去学习一个具体的知识点,让你能够举一反三、触类旁通,这样的学习效率就会更高。 多学了几个知识,并不能说明你就很厉害了,只能说是你比别人投入了更多的时间和精力而已,别人想做也能做到!不是你学了多少知识就算厉害了,关键是要用好学到的知识,要让学到的知识发挥出最大的社会价值和经济价值,这才是最厉害的。 另外,一个人的未来和造化,会深受环境的影响,所谓孟母三迁,近朱者赤、近墨者黑的大大道理,这些典故大家不一定能深刻领悟和感受,我们就不多说了。就拿现代比较接近我们生活的事例来说,如果你周围的朋友全是以擦皮鞋为生、每月辛辛苦苦下来就挣1500元,那么估计你的职业也是跟着擦皮鞋了,即使你再聪明和再勤奋,顶多每月比你那帮朋友多挣300元,合下来也就区区1800元/月。前几年只要抓住了大势,没钱全部找银行贷款了在北京买房、到山西开煤矿,是头猪也能每年大把大把地捞钱,如果你周围的朋友全是投机倒把的买房和开煤矿者,你的职业自然也是与他们干同样的事情,即使你再差,每年也能挣到百来万不成问题,这就是环境的重要性。聪明的你因为没有机会置身于炒房团中,比那些有机会接触炒房者的猪挣得就要少、就要累。到传智播客的环境中来,你就很有机会拿到高薪了,你可以不参加传智播客的培训,但只要想办法与传智播客的学员们住在一起,成功的机会就大多了。
MickyInvQ
2023/04/04
1K0
相关推荐
android 网络通信框架volly
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档