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: 本文属于翻译,原文