在存储领域,“云原生”的真正含义

对于云原生,架构至关重要
术语“云原生”在技术圈中被广泛使用,但并没有一个特别清晰的定义。混乱在于,“云原生”与应用程序部署的环境几乎没有关系——该术语同样适用于本地部署或公有云。相反,该术语指的是应用程序和架构的特性。
证据可以在云原生计算基金会最近对该术语的定义中找到
云原生技术使组织能够在现代动态环境(例如公有云、私有云和混合云)中构建和运行可扩展的应用程序。容器、服务网格、微服务、不变的基础设施和声明式 API 体现了这种方法。
这些技术支持构建松耦合的系统,这些系统具有弹性、可管理性和可观察性。结合强大的自动化,它们允许工程师频繁且可预测地进行高影响力的更改,同时最大程度地减少工作量。
什么是云原生存储?
那么,存储成为云原生意味着什么?简而言之,它必须以与云原生生态系统中所有其他内容相同的方式(动态、API 驱动)运行。这两个特定于存储的问题决定了存储系统的云原生信誉。它们是
- 它是为 Kubernetes 量身定制的
- 它与 Amazon 的 S3 API 兼容
让我们更详细地看一下这些标准。
云原生存储是对象存储
现代应用程序架构基于对象存储,而 S3 默认为云的 API 语言。由于对象存储是唯一一种旨在处理云原生应用程序生成的数据量的存储类型,其价格在公司可以承受的范围内,并且以用户期望的速度 - 它主导着现代存储。对象存储的其他属性包括优越的分布方法,以及比竞争的块存储或文件存储更好的弹性和更高的可用性。
这些是云原生应用程序所期望的属性。
Amazon S3 API 是对象存储的事实标准,以至于每个对象存储软件供应商都声称与之兼容。也就是说,AWS S3 兼容性实际上是二进制的。它在所有情况下都有效,或者无效。
这意味着在数百个,也许是数千个角落案例中,您期望发生的事情并没有发生。这是开源软件具有显著优势的领域。鉴于应用程序、操作系统和硬件架构的大小和多样性,它们已经看到了大多数角落案例。
作为应用程序创建者,这很重要。您需要针对这些供应商测试您的应用程序。开源使评估供应商声明并确定哪个平台针对您的应用程序执行变得容易。如果它通过了,它很可能是云原生的。如果没有,则不是。
云原生存储:Kubernetes 原生
成为“云原生”的第二个标准是使用利用外部容器编排平台的分布式架构。这意味着 Kubernetes 原生是云原生存储的一个定义属性。Kubernetes 已经成为容器编排领域的明确行业赢家,因此构建以与 Kubernetes 协同工作对于存储解决方案被视为云原生至关重要。
对于存储来说,成为Kubernetes原生究竟意味着什么?我们认为有六个主要标准。
1. 让 Kubernetes 编排存储节点
Kubernetes 是一个强大的编排器,可以用来处理计算和存储编排。像 MinIO 这样的真正云原生存储选项与 Kubernetes 集成,允许操作员使用 Kubernetes 接口管理存储,并让 Kubernetes 处理从供应到卷放置的所有操作。
2. 高度多租户
多租户允许多个客户使用应用程序的单个实例,并且如果正确实现,可以降低运营开销、降低成本并降低复杂性,尤其是在大规模情况下。但是,它还需要严格的资源隔离,以便多个用户可以访问计算或存储资源而不会影响其他用户。真正的云原生存储解决方案将提供足够的资源隔离,以使多租户架构安全、高可用和高性能。
在对象存储领域,这意味着 Kubernetes 基础设施需要隔离和管理存储租户。如果 Kubernetes 没有管理底层基础设施,那么它就不是真正的云原生。这使得那些具有 CSI 或 Operator 集成的设备供应商不合格。
3. 轻量级
除非存储系统非常轻量级并且能够与应用程序堆栈一起打包,否则多租户将无法实现。如果存储系统占用太多资源或包含太多 API,则无法在同一基础设施上打包多个租户。
4. 可扩展
可扩展性是云原生存储系统的主要属性之一。Kubernetes 的优势在于它已在大规模情况下证明了自己。Kubernetes 还可以用于管理存储扩展,但前提是底层存储系统与 Kubernetes 集成,并将供应和退役功能移交给 Kubernetes。
5. API 驱动
Kubernetes 和云原生系统的核心原则之一是尽可能通过自动化进行管理。为了使存储系统在最真实的意义上成为云原生,它必须通过 API 与 Kubernetes 集成,并允许动态的、API 驱动的编排。
6. 用户空间
最后的考虑可能是最困难的。为了使对象存储解决方案成为云原生,它必须完全在用户空间中运行,没有任何内核依赖项。这并不是大多数对象存储系统(尤其是硬件设备)的构建方式。但是,如果您想容器化您的存储并在任何 Kubernetes 集群上部署它,则必须遵守这些约束。根据定义,这意味着需要内核修补或具有专用硬件的解决方案将不是云原生的。
结论
虽然在某种程度上很简单,但声称“云原生”状态的这两个标准在实践中实际上相当困难。公有云对象存储供应商在这些标准方面做得相当好——确实,鉴于 Google 是 Kubernetes 的来源,而 Amazon 是 S3 的来源,人们会期望他们这样做。私有云对象存储供应商在通过这些测试方面面临着更大的困难。虽然有些供应商声称与 S3 兼容,但更仔细的检查表明并非如此。对于绝大多数传统供应商而言,Kubernetes 简直不是他们的 DNA,而且通常甚至不在路线图上。他们被困住了,任何营销都无济于事。
另一方面,MinIO 是专门为云原生工作负载构建的。它是在过去四年中构建的,设计时考虑了 Kubernetes,并使用 Kubernetes 的语言。它与 S3 兼容,但也可以与 Google、Azure 或私有云一起使用,从而实现多云和混合云。
高性能、云原生对象存储是获得云原生应用程序所需的性能、可靠性和可扩展性的唯一途径。
立即下载MinIO,亲身体验。作为 100% 开源解决方案,您将获得我们最新最好的功能,没有任何保留。我们还 100% 透明地说明了我们如何为订阅定价 - 以及该定价如何针对 PB 级规模进行设计。如果您想先做一些研究,请查看我们的文档或加入我们的 Slack 频道,了解哪些内容吸引了人们的注意。