Portworx Essentials + Velero:備份Kubernetes應(yīng)用

?

Portworx近期發(fā)布了免費(fèi)的Essentials版本承耿。(https://portworx.com/announcing-portworx-essentials/)。Essentias)劲弦。

Essentials版本支持小規(guī)模Kubernetes生產(chǎn)系統(tǒng)運(yùn)行所需的必要功能:也許是CICD的pipeline,或是處于開發(fā)早期的面向用戶的APP蔬捷。不論是那種應(yīng)用企巢,都需要更快的存儲、高可用丑念、加密涡戳、快照等等必要功能。PortworxEssentials提供了這些必要功能脯倚。

備份和恢復(fù)Kubernetes集群和所有應(yīng)用渔彰,或僅備份和恢復(fù)一個(gè)獨(dú)立的Kubernetes應(yīng)用,包括數(shù)據(jù)推正、應(yīng)用配置和Kubernetes對象(如CRDs恍涂、Secrets、服務(wù)賬戶等)舔稀,具體應(yīng)該怎么做呢乳丰?

Portworx Enterprise版本的客戶可以使用PX-Backup掌测,來完成一個(gè)端到端的備份和恢復(fù)解決方案内贮。但如果用戶正在使用Portworx Essentials,則需要用戶把Portworx快照與開源Kubernetes備份方案Velero配合來使用汞斧。Velero可以備份Kubernetes狀態(tài)比如應(yīng)用配置夜郁、和存儲在etcd的對象。這個(gè)方案很適初始小型規(guī)模的Kubernetes環(huán)境粘勒。當(dāng)用戶的Kubernetes環(huán)境規(guī)模擴(kuò)大以后竞端,可以轉(zhuǎn)向使用Portworx Enterprise和PX-Backup。

接下來我們會介紹如何使用Portworx Essentials和Velero庙睡,通過Portworx快照來完成備份和恢復(fù)功能事富。

安裝Portworx Essentials

你可以登錄Portworx網(wǎng)站來獲取免費(fèi)的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啡邑,用戶必須安裝服務(wù)組件以及對象存儲贱勃。在下面的操作中,我們使用的是Amazon的S3,建立S3的操作步驟可以參考這里(https://github.com/vmware-tanzu/velero-plugin-for-aws#create-s3-bucket)贵扰。

注意:我們在本文中使用S3作為我們備份中需要的對象存儲仇穗。也可以使用其他的對象存儲,比如Minio戚绕、微軟Azure纹坐、GCP,等列肢,只要能夠正確的配置即可恰画。

一旦配置完成了Amazon S3,你可以通過下面的命令來安裝Velero瓷马,首先安裝Velero拴还,安裝完成后我們會增加Portworx的插件。

$ 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

接下來欧聘,因?yàn)槲覀冃枰褂肞ortworx來完成云中的PV的快照片林,我們可以使用下面的命令來添加Portworx插件。

$ velero plugin add portworx/velero-plugin:1.0.0

一旦以上的步驟都順利完成怀骤,就可以繼續(xù)進(jìn)行下面的配置了费封。

增加Portworx云身份驗(yàn)證

Portworx會創(chuàng)建基于云中塊存儲的快照(https://docs.portworx.com/reference/cli/cloud-snaps/)來備份用戶的數(shù)據(jù)。因此蒋伦,我們需要為Portworx配置對象存儲的云身份驗(yàn)證弓摘。我們使用Pxctl – Portworx的CLI工具,來進(jìn)行操作痕届。首先韧献,通過一個(gè)Portworx Pod創(chuàng)建PX-POD環(huán)境。

PX_POD=$(kubectl get pods -l name=portworx -n kube-system -o jsonpath='{.items[0].metadata.name}')

接下來研叫,我們要確保我們的云快照是被加密的锤窑,這樣我們可以創(chuàng)建一個(gè)Secret,并用這個(gè)Secret作為我們的加密密文嚷炉,傳遞給Portworx渊啰。一個(gè)簡單的方式是使用64位的哈希字符串。

echo "mysupersecret" | base64

bXlzdXBlcnNlY3JldAo=

接下來申屹,我們通過pxctl绘证,并基于Amazon的密鑰和加密密文來創(chuàng)建我們的身份驗(yàn)證。

$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 awss3Credentials created successfully, UUID:f8d2cf6d-ab50-4e42-90b6-9930336ad898

為Portworx創(chuàng)建快照的位置

Velero可以為持久卷的數(shù)據(jù)和應(yīng)用元數(shù)據(jù)使用SnapshotLocation(https://velero.io/docs/master/api-types/volumesnapshotlocation/)和BackupLocation(https://velero.io/docs/master/locations/)哗讥∪履牵可以使用下面的命令。

注意:你將會需要使用credId忌栅,它是一個(gè)從上文的你的pxctl?驗(yàn)證身份創(chuàng)建命令里產(chǎn)生的UUID车酣。

$ velero snapshot-location create portworx-cloud --provider portworx.io/portworx --config type=cloud,credId=f8d2cf6d-ab50-4e42-90b6-9930336ad898Snapshot volume location "portworx-cloud" configured successfully.

你可以通過使用Kubectl命令曲稼,來檢查卷快照的位置,

$ kubectl get volumesnapshotlocation -n velero

NAME AGEdefault 17mportworx-cloud 30s

創(chuàng)建一個(gè)應(yīng)用(比如WordPress)

現(xiàn)在我們來使用PortworxEssentials和Velero湖员。我們需要一個(gè)應(yīng)用贫悄,填入一些數(shù)據(jù),然后做備份操作娘摔。你可以使用WordPress+MySQL應(yīng)用窄坦,部署到一個(gè)名為WordPress的命名空間里。(https://github.com/wallnerryan/pwx-app-catalog/tree/master/apps/Blog/Wordpress)

注意:可以通過上面的鏈接凳寺,查看如何部署WordPress和Mysql的操作鸭津。

$ kubectl get po -n wordpress

NAME READY STATUS RESTARTS AGE

pod/wordpress-79c6db4c56-4sjjs 1/1 Running 0 72mpod/wordpress-79c6db4c56-697rt 1/1 Running 0 72mpod/wordpress-79c6db4c56-92whn 1/1 Running 0 72mpod/wordpress-mysql-d8f757c9d-sknz8 1/1 Running 0 76m

你可以看見兩個(gè)Portworx卷,分別備份了WordPress和MySQL肠缨。其中一個(gè)卷是由多個(gè)WordPress Pods共享的RWX逆趋,另一個(gè)是為單獨(dú)MySQL數(shù)據(jù)庫后端獨(dú)享的RWO。

$ kubectl get pvc -n wordpress

NAME STATUS VOLUME STORAGECLASS AGE

mysql-pvc-1 Bound pvc-45837d2c... portworx-sc-repl3 72mwp-pv-claim Bound pvc-cb520f93... portworx-sc-repl3-shared 72m

通過訪問WordPress的服務(wù)端點(diǎn)晒奕,并且按照提示來創(chuàng)建第一篇文章作為應(yīng)用的數(shù)據(jù)闻书。可以通過kubectl get svc -n wordpress?命令來獲取端點(diǎn)的信息脑慧。默認(rèn)狀態(tài)下魄眉,這個(gè)應(yīng)用可以被NodePort訪問。(https://kubernetes.io/docs/concepts/services-networking/service/#nodeport)

使用Portworx和Velero來完成MySQL+Wordpress的備份

現(xiàn)在我們在應(yīng)用中已經(jīng)創(chuàng)建了一些數(shù)據(jù)闷袒,讓我們接著來備份一下應(yīng)用和持久卷坑律。

注意:–wait是可選的。

$ velero backup create wordpress-backup --include-namespaces=wordpress --snapshot-volumes --volume-snapshot-locations portworx-cloud --waitBackup 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`.

贊囊骤!我們已經(jīng)使用Portworx和Velero成功創(chuàng)建了應(yīng)用和數(shù)據(jù)的備份晃择。

注意:Portworx Essentials的功能和限制(https://docs.portworx.com/concepts/portworx-essentials/),只允許每天每個(gè)卷備份一個(gè)云快照淘捡。同一天創(chuàng)建第二個(gè)備份會失敗藕各。我們可以等到第二天再創(chuàng)建備份池摧,或者如果我們需要更頻繁的備份的話焦除,可以使用PX-Backup(https://portworx.com/cloud-native-application-backups-using-px-backup/)。

從備份中恢復(fù)MySQL和WordPress

為了模擬系統(tǒng)錯(cuò)誤的出現(xiàn)作彤,我們可以刪除整個(gè)WordPress命名空間膘魄。

$ kubectl delete namespace wordpres

這樣我們的WordPress和MySQL的部署就完全消失了,以及我們的PVs和PVCs也消失了竭讳。不用擔(dān)心创葡,我們從備份中來恢復(fù)。

$ velero restore create --from-backup wordpress-backupRestore request "wordpress-backup-20200422153128" submitted successfully.Run `velero restore describe wordpress-backup-20200422153128` or `velero restore logs wordpress-backup-20200422153128` for more details.

恢復(fù)操作完成后绢慢,你就可以重新訪問你的NodePort端點(diǎn)了灿渴,你所有的數(shù)據(jù)也都恢復(fù)了洛波。

注意:恢復(fù)操作中還有其他的選項(xiàng),比如恢復(fù)一個(gè)新的命名空間骚露〉偶罚可以參考這里的文檔。(https://velero.io/docs/master/restore-reference/)棘幸。


希望這篇文章能夠幫助您更好的在小規(guī)模Kubernetes生產(chǎn)系統(tǒng)里管理有狀態(tài)應(yīng)用焰扳!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市误续,隨后出現(xiàn)的幾起案子吨悍,更是在濱河造成了極大的恐慌,老刑警劉巖蹋嵌,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件育瓜,死亡現(xiàn)場離奇詭異,居然都是意外死亡栽烂,警方通過查閱死者的電腦和手機(jī)爆雹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愕鼓,“玉大人钙态,你說我怎么就攤上這事」交危” “怎么了册倒?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長磺送。 經(jīng)常有香客問我驻子,道長,這世上最難降的妖魔是什么估灿? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任崇呵,我火速辦了婚禮,結(jié)果婚禮上馅袁,老公的妹妹穿的比我還像新娘域慷。我一直安慰自己,他們只是感情好汗销,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布犹褒。 她就那樣靜靜地躺著,像睡著了一般弛针。 火紅的嫁衣襯著肌膚如雪叠骑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天削茁,我揣著相機(jī)與錄音宙枷,去河邊找鬼掉房。 笑死,一個(gè)胖子當(dāng)著我的面吹牛慰丛,可吹牛的內(nèi)容都是我干的圃阳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼璧帝,長吁一口氣:“原來是場噩夢啊……” “哼捍岳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起睬隶,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锣夹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苏潜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體银萍,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年恤左,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贴唇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡飞袋,死狀恐怖戳气,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巧鸭,我是刑警寧澤瓶您,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站纲仍,受9級特大地震影響呀袱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜郑叠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一夜赵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乡革,春花似錦寇僧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歌豺。三九已至推穷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間类咧,已是汗流浹背馒铃。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工蟹腾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人区宇。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓娃殖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親议谷。 傳聞我的和親對象是個(gè)殘疾皇子炉爆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355