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

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

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

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

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

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

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

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

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

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

  遷移方案

  架構(gòu)圖

  方案說明

  在源Kubernetes集群所在云虛擬機上安裝Velero CLI

  在源Kubernetes集群上安裝并啟動Velero server

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

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

  在Amazon EC2上同樣安裝Velero CLI

  在Amazon EKS上安裝并啟動Velero server

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

  Velero工具說明

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

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

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

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

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

  下圖為Velero的工作流程圖:

  遷移原理

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

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

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

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

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

  Kubernetes Volume

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

  Snapshot

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

  File System Backup

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

   投稿郵箱:chuanbeiol@163.com   詳情請訪問川北在線:http://sanmuled.cn/

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



合作媒體
金寵物 綠植迷 女邦網(wǎng) IT人
法律顧問:ITLAW-莊毅雄律師