你好,歡迎來(lái)到川北在線
微信
騰訊微博
新浪微博
亞馬遜云科技AI平臺(tái)部署 讓有狀態(tài)服務(wù)跨云遷移到Amazon EKS
時(shí)間:2023-04-20 14:50   來(lái)源:搜狐   責(zé)任編輯:青青

  原標(biāo)題:亞馬遜云科技AI平臺(tái)部署,讓有狀態(tài)服務(wù)跨云遷移到Amazon EKS

  亞馬遜云科技的Kubernetes和云原生技術(shù)在過去幾年中經(jīng)歷了驚人的增長(zhǎng),企業(yè)采用Kubernetes的主要原因是它可以快速擴(kuò)展,提高資源利用率,并且可遷移性優(yōu)勢(shì)明顯。從本地部署Kubernetes向公有云托管Kubernetes環(huán)境遷移和跨云進(jìn)行Kubernetes遷移的趨勢(shì)正在加速,因?yàn)樵粕贤泄艿腒ubernetes服務(wù)的維護(hù)更加簡(jiǎn)單,可用性和可靠性更高。

  有狀態(tài)服務(wù)遷移的需求

  Kubernetes平臺(tái)上運(yùn)行的應(yīng)用一般是無(wú)狀態(tài)(Stateless)應(yīng)用為主,但是有狀態(tài)(Stateful)應(yīng)用也不少見,各種數(shù)據(jù)庫(kù)就是最常見的有狀態(tài)應(yīng)用,另外就是一些應(yīng)用有數(shù)據(jù)持久化到磁盤的需求。而無(wú)狀態(tài)應(yīng)用則與有狀態(tài)應(yīng)用相對(duì)應(yīng),常見的無(wú)狀態(tài)應(yīng)用包括各種頁(yè)面前端、Httpd、Nginx中間件等。

  無(wú)狀態(tài)服務(wù)在遷移的過程中一般使用yaml文件手工重新部署或利用CICD平臺(tái)進(jìn)行自動(dòng)部署,不用過多考慮將原有Kubernetes平臺(tái)上的應(yīng)用數(shù)據(jù)恢復(fù)到新集群中。但是一些有持久化數(shù)據(jù)的服務(wù)在遷移時(shí)要將原有數(shù)據(jù)也遷移到新集群中,這些服務(wù)通常采用Deployment+PVC或StatefulSet的方式進(jìn)行部署,這時(shí)選擇什么樣的遷移方式顯得很重要。對(duì)于類似數(shù)據(jù)庫(kù)這樣實(shí)時(shí)性要求高的,一般建議采用專業(yè)工具來(lái)進(jìn)行在線遷移,如:Amazon DMS;如果是對(duì)實(shí)時(shí)性要求沒有非常高要求的情況下,可以采用一些開源的數(shù)據(jù)遷移工具來(lái)進(jìn)行,本文就是針對(duì)這種場(chǎng)景,推薦大家使用Velero這個(gè)工具協(xié)助大家遷移有持久化數(shù)據(jù)的服務(wù)。

  什么是有狀態(tài)服務(wù)

  有狀態(tài)應(yīng)用(Stateful Application)通常是指有持久化存儲(chǔ)需求的各種應(yīng)用。有狀態(tài)在Kubernetes中的定義是:StatefulSet是用來(lái)管理有狀態(tài)應(yīng)用的工作負(fù)載API對(duì)象。StatefulSet用來(lái)管理某些Pod集合的部署和擴(kuò)縮,并為這些Pod提供持久存儲(chǔ)和持久標(biāo)識(shí)符。

  為什么有狀態(tài)服務(wù)難遷移

  有狀態(tài)應(yīng)用在容器平臺(tái)遷移時(shí)面臨一個(gè)問題:在應(yīng)用需要數(shù)據(jù)不丟失的情況下,必須要能做到持久化數(shù)據(jù)與容器一同進(jìn)行遷移,否則原有數(shù)據(jù)將會(huì)丟失或無(wú)法訪問。另外從技術(shù)角度講,在跨平臺(tái)遷移時(shí)因?yàn)榈讓哟鎯?chǔ)驅(qū)動(dòng)大多不一樣,導(dǎo)致無(wú)法直接將數(shù)據(jù)遷移到另外的平臺(tái)。目前,通用遷移方案大多依賴于有狀態(tài)服務(wù)自身提供的備份和恢復(fù)機(jī)制來(lái)實(shí)現(xiàn),然而在遷移操作過程中存在需要人工參與、操作時(shí)間過長(zhǎng)等問題。

  遷移方案

  架構(gòu)圖

  方案說明

  在源Kubernetes集群所在云虛擬機(jī)上安裝Velero CLI

  在源Kubernetes集群上安裝并啟動(dòng)Velero server

  通過Velero CLI創(chuàng)建源Kubernetes集群上的有狀態(tài)應(yīng)用備份文件并存儲(chǔ)到Cloud Object Storage中

  使用命令行工具將Cloud Object Storage中的備份文件同步到Amazon S3

  在Amazon EC2上同樣安裝Velero CLI

  在Amazon EKS上安裝并啟動(dòng)Velero server

  使用Velero CLI將Amazon S3桶中的備份文件恢復(fù)到Amazon EKS集群上

  Velero工具說明

  Velero(之前的版本叫做Heptio Ark),一個(gè)開源工具,可以對(duì)Kubernetes集群進(jìn)行安全備份和恢復(fù),遷移Kubernetes集群資源和持久卷,對(duì)于應(yīng)用部署類型,無(wú)論Deployment還是StatefulSet都可以支持。

  在Kubenetes集群中部署Velero,可以實(shí)現(xiàn)以下功能:

  備份集群資源,丟失時(shí)恢復(fù)

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

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

  下圖為Velero的工作流程圖:

  遷移原理

  Velero使用名為restic的免費(fèi)開源備份工具備份和恢復(fù)Kubernetes卷。Velero引入了三個(gè)CRD(Custom Resource Definitions)和關(guān)聯(lián)的Controllers。

  ResticRepository用來(lái)管理Velero的restic存儲(chǔ)庫(kù)的生命周期,當(dāng)請(qǐng)求備份時(shí),Velero會(huì)為每個(gè)namespace創(chuàng)建一個(gè)restic庫(kù),用于存儲(chǔ)備份數(shù)據(jù)。PodVolumeBackup用于pod中卷的靜態(tài)備份,主Velero備份進(jìn)程在找到帶注釋的pod時(shí)會(huì)為其創(chuàng)建備份,集群中的每個(gè)node上都會(huì)運(yùn)行一個(gè)備份controller用來(lái)處理該節(jié)點(diǎn)上的pod的PodVolumeBackup。PodVolumeRestore是用于卷的靜態(tài)恢復(fù)的controller,Velero執(zhí)行restic restore命令來(lái)恢復(fù)pod volume數(shù)據(jù)。

  在跨云遷移Kubernetes集群中的有狀態(tài)服務(wù)時(shí),由于經(jīng)常使用的Kubernetes源集群的CSI (Cloud Storage Interface)不同于目標(biāo)集群的CSI,會(huì)導(dǎo)致無(wú)法直接使用Snapshot來(lái)進(jìn)行備份、恢復(fù),這是在跨云遷移時(shí)的一個(gè)難題(不同云平臺(tái)之間的CSI Driver并不相同)。

  所以使用Snapshot并不能完成有狀態(tài)服務(wù)的遷移,在這里我們使用Velero的File System Backup功能來(lái)實(shí)現(xiàn)。Velero不支持容器中hostpath的備份,所以請(qǐng)注意Velero支持的場(chǎng)景和功能是否滿足需求。如果在遷移需求中需要進(jìn)行增量數(shù)據(jù)遷移,此時(shí)建議使用應(yīng)用自帶的遷移方法,如可使用Amazon DMS去滿足數(shù)據(jù)庫(kù)的全量+增量數(shù)據(jù)遷移。

  下面是備份恢復(fù)過程中的相關(guān)概念:

  Kubernetes Volume

  Container中的文件在磁盤上是臨時(shí)存放的,這給Container中運(yùn)行的較重要的應(yīng)用程序帶來(lái)一些問題。問題之一是當(dāng)容器崩潰時(shí)文件丟失。第二個(gè)問題是在同一Pod中運(yùn)行多個(gè)容器并共享文件時(shí),如果kubelet重新啟動(dòng)容器,但容器會(huì)以干凈的狀態(tài)重啟,此時(shí)無(wú)法共享數(shù)據(jù)。Kubernetes卷(Volume)這一抽象概念能夠解決這兩個(gè)問題。

  Snapshot

  在Kubernetes 中,VolumeSnapshot表示存儲(chǔ)系統(tǒng)上卷的快照。

  File System Backup

  Velero支持從卷的文件系統(tǒng)備份和恢復(fù)附加到Pod的Kubernetes卷,稱為文件系統(tǒng)備份(簡(jiǎn)稱FSB)或Pod卷備份。

   投稿郵箱:chuanbeiol@163.com   詳情請(qǐng)?jiān)L問川北在線:http://www.dstuf.com/

川北在線-川北全搜索版權(quán)與免責(zé)聲明
①凡注明"來(lái)源:XXX(非在線)"的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。
②本站所載之信息僅為網(wǎng)民提供參考之用,不構(gòu)成任何投資建議,文章觀點(diǎn)不代表本站立場(chǎng),其真實(shí)性由作者或稿源方負(fù)責(zé),本站信息接受廣大網(wǎng)民的監(jiān)督、投訴、批評(píng)。
③本站轉(zhuǎn)載純粹出于為網(wǎng)民傳遞更多信息之目的,本站不原創(chuàng)、不存儲(chǔ)視頻,所有視頻均分享自其他視頻分享網(wǎng)站,如涉及到您的版權(quán)問題,請(qǐng)與本網(wǎng)聯(lián)系,我站將及時(shí)進(jìn)行刪除處理。



圖庫(kù)
合作媒體
金寵物 綠植迷
法律顧問:ITLAW-莊毅雄律師