騰訊云:在TKE中使用Velero遷移復(fù)制集群資源

來(lái)源: 騰訊云原生
作者:李全江
時(shí)間:2021-02-24
17123
Velero(以前稱為Heptio Ark)是一個(gè)開源工具,可以安全地備份和還原,執(zhí)行災(zāi)難恢復(fù)以及遷移Kubernetes集群資源和持久卷。

概述

Velero(以前稱為Heptio Ark)是一個(gè)開源工具,可以安全地備份和還原,執(zhí)行災(zāi)難恢復(fù)以及遷移Kubernetes集群資源和持久卷,可以在TKE集群或自建Kubernetes集群中部署Velero用于:

·備份集群并在丟失的情況下進(jìn)行還原。

·將集群資源遷移到其他集群。

·將生產(chǎn)集群復(fù)制到開發(fā)和測(cè)試集群。

本文將介紹使用Velero實(shí)現(xiàn)TKE集群間的無(wú)縫遷移復(fù)制集群資源的操作步驟。

遷移原理

在需要被遷移的集群和目標(biāo)集群上都安裝Velero實(shí)例,并且兩個(gè)集群的Velero實(shí)例指向相同的騰訊云COS對(duì)象存儲(chǔ)位置,使用Velero在需要被遷移的集群執(zhí)行備份操作生成備份數(shù)據(jù)存儲(chǔ)到騰訊云COS,然后在目標(biāo)集群上使用Velero執(zhí)行數(shù)據(jù)的還原操作實(shí)現(xiàn)遷移,遷移原理如下:

640.webp.jpg

前提條件

·已注冊(cè)騰訊云賬戶[2]。

·已開通騰訊云COS服務(wù)。

·已有需要被遷移的TKE集群(以下稱作集群A),已創(chuàng)建遷移目標(biāo)的TKE集群(以下稱作集群B),創(chuàng)建TKE集群請(qǐng)參閱創(chuàng)建集群[3]。

·集群A和集群B都需要安裝Velero實(shí)例(1.5版本以上),并且共用同一個(gè)騰訊云COS存儲(chǔ)桶作為Velero后端存儲(chǔ),安裝步驟請(qǐng)參閱配置存儲(chǔ)和安裝Velero[4]。

注意事項(xiàng)

1.從1.5版本開始,Velero可以使用Restic備份所有pod卷,而不必單獨(dú)注釋每個(gè)pod。默認(rèn)情況下,此功能允許用戶使用restic備份所有pod卷,但以下卷情況除外:

·掛載默認(rèn)Service Account Secret的卷

·掛載的hostPath類型卷

·掛載Kubernetes secrets和configmaps的卷

本示例需要Velero 1.5以上版本且啟用restic[5]來(lái)備份持久卷數(shù)據(jù),請(qǐng)確保在安裝Velero階段開啟--use-restic和--default-volumes-to-restic參數(shù),安裝步驟請(qǐng)參閱配置存儲(chǔ)和安裝Velero[6]。

2.在執(zhí)行遷移過(guò)程中,請(qǐng)不要對(duì)兩邊集群資源做任何CRUD操作,以免在遷移過(guò)程中造成數(shù)據(jù)差異,最終導(dǎo)致遷移后的數(shù)據(jù)不一致。

3.盡量保證集群B和集群A工作節(jié)點(diǎn)的CPU、內(nèi)存等規(guī)格配置相同或不要相差太大,以免出現(xiàn)遷移后的Pods因資源原因無(wú)法調(diào)度導(dǎo)致Pending的情況。

操作步驟

在集群A創(chuàng)建備份

可以手動(dòng)執(zhí)行備份操作,也可以給velero設(shè)置定期自動(dòng)備份,設(shè)置方法可以使用velero schedule-h查看。本示例將以default、default2命名空間的資源情況作比較驗(yàn)證,下圖可以看到集群A中兩個(gè)命名空間下的Pods和PVC資源情況:

提示:可以指定在備份期間執(zhí)行一些自定義Hook操作。比如,需要在備份之前將運(yùn)行應(yīng)用程序的內(nèi)存中的數(shù)據(jù)持久化到磁盤。有關(guān)備份Hook的更多信息請(qǐng)參閱備份Hook[7]。

640.png

其中,集群中的minio對(duì)象存儲(chǔ)服務(wù)使用了持久卷,并且已經(jīng)上傳了一些圖片數(shù)據(jù),如下圖所示:

640 (1).png

執(zhí)行下面命令來(lái)備份集群中不包含velero命名空間(velero安裝的默認(rèn)命名空間)資源的其他所有資源,如果想自定義需要備份的集群資源范圍,可使用velero create backup-h查看支持的資源篩選參數(shù)。

velero backup create<BACKUP-NAME>--exclude-namespaces<NAMESPACE>

本示例我們創(chuàng)建一個(gè)“default-all”的集群備份,備份過(guò)程如下圖所示:

640 (2).png

備份任務(wù)狀態(tài)顯示是“Completed”時(shí),說(shuō)明備份任務(wù)完成,可以通過(guò)velero backup logs|grep error命令檢查是否有備份操作發(fā)生錯(cuò)誤,沒(méi)有輸出則說(shuō)明備份過(guò)程無(wú)錯(cuò)誤發(fā)生,如下圖所示:

