作者:Chad Serino,AlphaBravo首席执行官
随着Kubernetes作为托管基于微服务的进程的方法的兴起,数据存储一直是一个问题。储存在哪里。我们有多大的容量。以及我们如何计划检索它。这些问题的答案似乎就是两个简单的词:persistent storage(持久存储)。
容器已经成为一种将软件移植到需要它的地方的方法。带有运行服务所需数据的容器被部署到各种计算机系统上,这意味着现在的数据比以前可移植性好得多。
但是,当涉及到Kubernetes时,持久性存储是什么呢?数据管理人员如何充分利用他们的Kubernetes系统?这样一个系统的整体效益是什么?
https://alphabravo.io/
加入我们,今天,准备好去发现吧!
Kubernetes解释:简单回顾一下
如果你管理日常基础设施的任何一部分,你可能听说过Kubernetes。这种不断发展的技术已经通过技术巨头和初创公司的等级来实现敏捷的、可扩展的应用程序工作。但是Kubernetes是什么呢?一种管理系统,用于跨节点集群的容器化应用程序。
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
不是很简单吗?好了,想象一下:你有一组机器。例如,虚拟机或VM。然后,通过这些机器,你可以获得各种容器化的应用程序。在对应用程序进行容器化时,我们将它、它的库、框架和配置文件打包以在任何系统上运行。你把你制作的应用程序放在一个“胶囊”里,然后设计这个胶囊,这样它就可以在任何地方借阅并运行它的应用程序。
因此,不管有多少应用程序以某种形式在计算机网络上运行和封装。Kubernetes帮助你以一种可持续和高效的方式轻松管理这些应用程序。用户可以通过Kubernetes轻松地创建和访问数据库,以及各种应用程序的应用程序数据。这提高了速度,但更重要的是,它还提高了效率。
Kubernetes存储类(Storage Class)允许管理员分配存储到映射服务质量级别的“类”。它们还可以添加备份策略以及集群管理员分配的任意策略。
Kubernetes和持久存储
所以我们已经确定,至少就我们的目的而言,容器永远不会被质疑。容器今天可能会在系统上的某个地方关闭,它所创建的所有存储的应用程序数据都将丢失。
对于某些应用程序来说,这并不是什么大问题。然而,在其他许多来说,情况并非如此。应用程序通常需要保持其不变的状态才能正常工作。不仅如此,如果他们所有的本地化数据都被删除了,他们就不能与其他应用程序共享信息。简而言之,容器是王,如果容器被破坏,你应该非常担心你的系统会发生什么。
让我们来看一个例子。如果应用程序依赖于数据库内容,那么它就是以数据为中心的。如果丢失了这些数据,即使只是一部分,你的整个应用程序都会受到影响。在这些情况下,安全的做法是将数据存储在容器之外的某个地方,这样就可以访问数据,而不会对任何人造成危险。这就是“持久性”信息的来源——数据之所以持久,是因为它们与易失性容器无关。
https://www.linkedin.com/pulse/what-persistent-data-why-important-c-thomas-tom-smith-iii/
更仔细的观察
那么,我们需要什么呢?很高兴你问:
将所有这些因素结合起来,你就可以在白天或晚上的任何时间访问数据,甚至在给定数量的容器关闭之后也是如此。这使得它对Kubernetes非常有价值。
Kubernetes基于Kubernetes持久卷(persistent volume,PV)为容器创建永久存储机制。这指的是应用于整个集群的任何资源,允许用户访问的数据远远超出了pod的总寿命。
与此同时,Kubernetes卷(Volume)允许用户挂载存储单元,以扩展节点之间可以共享的数据量。文件系统文件夹、云存储桶——这是你可以选择的任何数据,随时可以访问。当托管特定卷的pod关闭时,常规卷仍然会被删除。然而,永久卷是托管在它自己的pod上,安全可靠。
https://kubernetes.io/docs/concepts/storage/volumes/
在这里,重要的是PV实际上并不支持本地连接的存储。任何工作节点上都没有。相反,它受到网络存储系统(包括EBS和NFS)的支持。你也可以在分布式文件系统上找到它,比如Ceph。
意义
当涉及到存储实现时,总是有一种将存储实现细节保持在“底层”的趋势。秘密。“需要了解”之类的。Kubernetes的持久存储对其他应用程序和使用它们的用户隐藏了很多。这主要涉及存储实现细节,但也包括用户信息。
几年前,这些协议包括:
这些协议使应用程序和操作系统能够访问驱动器和设备供应商。云原生环境的出现在某种程度上破坏了这种互操作性。现在,云提供商的存储服务和系统让更多的人可以访问云服务。
第三方云存储构建的环境中,用户可以完全访问他们可以集成的数据。以Amazon S3存储为例,它提供了一系列工具和应用程序供你使用和操作。LINBIT也是持久性存储行业的强大解决方案。自定义集成支持等优点使这个平台真正脱颖而出。
https://aws.amazon.com/s3/
https://www.linbit.com/
持久卷(Persistent Volume)抽象已经取得了很大的进展。它现在还允许云原生应用程序与其他云存储系统连接。添加虚拟存储和开放源码存储平台,你就可以得到一个实际返回值的存储选项。不必显式地将你的系统与那些系统集成,Kubernetes正在为未来铺平道路。现在,应用程序可以根据需要请求存储,在不知道存储什么或如何存储的情况下创建。
总的来说,云存储消费提供了一种比尝试以任何方式在现场进行存储更平滑的体验。它还可以帮助你减少很多日常开支。如果没有那么多的供应商锁定需要考虑,那么现在就是迁移的最佳时机。你甚至可能发现你有资源和动机来采用多云策略并扩展你的存储范围。
在Kubernetes看来,存储就是王道。对于管理员来说,它显然是一个有用的工具,可以在持久表单中保持数据。在这方面,关于持久数据的好处有很多要说的。
“我怎样才能更容易地管理我的Kubernetes存储器呢?”
显然,对于任何数据系统,首先也是最重要的事情(在存储数据之后)是管理数据。而且,在Kubernetes系统中有如此多的数据需要存储,因此了解如何高效、高质量地存储数据是非常重要的。
例如,在指定pod时,你是否知道可以分别指定每个容器所需的CPU和RAM功率?当在容器中指定了资源请求时,pod将调用哪个节点是放置pod的更好选择。而且,在处理有界容器的情况下,可以选择几种方法中的任何一种来争用节点的资源。
重要的不是找到任何一种客观的更好的方法,因为事实上有太多的方法可以选择。这可归结为个人喜好和经验。你需要一个能满足你具体需求的系统。
也许能够支持这些:
http://www.linbit.com/kubernetes/
无论你的具体目标是什么,我们的目标是投资于一个使用低延迟持久性内存的系统,以帮助你保持操作安全。
持久Kubernetes存储
Kubernetes是一个容器编排工具,它已经成为企业存储和使用数据舱的标准。把它称为商业应用程序使用方式的“革命”有点低估了它的价值,而且肯定没有抓住重点。这是我们使用、访问和存储应用程序数据的下一步。这就是“进化”,比其他任何东西都重要。
随着微服务架构的发展,应用程序逻辑和基础设施将被隔离开来。开发人员使用他们所使用的东西,从而使他们能够专注于手头的工作。抽象你正在管理的实际机器。使用Kubernetes,你可以描述所需的内存和计算能力,然后设置系统来使用它。