velero入門
一 概述
Velero(以前稱為 Heptio Ark)為您提供了用于備份和恢復(fù) Kubernetes 集群資源和持久卷的工具。您可以通過云提供商或本地運(yùn)行 Velero。 Velero 讓您:
備份您的集群并在丟失時(shí)恢復(fù)。
將集群資源遷移到其他集群。
將您的生產(chǎn)集群復(fù)制到開發(fā)和測(cè)試集群。
二 velero組成
在集群上運(yùn)行的服務(wù)器
本地運(yùn)行的命令行客戶端
三 velero工作原理
每個(gè) Velero 操作——按需備份、計(jì)劃備份、還原——都是一個(gè)定制資源,使用 Kubernetes 定制資源定義(CRD)定義,并存儲(chǔ)在 etcd 中。Velero 還包括處理自定義資源以執(zhí)行備份、恢復(fù)和所有相關(guān)操作的控制器。您可以備份或還原集群中的所有對(duì)象,或者可以按類型、命名空間和/或標(biāo)簽篩選對(duì)象。Velero 是災(zāi)難恢復(fù)用例的理想選擇,也適用于在集群上執(zhí)行系統(tǒng)操作(比如升級(jí))之前對(duì)應(yīng)用程序狀態(tài)進(jìn)行快照。
3.1 按需備份
將復(fù)制的 Kubernetes 對(duì)象的 tarball 上傳到云對(duì)象存儲(chǔ)中。
您可以選擇指定要在備份期間執(zhí)行的備份掛鉤。例如,您可能需要告訴數(shù)據(jù)庫在拍攝快照之前將其內(nèi)存緩沖區(qū)刷新到磁盤。更多關(guān)于備用鉤子。
您可以選擇指定要在備份期間執(zhí)行的備份掛鉤。例如,您可能需要告訴數(shù)據(jù)庫在拍攝快照之前將其內(nèi)存緩沖區(qū)刷新到磁盤。更多關(guān)于備用鉤子。
請(qǐng)注意,集群備份并非嚴(yán)格原子性的。如果在備份時(shí)正在創(chuàng)建或編輯 Kubernetes 對(duì)象,則它們可能不會(huì)包含在備份中。捕獲不一致信息的幾率很低,但有可能。
3.2 計(jì)劃備份
計(jì)劃操作允許您定期備份數(shù)據(jù)。第一次備份在第一次創(chuàng)建計(jì)劃時(shí)執(zhí)行,后續(xù)備份按計(jì)劃的指定時(shí)間間隔進(jìn)行。這些間隔由 Cron 表達(dá)式指定。
計(jì)劃備份以名稱
3.3 恢復(fù)
恢復(fù)操作允許您從先前創(chuàng)建的備份中恢復(fù)所有對(duì)象和持久卷。您還可以僅恢復(fù)對(duì)象和持久卷的篩選子集。 Velero 支持多個(gè)命名空間重映射——例如,在單個(gè)還原中,命名空間“abc”中的對(duì)象可以在命名空間“def”下重新創(chuàng)建,命名空間“123”中的對(duì)象可以在“456”下重新創(chuàng)建。
還原的默認(rèn)名稱為
默認(rèn)情況下,備份存儲(chǔ)位置以讀寫模式創(chuàng)建。但是,在還原期間,您可以將備份存儲(chǔ)位置配置為只讀模式,這將禁用該存儲(chǔ)位置的備份創(chuàng)建和刪除。這有助于確保在還原方案期間不會(huì)無意中創(chuàng)建或刪除備份。
您可以選擇指定要在還原期間或資源還原后執(zhí)行的還原掛鉤。例如,您可能需要在數(shù)據(jù)庫應(yīng)用程序容器啟動(dòng)之前執(zhí)行自定義數(shù)據(jù)庫還原操作。更多關(guān)于恢復(fù)鉤子。
3.4 備份工作流
Velero 客戶端調(diào)用 Kubernetes API 服務(wù)器以創(chuàng)建備份對(duì)象。
BackupController 注意到新的 Backup 對(duì)象并執(zhí)行驗(yàn)證。
BackupController 開始備份過程。它通過向 API 服務(wù)器查詢資源來收集要備份的數(shù)據(jù)。
BackupController 調(diào)用對(duì)象存儲(chǔ)服務(wù)(例如 AWS S3)來上傳備份文件。
默認(rèn)情況下,velero backup create 為任何持久卷制作磁盤快照。您可以通過指定附加標(biāo)志來調(diào)整快照。運(yùn)行 velero backup create --help 以查看可用標(biāo)志。可以使用選項(xiàng) --snapshot-volumes=false 禁用快照。
3.5 備份的 API 版本
Velero 使用 Kubernetes API 服務(wù)器的首選版本為每個(gè)組/資源備份資源。恢復(fù)資源時(shí),目標(biāo)集群中必須存在相同的 API 組/版本才能成功恢復(fù)。
例如,如果備份的集群在 things API 組中有一個(gè) gizmos 資源,具有 group/versions things/v1alpha1、 things/v1beta1和 things/v1,而服務(wù)器的首選組/版本是 things/v1,那么所有 gizmos 都將從 things/v1 API 端點(diǎn)備份。當(dāng)還原這個(gè)集群的備份時(shí),目標(biāo)集群必須具有 things/v1端點(diǎn),以便還原 gizmos。請(qǐng)注意,things/v1不需要成為目標(biāo)集群中的首選版本; 它只需要存在即可。
3.6 設(shè)置備份到期
在創(chuàng)建備份時(shí),可以通過添加標(biāo)志 – TTL < duration > 來指定 TTL (生存時(shí)間)。如果 Velero 發(fā)現(xiàn)現(xiàn)有的備份資源已經(jīng)過期,它會(huì)刪除:
備份資源
自云對(duì)象存儲(chǔ)的備份文件
所有 PersistentVolume 快照
所有相關(guān)的恢復(fù)
TTL 標(biāo)志允許用戶在表單 – TTL 24h0m0s 中指定以小時(shí)、分鐘和秒為單位的值來指定備份保持期。如果未指定,則應(yīng)用默認(rèn) TTL 值為30天。
3.7 對(duì)象存儲(chǔ)同步
把對(duì)象的存儲(chǔ)視為真理的源泉。它不斷地檢查是否始終存在正確的備份資源。如果存儲(chǔ)桶中有一個(gè)格式正確的備份文件,但是在 Kubernetes API 中沒有相應(yīng)的備份資源,Velero 會(huì)同步從對(duì)象存儲(chǔ)到 Kubernetes 的信息。
這允許還原功能在集群遷移場(chǎng)景中工作,在這種場(chǎng)景中,原始備份對(duì)象在新集群中不存在。
同樣,如果備份對(duì)象存在于 Kubernetes 但不在對(duì)象存儲(chǔ)中,那么它將從 Kubernetes 刪除,因?yàn)閭浞?tarball 不再存在。
參考鏈接
https://velero.io/docs/v1.6/
https://github.com/vmware-tanzu/velero-plugin-for-aws
API Kubernetes
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。