Kubernetes上的數(shù)據(jù)庫:為什么、何時(shí)以及需要考慮什么
在 Kubernetes 上運(yùn)行數(shù)據(jù)庫越來越普遍,但這必須對(duì)您的組織有意義。了解需要考慮的關(guān)鍵因素。
譯自Databases on Kubernetes: Why, When and What To Consider,作者 Kathryn Hsu。
數(shù)據(jù)庫在 Kubernetes 中越來越受歡迎;在最近 Portworx 委托進(jìn)行的使用 Kubernetes 的組織調(diào)查中,超過 72% 的受訪者表示他們的團(tuán)隊(duì)正在Kubernetes 上運(yùn)行數(shù)據(jù)庫。
顯然,圍繞Kubernetes 上的數(shù)據(jù)(DoK) 的討論已經(jīng)成熟,因?yàn)?Kubernetes 中的持久卷在 2019 年進(jìn)入通用可用性。擁有更先進(jìn) Kubernetes 實(shí)踐的團(tuán)隊(duì)正在超越無狀態(tài)與有狀態(tài)應(yīng)用程序的簡(jiǎn)單爭(zhēng)論以及對(duì)持久存儲(chǔ)的需求。相反,他們正在考慮容器數(shù)據(jù)管理層(包括數(shù)據(jù)庫)如何與更廣泛的業(yè)務(wù)目標(biāo)以及其內(nèi)部平臺(tái)的基礎(chǔ)設(shè)施、開發(fā)和交付解決方案相適應(yīng)。
組織在 Kubernetes 中運(yùn)行數(shù)據(jù)庫的原因
對(duì)于軟件、基礎(chǔ)設(shè)施和平臺(tái)工程領(lǐng)導(dǎo)者來說,決定在容器中運(yùn)行數(shù)據(jù)庫并使用Kubernetes進(jìn)行管理通常歸結(jié)為以下因素的混合:
開發(fā)速度
如果數(shù)據(jù)是為最終用戶提供差異化價(jià)值的有效載荷,那么應(yīng)用程序就是交付工具。例如,社交新聞提要為每個(gè)人提供類似的功能,但它依賴于底層數(shù)據(jù)來確保與讀者的相關(guān)性。
Kubernetes 的聲明式特性允許數(shù)據(jù)庫團(tuán)隊(duì)定義一致的部署指南并在開發(fā)、登臺(tái)和生產(chǎn)環(huán)境中進(jìn)行標(biāo)準(zhǔn)化。這消除了數(shù)據(jù)庫配置作為瓶頸,從而更快地為最終用戶提供更多價(jià)值。
降低成本,減少復(fù)雜性
在經(jīng)濟(jì)挑戰(zhàn)中,數(shù)據(jù)庫團(tuán)隊(duì)被要求用更少的資源做更多的事情。他們必須管理更多數(shù)據(jù)庫實(shí)例,以更大的規(guī)模,來自更多數(shù)據(jù)庫提供商和供應(yīng)商,并與越來越復(fù)雜的基礎(chǔ)設(shè)施服務(wù)集整合。
Kubernetes 提供了一種降低復(fù)雜性的方法,因?yàn)樗鼘?duì)跨環(huán)境的數(shù)據(jù)庫部署的標(biāo)準(zhǔn)化方法簡(jiǎn)化了維護(hù)。雖然托管云數(shù)據(jù)庫提供了部署捷徑,但在實(shí)踐中它們通常會(huì)引入更多復(fù)雜性,通過管理輔助云服務(wù),并增加了云鎖定帶來的弊端,這會(huì)增加成本并阻礙數(shù)據(jù)遷移。
降低風(fēng)險(xiǎn),提高正常運(yùn)行時(shí)間,大規(guī)模彈性
Kubernetes 專為運(yùn)行彈性、可擴(kuò)展、高彈性的應(yīng)用程序而設(shè)計(jì)。為什么不讓數(shù)據(jù)庫也從在 Kubernetes 上運(yùn)行中受益,以及從一個(gè)龐大、全球性的云原生社區(qū)的集體知識(shí)中受益,這些社區(qū)正在遵循這些原則進(jìn)行構(gòu)建?
何時(shí)在 Kubernetes 上運(yùn)行數(shù)據(jù)庫
如果您的應(yīng)用程序需要可擴(kuò)展的、自動(dòng)化的數(shù)據(jù)管理,并且摩擦最小,并且您需要在開發(fā)、測(cè)試和生產(chǎn)環(huán)境中保持一致性,那么在 Kubernetes 上運(yùn)行數(shù)據(jù)庫是一個(gè)絕佳的選擇。
Kubernetes 的優(yōu)勢(shì)包括生命周期管理、自助服務(wù)功能和增強(qiáng)的數(shù)據(jù)可移植性,特別是對(duì)于現(xiàn)代的云原生應(yīng)用程序,其中模式和數(shù)據(jù)大小可能會(huì)快速變化。
Kubernetes 上的數(shù)據(jù)有哪些好處?
在 Kubernetes 上運(yùn)行數(shù)據(jù)庫可以實(shí)現(xiàn):
- 大規(guī)模自動(dòng)化操作和生命周期管理,尤其是在操作符幾乎適用于市場(chǎng)上所有數(shù)據(jù)庫解決方案的情況下。
- 開發(fā)、測(cè)試和生產(chǎn)環(huán)境的一致性。這是Docker容器的最初承諾,但適用于數(shù)據(jù)庫。開發(fā)人員可以在minikube上本地部署數(shù)據(jù)庫,并更有信心他們的應(yīng)用程序?qū)⒃谄渌胤桨磁渲眠\(yùn)行。
- 更輕松的數(shù)據(jù)可移植性,用于近線或本地處理,從而提高性能,減少數(shù)據(jù)漂移,并提高整體抵御云原生應(yīng)用程序的波動(dòng)和彈性的能力。
- 面向最終用戶的自助服務(wù)功能,包括開發(fā)人員、數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)運(yùn)營 (MLOps) 工程師。數(shù)據(jù)庫團(tuán)隊(duì)可以提供指南和策略,而最終用戶可以對(duì)模式、位置和使用情況做出明智的決定。如果數(shù)據(jù)庫與更廣泛的開發(fā)平臺(tái)正確集成,數(shù)據(jù)庫管理員 (DBA) 和開發(fā)人員都不會(huì)承擔(dān)管理 Kubernetes本身的負(fù)擔(dān)。
其他數(shù)據(jù)庫(例如具有數(shù)十年歷史交易數(shù)據(jù)的 TB 級(jí)關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 部署或海量非結(jié)構(gòu)化數(shù)據(jù)湖)具有慣性,不太可能成為容器化的候選者。它們很大,難以移動(dòng),并且與支持現(xiàn)代應(yīng)用程序開發(fā)的現(xiàn)代數(shù)據(jù)庫有不同的用途。
在 Kubernetes 上引入數(shù)據(jù)庫時(shí)要考慮的事項(xiàng)
假設(shè)您的組織已決定不使用托管云數(shù)據(jù)庫或在虛擬機(jī) (VM) 上運(yùn)行數(shù)據(jù)庫,并且認(rèn)為更快開發(fā)速度、更低成本和降低風(fēng)險(xiǎn)的優(yōu)勢(shì)值得向 Kubernetes 上的數(shù)據(jù)庫邁進(jìn)。在進(jìn)行此更改時(shí),您和您的團(tuán)隊(duì)還應(yīng)該考慮什么?
作為領(lǐng)導(dǎo)者,您可能會(huì)關(guān)注團(tuán)隊(duì)的優(yōu)先事項(xiàng)、技能和時(shí)間,并相應(yīng)地投資于技術(shù)解決方案。數(shù)據(jù)庫團(tuán)隊(duì)通常是數(shù)據(jù)庫專家,而不是 Kubernetes 專家。雖然許多開發(fā)人員熟悉容器和 Kubernetes,但他們的主要工作很少包括管理 Kubernetes 部署。
考慮 DBA 或開發(fā)人員是否將負(fù)責(zé)在 Kubernetes 上配置和管理數(shù)據(jù)庫,或者這是否需要更廣泛的、由內(nèi)部開發(fā)人員或數(shù)據(jù)庫平臺(tái)支持的自動(dòng)化即服務(wù)方法。如果是后者,您需要確定內(nèi)部平臺(tái)應(yīng)提供多少級(jí)別的 Kubernetes 抽象來支持其他團(tuán)隊(duì)。此外,您需要定義如何根據(jù)持久卷、存儲(chǔ)陣列以及備份或數(shù)據(jù)保護(hù)策略配置容器化數(shù)據(jù)庫。
擁抱 Kubernetes 上的數(shù)據(jù)
對(duì)于剛剛開始 Kubernetes 之旅的組織來說,在 Kubernetes 上運(yùn)行數(shù)據(jù)密集型工作負(fù)載可能看起來很令人生畏。(如果您的組織現(xiàn)在處于這種狀態(tài),您并不孤單!)但這是可以做到的;Rivian等企業(yè)正在生產(chǎn)環(huán)境中在 Kubernetes 上運(yùn)行數(shù)據(jù)庫,并在幾小時(shí)內(nèi)而不是幾天內(nèi)完成配置,同時(shí)提高正常運(yùn)行時(shí)間、彈性和控制成本。