天天看點

找到Kubernetes原生的資料保護方法

資料保護通常不是開發人員最關心的問題。從曆史上看,開發人員隻從事功能性工作是有好處的,并且可以将基礎設施管理中不太令人興奮但絕對關鍵的方面留給生産團隊。

但是随着DevOps原則改變了行業,開發人員不再可能将生産問題留給其他團隊。以整體、端到端的方式思考軟體開發還包括軟體開發生命周期中傳統上不那麼引人注目的方面,例如測試、可用性、故障切換和資料保護。

讓我們深入了解Kubernetes的資料保護,以确定DevOps專業人員在思考這個重要的軟體開發問題時應該遵循的一些最佳做法。

針對傳統環境的資料保護

當虛拟機(VM)在應用程式部署中風靡時,資料保護是一項相對簡單的任務。為了備份虛拟機,基礎架構經理轉向了像IBM的Tivoli Storage Manager(TSM)這樣的解決方案,從根本上擷取虛拟機、其作業系統、安裝在其中的應用程式以及應用程式狀态的快照。當出現故障并且需要恢複備份時,将正确的資料傳回到正确的位置相對簡單,因為所有資料都生活在一個單體虛拟機中。

然後Kubernetes出現了。起初,沒有任何重大變化。Kubernete和容器主要用于無狀态工作負載。任何确實需要備份的資料都存在于傳統的關系資料庫中,在那裡,它們仍然可以通過傳統的存儲管理器解決方案輕松備份。到目前為止,開發和運維之間的分歧仍然根深蒂固。開發人員不需要擔心存儲、備份或任何與基礎設施相關的問題——這些都是生産線下遊人員的問題。

然而,這種模式在現代企業中正在迅速過時。

什麼讓現代資料保護與衆不同

今天,DevOps至少是許多組織的目标(如果不是标準的話)。

實際上,這意味着改變軟體開發生命周期中遺留的傳統基礎設施相關問題,實施基于微服務的架構,并采用雲原生方法傳遞應用程式。對于資料保護問題來說,最重要的是,現代DevOps通常意味着在Kubernetes中管理更多的基礎設施和更有狀态的工作負載。

盡可能多地在Kubernetes内工作,可以在許多方面大大簡化DevOps專業人員的工作。最重要的是,他們可以使用Kubernetes作為抽象層,允許他們以幾乎相同的方式工作,并使用幾乎相同的技能集,而不管他們的雲提供商、部署方法或底層基礎設施如何。

但這也意味着傳統的資料保護方法不再适用。

拍攝系統快照不再是一項簡單的任務,因為系統是分布式的,并分解為數百個微服務。以前,你可以在關系資料庫中捕捉某個時間點的狀态,但現在有狀态的工作負載正在這些不同的微服務之間分布,這使得以下工作具有挑戰性:

——确定哪些資料需要備份,哪些資料不需要備份。

——确定關鍵資料所在的位置。

——将這些資料納入資料保護解決方案。

——跨微服務架構一緻、準确地恢複資料。

——在每個環境中都以相同的方式執行所有這些操作。

資料保護解決方案

已經有開源和商業解決方案,但它們仍然需要擴充以解決所有這些挑戰。

Velero(以前是Heptio Ark)是一個著名的開源解決方案,由Kubernetes聯合創始人Craig McLuckie和Joe Beda建立。在商業方面,有一些解決方案與Veeam類似,Veeam收購了Kubernetes備份解決方案Kasten。

通常,這些解決方案的功能是明确地不控制如何啟動和停止應用程式或擷取容器中發生的事情的一緻快照。相反,它們允許你在某些事件上施加前後鈎子。這可能看起來像是暫停了PostgreSQL資料庫。然後,資料保護解決方案可以采取不同的備份操作:它可以調用Kubernetes容器存儲接口(CSI),拍攝快照,寫入與S3相容的存儲桶,或者采取各種不同的方法,這些方法或多或少适合你的應用程式。然後,你可以定義一個後鈎子來執行操作。

擷取一緻快照有兩種主要方法,第一種是邏輯備份。當你正在恢複到時間戳并使用應用程式級智能(插入事務日志)時,将使用邏輯備份,這将在本文中介紹。第二種方法是實體級備份,你可以使用CSI插件在存儲塊級别建立快照。然後可以像以前一樣将其流式傳輸到與S3相容的遠端目标。

對資料保護左移感興趣的DevOps專業人員可能會在他們的叢集上啟動其中一個解決方案,熟悉其操作,并發現它并不太理想。

是的,這些現代資料解決方案在分布式、基于微服務的架構中可以有效地備份和恢複資料。但它們并不是在每個環境中都以相同的方式發揮作用。是以,如果你依賴多個雲提供商,擁有一個混合環境或打算在未來擴充到多個環境,那麼用它們可能會很麻煩,需要團隊在管理和配置上花費額外的時間,并降低自動化能力。

以Kubernetes原生方式考慮資料保護

盡管在Kubernetes中集中應用程式基礎設施迫使我們找到新的方法來提供一流的資料保護,但許多DevOps專業人員仍然選擇使用Kubernetes,因為它使業務應用程式的開發變得更加容易。它使處理多個環境變得非常簡單。我們需要的是一種資料保護方法,該方法與Kubernetes類似并與Kubernetes一起工作,進而使其功能相同,而不管底層基礎設施如何。

随着更多有狀态的應用程式部署到Kubernetes中,對Kubernetes原生資料保護解決方案的需求增加。無論這些資料是消息隊列、資料庫還是AI/ML工作負載,都需要由內建到Kubernetes生态系統中的可靠、高性能和安全的存儲層來支撐。

這就是Ondat的由來,它是一種通過容器存儲接口傳遞的軟體定義的存儲解決方案,用于向工作負載傳遞塊和檔案持久卷。通過對CSI快照的支援,它可以用于為Kubernetes工作負載建構資料災難恢複和業務連續性戰略。