在存储世界中成为“云原生”的真正含义
对于云原生,架构很重要
“云原生”一词在技术界被广泛使用,但没有特别明确的定义。困惑在于,“云原生”与应用程序部署到的环境几乎没有关系,该术语同样适用于内部部署或公共云。相反,该术语是指应用程序和体系结构特征。
可以在Cloud Native Computing Foundation对术语的最新定义中找到证据:
云原生技术使组织能够在现代动态环境(例如公共云,私有云和混合云)中构建和运行可伸缩应用程序。容器,服务网格,微服务,不变的基础结构和声明性API就是这种方法的例证。
这些技术使松散耦合的系统具有弹性,可管理性和可观察性。结合强大的自动化功能,它们使工程师可以频繁且可预测地以最小的工作量进行高影响力的更改。
什么是云原生存储?
那么,存储原生为云意味着什么?简而言之,它必须以与云原生生态系统中其他所有事物相同的动态,API驱动的方式运行。确定存储系统的Cloud Native信誉的两个特定于存储的问题。他们是:
它是专为Kubernetes打造的
它与亚马逊的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根本不在他们的基因范围之内,甚至常常不在计划之列。他们被困住了,没有任何营销手段会有所帮助。
另一方面,MinIO专为云原生工作负载而构建。它建于最近四年,设计时考虑了Kubernetes,并讲Kubernetes的语言。它与S3兼容,但也可以与Google,Azure或私有云一起使用,从而使多云和混合云成为可能。
高性能的云原生对象存储是获得云原生应用程序所需性能,可靠性和可伸缩性的唯一方法。
立即下载MinIO自己看看。作为100%开源的解决方案,您将获得我们最新,最出色的产品,而不会受到任何阻碍。我们对订阅的定价方式以及针对多PB规模的定价方式也是100%透明的。如果您想先做一点研究,请在我们的Slack频道中闲逛,看看引起人们注意的是什么。