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