Kubernetes運行有狀態應用程序的注意事項

目錄

Kubernetes存儲演進

Kubernetes運行有狀態應用程序的注意事項

1. 易於使用的持久存儲

2. 高可用性選項

3. 混合雲數據的可移植性

4. 性能

5. 服務質量(QoS)的保證

6. 用於存儲和數據的共享網絡

7. 安全性/加密

獨特的存儲方式:Diamanti

結論


原文發表於kubernetes中文社區,爲作者原創翻譯 ,原文地址

更多kubernetes文章,請多關注kubernetes中文社區

Kubernetes是一個開放編排平臺,旨在用於部署,管理容器化的應用程序。

在Kubernetes的早期,該平臺主要支持和運行無狀態應用程序。無狀態應用程序,被認爲在重新啓動容器時不需要保留從上一個會話到下一個會話的數據的應用程序。

這就造成了誤解,認爲Kubernetes僅適用於無狀態應用程序。但是,隨着Kubernetes的普及,它已經發展成爲各種類型的應用程序的編排平臺之一,包括可伸縮和高度可用的有狀態應用程序的部署和管理。

但是,即使爲狀態應用程序提供了完整的業務流程支持,Kubernetes仍存在各種不足,尤其是與存儲相關的不足。Kubernetes有意留給供應商填補。

越來越多用戶使用Kubernetes的有狀態應用程序,推動了雲原生存儲解決方案的發展,該解決方案可以提供有狀態應用程序所需的可用性和彈性。

Kubernetes存儲演進

最初,Kubernetes提供了基本支持,使用GFS和AWS等特定雲提供商的共享存儲驅動器(例如NFS和ISCSI)將存儲卷靜態附加到Pod。但是向Kubernetes添加任何新的存儲解決方案都需要將代碼提交到Kubernetes核心代碼庫中,從而使存儲過程變得複雜。

DiamantiKubernetes貢獻了FlexVolume插件,從而在Kubernetes中開啓了存儲卷配置的新時代。它使存儲供應商可以創建自定義存儲插件,而無需將其添加到Kubernetes存儲庫中。

反過來,這爲Kubernetes用戶提供了更好的管理和數據服務的存儲解決方案。多年來,Kubernetes社區引入了多種功能豐富的存儲,例如:

FlexVolume插件爲容器存儲接口(CSI)的存儲插件鋪平了道路。該插件提供了Kubernetes與第三方存儲集成的標準化解決方案,併爲Kubernetes內部的數據服務提供支持。

Kubernetes運行有狀態應用程序的注意事項

即使有了如上的改進,組織在Kubernetes中使用有狀態應用程序時仍然面臨與存儲相關的挑戰。隨着組織採用包含重要知識產權的容器化數據庫和其他應用程序,他們意識到需要提供一套更高級的存儲功能。其中一些包括:

1. 易於使用的持久存儲

Kubernetes爲持久存儲卷和有狀態應用程序提供全面支持。 但是,組織仍需要使用第三方CSI插件,來提供程序執行存儲卷的實際配置。

例如,大多數公共雲將Kubernetes與他們現有的存儲架構集成在一起,以向用戶提供此功能,但是這些架構通常在選擇和性能上受到限制。

當談到私有云時,有很多第三方選項可用,但是很難找到一個提供豐富功能,最佳性能並且具有成本效益的存儲解決方案。

最重要的是,市場上許多現有的存儲解決方案--都旨在支持虛擬化工作負載,然而,事實證明,在裸機上運行容器具有更高的可伸縮性和性能,並減少了不必要的抽象層。但是,很難找到一種適用於裸機容器的好的存儲解決方案。

2. 高可用性選項

有狀態應用程序的性質,決定了需要更多地考慮應用程序如何從不同的故障模式中恢復,但並非所有第三方Kubernetes存儲解決方案都是高度可用的。

爲了解決此問題,許多供應商提供了共享存儲,但是這些解決方案通常性能不高和缺乏可管理性。

存儲可用性服務( Storage availability services ),通常使用恢復點目標(RPO)和恢復時間目標(RTO)進行衡量。RTO衡量恢復數據所需的時間,RPO衡量恢復過去多久的數據。

下表演示了有狀態應用程序必不可少的各種數據服務。