注意:請(qǐng)確保備份過(guò)程未發(fā)生任何錯(cuò)誤,假如velero在執(zhí)行備份過(guò)程中發(fā)生錯(cuò)誤,請(qǐng)排查解決后重新執(zhí)行備份。

640 (3).png

備份完成后,臨時(shí)將備份存儲(chǔ)位置更新為只讀模式(非必須,這可以防止在還原過(guò)程中Velero在備份存儲(chǔ)位置中創(chuàng)建或刪除備份對(duì)象):

kubectl patch backupstoragelocation default --namespace velero \

    --type merge \

    --patch '{"spec":{"accessMode":"ReadOnly"}}'

在集群B執(zhí)行還原

在執(zhí)行還原操作前集群B中default、default2命名空間下沒(méi)有任何工作負(fù)載資源,查看結(jié)果如下圖:

640 (4).png

臨時(shí)將集群B中Velero備份存儲(chǔ)位置也更新為只讀模式(非必須,這可以防止在還原過(guò)程中Velero在備份存儲(chǔ)位置中創(chuàng)建或刪除備份對(duì)象):

kubectl patch backupstoragelocation default --namespace velero \

    --type merge \

    --patch '{"spec":{"accessMode":"ReadOnly"}}'

提示:可以選擇指定在還原期間或還原資源后執(zhí)行自定義Hook操作。例如,可能需要在數(shù)據(jù)庫(kù)應(yīng)用程序容器啟動(dòng)之前執(zhí)行自定義數(shù)據(jù)庫(kù)還原操作。有關(guān)還原Hook的更多信息請(qǐng)參閱還原Hook[8]。

在還原操作之前,需確保集群B中的Velero資源與云存儲(chǔ)中的備份文件同步。默認(rèn)同步間隔是1分鐘,可以使用--backup-sync-period來(lái)配置同步間隔??梢允褂孟旅婷畈榭醇篈的備份是否已同步:

velero backup get <BACKUP-NAME>

獲取備份成功檢查無(wú)誤后,執(zhí)行下面命令還原所有內(nèi)容到集群B中:

velero restore create --from-backup <BACKUP-NAME>

本示例執(zhí)行還原過(guò)程如下圖:

640 (5).png

等待還原任務(wù)完成后查看還原日志,可以使用下面命令查看還原是否有報(bào)錯(cuò)和跳過(guò)信息:

# 查看遷移時(shí)是否有錯(cuò)誤的還原信息

velero restore logs <BACKUP-NAME> | grep error 

# 查看遷移時(shí)跳過(guò)的還原操作

velero restore logs <BACKUP-NAME> | grep skip

從下圖可以看出沒(méi)有發(fā)生錯(cuò)誤的還原步驟,但是有很多“skipped”步驟,是因?yàn)槲覀冊(cè)趥浞菁嘿Y源時(shí)備份了不包含velero命名空間的所有集群資源,有一些同類型同名的集群資源已經(jīng)存在了,如kube-system下的集群資源,當(dāng)還原過(guò)程中有資源沖突時(shí),velero會(huì)跳過(guò)還原的操作步驟。所以實(shí)際上還原過(guò)程是正常的,可以忽略這些“skipped”日志,假如有特殊情況可以分析下日志看看。

640 (6).png

遷移結(jié)果核驗(yàn)

查看校驗(yàn)集群B執(zhí)行遷移操作后的集群資源,可以看到default、default2命名空間下的pods和PVC資源已按預(yù)期遷移成功:

640.png

再通過(guò)Web管理頁(yè)面登錄集群B中的monio服務(wù),可以看到minio服務(wù)中的圖片數(shù)據(jù)沒(méi)有丟失,說(shuō)明持久卷數(shù)據(jù)也已按預(yù)期遷移成功。

640 (1).png

至此,我們完成了TKE集群間資源的遷移,遷移操作完成后,請(qǐng)不要忘記把備份存儲(chǔ)位置恢復(fù)為讀寫模式(集群A和集群B),以便下次備份任務(wù)可以成功使用:

kubectl patch backupstoragelocation default --namespace velero \

   --type merge \

   --patch '{"spec":{"accessMode":"ReadWrite"}}'

總結(jié)

本文主要介紹了在TKE集群間使用Velero遷移集群資源的原理、注意事項(xiàng)和操作方法,成功的將示例集群A中的集群資源無(wú)縫遷移到集群B中,整個(gè)遷移過(guò)程非常簡(jiǎn)單方便,是一種非常友好的集群資源遷移方案。

參考資料

[1]Velero:https://velero.io/

[2]注冊(cè)騰訊云賬戶:https://cloud.tencent.com/register

[3]創(chuàng)建集群:https://cloud.tencent.com/document/product/457/32189

[4]配置存儲(chǔ)和安裝Velero:https://cloud.tencent.com/document/product/457/50122

[5]restic:https://velero.io/docs/v1.5/restic/

[6]配置存儲(chǔ)和安裝Velero:https://cloud.tencent.com/document/product/457/50122

[7]備份Hook:https://velero.io/docs/v1.5/backup-hooks/

[8]還原Hook:https://velero.io/docs/v1.5/restore-hooks/

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于騰訊云原生,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買頁(yè)直接購(gòu)買。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家