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