Kubernetes文檔指出「管理存儲與管理計算實例是一個不一樣的問題」。這歸納了現代數據中心設計的基本原則,即從規劃和部署角度出發,最好將計算和存儲分開考慮。在Kubernetes中,經過諸如容器存儲接口(CSI)之類的子系統,計算和存儲的邏輯分離已變得愈來愈廣泛。所以,與Kubernetes一塊兒使用是一種強大的策略。 計算機存儲自己只是一項技術。與其考慮存儲,不如考慮數據及其用途。在理想的世界中,人們但願存儲的數據以下:數據庫
人們一般認爲正確性是正確的,可是研究代表,在現實世界的系統中不該將正確性視爲理所固然。一致性在某些應用程序中相當重要,但對於大多數數據中心數據使用而言,一致性一般會放寬。可用性和性能(訪問數據並足夠快地檢索數據的能力)一般是存儲系統需求的重點,其次是可恢復性。持久性一般包含在可恢復性下,並假設現實世界的系統最終會失敗,而且必須實施一種方案來恢復丟失的數據。服務器
今天,訪問數據的性能一般與存儲介質自己有關。 HDD用於純順序流訪問,而SSD用於隨機I / O工做負載。但這是一個過度的簡化,由於固態存儲的其餘特徵(例如低功耗,密度和對物理衝擊的抵抗力(耐用性)再加上更高的性能,已使其在移動應用中無處不在。可是從數據中心的數據存儲角度來看,HDD和SSD仍在使用中-當部署純順序工做負載時,HDD一般更具成本效益。用於高性能數據分析(順序I / O工做負載)和NoSQL數據庫(隨機I / O工做負載)的橫向擴展應用程序的興起主要集中在使商品(行業標準)平臺和媒體性能良好。網絡
傳統的企業應用程序已假定,若是您要存儲數據,那麼它應該始終可用。這致使了冗餘,鏡像和擦除編碼技術,能夠防止常見組件故障(風扇或機箱中的機械故障,介質故障等)。架構
雖然企業存儲側重於設計較小的高度調試的平臺(設備,請考慮10個控制器),這些平臺側重於對應用程序透明的數據可用性技術,但現代的橫向擴展,數據密集型應用程序將存儲堆棧直接合併到應用程序中而且一般使用三重副本配置以提升可用性。與考慮擦除性能要求的採用擦除編碼的工程存儲系統相比,行業標準(即商品)存儲介質和存儲模塊的經濟性更傾向於採用三重副本方法。而應用程序存儲部署的規模(認爲有1000個控制器)致使了實現機架故障語義的戰略以及經過簡單地添加更多計算和存儲來提升性能或容量的能力。 性能
可是從某種意義上講,這是沒有意義的,由於當今企業中更常見的數據不可用的緣由是計劃在應用程序升級,網絡和基礎架構升級以及技術更新的停機時間。 優化
現在,數據中心架構師可用來提升可用性的最大槓桿是將計算和存儲分爲獨立管理的層,這些層經過無處不在的高速以太網網絡鏈接。經過這種方法不只能夠解決可用性問題,並且能夠經過提升經濟效益和潛在地提升可操做性得到收益。編碼
分離計算和存儲所帶來的好處有幾個:spa
Kubernetes已經發展爲支持稱爲容器存儲接口(CSI)的靈活存儲接口,該接口容許任何存儲提供商經過定義明確的接口提供服務。 CSI不同意使用之前的樹內存儲提供程序方法,並向各類存儲部署方法開放了Kubernetes。翻譯
CSI提供程序接口爲Kubernetes定義了一個動態存儲模型。在許多方面,CSI接口鼓勵供應商爲現有存儲解決方案定義新接口,以在Kubernetes的控制下按需動態分配持久性存儲卷。 CSI甚至將功能擴展到了傳統企業存儲解決方案。 CSI抽象提供了對計算和存儲的必要和有益的分離,該分離支持上述物理分離方法。 CSI還容許專一於「網絡存儲」網絡方面的較新的網絡存儲方法爲Kubernetes提供健壯的解決方案,該解決方案更適合於Web規模數據應用程序的存儲配置。設計
Web規模數據分析存儲的Kubernetes部署要求是一個不斷髮展的領域。 Kubernetes提供了規模和編排功能以部署高性能數據分析應用程序。與重量更重的傳統VM方法相比,輕量級容器模型更適合於高性能橫向擴展數據分析應用程序。可是,根據特定的工做負載,其中許多應用程序是在假定直接訪問本地HDD或SSD存儲的狀況下編寫的。存在諸如可組合基礎架構之類的方法來爲網絡存儲提供本地驅動器的性能和行爲。可組合基礎架構還支持許多應用程序定義的應用程序中存儲堆棧模型,並進行了正確配置和自動化,從而實現了機架故障語義。 CSI模型徹底支持此類部署,從而爲Kubernetes上的這些應用程序提供了高性能的解決方案。
支持持久存儲的CSI接口是Kubernetes生態系統的最新成員。它已經致使了許多針對Web規模應用程序的網絡存儲解決方案。來年,這將是一個值得關注的空間。
PS: 本文屬於翻譯,原文