Persistent Volumes:计算和存储分离

Kubernetes文档指出“管理存储与管理计算实例是一个不同的问题”。这概括了现代数据中心设计的基本原则,即从规划和部署角度出发,最好将计算和存储分开考虑。在Kubernetes中,通过诸如容器存储接口(CSI)之类的子系统,计算和存储的逻辑分离已变得越来越普遍。因此,与Kubernetes一起使用是一种强大的策略。 计算机存储本身只是一项技术。与其考虑存储,不如考虑数据及其用途。在理想的世界中,人们希望存储的数据如下:

  • 正确性
  • 一致性
  • 可用性
  • 高性能
  • 耐用
  • 容灾可恢复性

人们通常认为正确性是正确的,但是研究表明,在现实世界的系统中不应将正确性视为理所当然。一致性在某些应用程序中至关重要,但对于大多数数据中心数据使用而言,一致性通常会放宽。可用性和性能(访问数据并足够快地检索数据的能力)通常是存储系统需求的重点,其次是可恢复性。持久性通常包含在可恢复性下,并假设现实世界的系统最终会失败,并且必须实施一种方案来恢复丢失的数据。

今天,访问数据的性能通常与存储介质本身有关。 HDD用于纯顺序流访问,而SSD用于随机I / O工作负载。但这是一个过分的简化,因为固态存储的其他特征(例如低功耗,密度和对物理冲击的抵抗力(耐用性)再加上更高的性能,已使其在移动应用中无处不在。但是从数据中心的数据存储角度来看,HDD和SSD仍在使用中-当部署纯顺序工作负载时,HDD通常更具成本效益。用于高性能数据分析(顺序I / O工作负载)和NoSQL数据库(随机I / O工作负载)的横向扩展应用程序的兴起主要集中在使商品(行业标准)平台和媒体性能良好。

传统的企业应用程序已假定,如果您要存储数据,那么它应该始终可用。这导致了冗余,镜像和擦除编码技术,可以防止常见组件故障(风扇或机箱中的机械故障,介质故障等)。

虽然企业存储侧重于设计较小的高度调试的平台(设备,请考虑10个控制器),这些平台侧重于对应用程序透明的数据可用性技术,但现代的横向扩展,数据密集型应用程序将存储堆栈直接合并到应用程序中并且通常使用三重副本配置以提高可用性。与考虑擦除性能要求的采用擦除编码的工程存储系统相比,行业标准(即商品)存储介质和存储模块的经济性更倾向于采用三重副本方法。而应用程序存储部署的规模(认为有1000个控制器)导致了实现机架故障语义的战略以及通过简单地添加更多计算和存储来提高性能或容量的能力。

但是从某种意义上讲,这是没有意义的,因为当今企业中更常见的数据不可用的原因是计划在应用程序升级,网络和基础架构升级以及技术更新的停机时间。

如今,数据中心架构师可用来提高可用性的最大杠杆是将计算和存储分为独立管理的层,这些层通过无处不在的高速以太网网络连接。通过这种方法不仅可以解决可用性问题,而且可以通过提高经济效益和潜在地提高可操作性获得收益。

分离计算和存储所带来的好处有几个:

  1. 通过在服务器出现“故障”时消除重建/恢复来减少停机时间,只需将存储重新连接到新节点即可。
  2. 通过部署较少数量的优化瘦客户端计算节点优化配置来消除SKU扩散。
  3. 通过优化存储层的密度,形状因数和填充量,降低每插槽媒体的开销成本。
  4. 最后,通过解耦生命周期,更快地在计算和存储层中采用新技术。

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

阅读 283

推荐阅读
kubernetes solutions
用户专栏

专注k8s,serverless,service mesh,devops

2231 人关注
244 篇文章
专栏主页