存儲服務 RPO RTO 詳情
Backup(備份) 幾小時~幾天 幾小時~幾天 備份是備份數據的最古老的方法之一。即使備份是可靠的,備份和恢復數據也可能需要幾天的時間,特別是如果備份存儲在異地。如今,硬盤驅動器或光盤驅動器的情況越來越普遍,備份到雲,但如果需要完全恢復工作負載,這可能需要幾個小時(或幾天)。
Snapshots(快照) 幾分鐘~幾小時 幾分鐘到~幾小時 與備份相比,快照的頻率更高,從而降低了RPO。快照的恢復時間取決於存儲結構以及還原過程中是否涉及數據複製。另外,由於快照通常是本地快照,因此有利於恢復數據,但不利於保持數據安全。
Replication(複寫) 幾秒~幾分鐘 幾分鐘 複製(異步)發生在存儲卷級別或應用程序級別。它可以幫助你在幾分鐘甚至幾秒鐘內用RPO和RTO恢復數據。
Mirroring(鏡像) 0 0 鏡像是跨存儲設備的同步存儲卷複製,這些存儲設備可以存在於同一集羣或不同的可用域中。
DR Replication(DR複製) 幾分鐘~幾小時 幾分鐘 災難恢復(Disaster Recovery,DR)存儲卷複製,有助於在DR集羣上異步複製存儲卷,以防止主站點故障,便於故障發生時輕鬆將應用程序移至DR站點,實現快速故障轉移。

3. 混合雲數據的可移植性

在當今的雲原生世界中,越來越多的組織採用混合雲方法,來結合公共雲和私有云的優勢。雖然可以輕鬆地跨多個雲遷移無狀態應用程序,但是很難將數據從一個雲遷移到其他雲。

4. 性能

市場上的大多數存儲解決方案,都缺乏數據密集型應用程序所需的性能,這使存儲設備成爲應用程序性能的主要瓶頸。

帶有固態驅動器的新存儲技術 ,如NVMe (Non-Volatile Memory Express) 的出現意味着存儲不再是瓶頸。因此,在選擇存儲供應商時,除了吞吐量之外,還要考慮最壞情況的延遲。

5. 服務質量(QoS)的保證

Kubernetes爲容器本身預留了CPU和內存。但是,Kubernetes不支持存儲或網絡帶寬預留,這仍然是一個問題。

爲了保護重要的有狀態應用程序免受此缺點的影響,爲存儲資源提供QoS級別保證很重要。

6. 用於存儲和數據的共享網絡

大多數傳統存儲解決方案都依賴於主機網絡來存儲數據流量。此數據流量與常規網絡流量競爭,並帶來安全風險。尋找隔離存儲和容器流量的解決方案,有時是必要的。

7. 安全性/加密

考慮存儲解決方案的安全性和加密方面。大多數企業都需要安全協議,例如自加密磁盤,存儲卷級加密和密鑰管理等,以保護自己免受數據丟失和安全漏洞的侵害。

獨特的存儲方式:Diamanti

一個良好的雲原生存儲環境,需要滿足以上所有條件:

  • 使用簡單

  • 高度可用

  • 混合雲就緒

  • 高性能

  • 一致的表現

  • 安全

  • 而且它還必須具有成本效益,併爲Kubernetes構建。

Diamanti是一個裸機,超融合的Kubernetes平臺,能夠提供容器運行所需的一切,包括優化後的基於NVMe的SSD存儲。

Diamanti通過FlexVolume插件率先推出了Kubernetes的存儲功能,並通過支持備份,DR,快照和鏡像在這一領域進行了不斷創新。

低延遲架構支持跨節點,區域甚至數據中心的集羣擴展。其獲得專利的I / O卸載架構還有助於提供一流的性能,與標準服務器或HCI環境相比,可提高10到30倍。最後,Diamanti還帶來了真正的混合雲功能,可以在雲中遷移有狀態應用程序。

img

結論

Kubernetes已經發展成爲協調有狀態應用程序的最佳平臺。你可以使用Kubernetes中的StatefulSet和持久存儲卷,輕鬆管理和擴展有狀態應用程序。

但是,如果沒有基礎存儲架構,僅利用Kubernetes的全部潛力是不夠的。在決定第三方存儲供應商時,請牢記這些挑戰,並尋找適合你的應用程序部署的存儲供應商。

譯文鏈接:https://thenewstack.io/a-guide-to-running-stateful-applications-in-kubernetes/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章