当谈到云原生开源项目时,Kubernetes 受到了很多关注。这个容器编排平台彻底改变了应用程序的开发、部署和扩展。虽然快速向上和向下扩展服务的能力是 Kubernetes 的最大卖点之一,但在这种动态环境中管理持续存储可能非常具有挑战性。在本文中,我将向您介绍排名前五的开源云原生存储供应商。
首先,让我们发现开源存储解决方案的多重优势。
为什么需要 Kubernetes 的开源存储?
与传统专有的、以供应商为中心的 IT 工具不同,云原生生态系统都是关于社区驱动的开源项目。这也适用于存储。强大的开源工具使使用 Kubernetes 管理持久数据成为可能,甚至变得简单!
当你删除一个容器或 pod 时,你会丢失它的数据。这是一个很大的挑战,特别是因为有状态的应用程序需要持久数据。开源存储项目与 Kubernetes 集成良好,整个社区都在积极开发。它们专为容器化应用程序而构建,无论您在何处运行 Kubernetes(本地或任何云平台)都可以使用它们。
存储挑战
Kubernetes 存储与传统的存储管理完全不同。这是因为它包含了新的术语和概念,以及管理存储的新实践。上面提到的数据持久化概念是我们首先需要了解的。然后,还有 Persistent Volumes (PVs)和 Persistent Volume Claims(PVCs)。
现在让我们来看看您可以在业务中使用的 Top 5 开源存储解决方案。
5 个开源存储 Kubernetes 项目
1. OpenEBS
OpenEBS 是一个领先且易于使用的开源项目,为 Kubernetes 提供存储解决方案。它使用称为容器附加存储[1](CAS) 的云原生存储解决方案。它还在您的 Kubernetes 环境中创建和管理卷。这意味着每个存储卷都有一个特定的 pod 和一组副本 pod。它们像 Kubernetes 中的任何其他容器一样进行管理和部署。
项目本身作为一组容器部署在 Kubernetes 上。它完全构建在用户空间中,使其高度便携,可以在任何操作系统/平台上运行。OpenEBS 跨多个节点复制数据。这意味着任何节点故障只会影响该特定节点上的卷副本。该项目还在应用程序和底层云服务提供商之间创建了一个抽象层。这简化了跨不同供应商的数据迁移过程。它还消除了供应商锁定问题。
去年 9 月,OpenEBS 发布了其最新版本 OpenEBS 3.0。它包括几个新功能和增强功能。它还对现有的 LocalPV 风格和新的 LocalPV 类型进行了改进。这个新版本还包括一个OpenEBS 仪表板(Grafana 和 Prometheus 混合)和一个动态 NFS 配置器。
节点磁盘管理器也发生了一些变化。它看到了一些修复,例如检测文件系统更改、添加可扩展 API 服务、向设备添加预留标签等等。更重要的是,这个最新的 OpenEBS版本支持在air-gapped环境中安装。它还为位于其引擎存储库中的每个引擎添加了增强的文档和故障排除指南。
2. Rook
另一个非常流行的存储解决方案 Rook 是一个社区驱动的项目。它支持相当广泛的存储解决方案以与 Kubernetes 环境集成。它将存储卷转换为可以自我修复的自我扩展和自我管理的存储系统。Rook 可以编排许多存储解决方案。这允许用户根据他们的工作流程和应用程序从几个不同的存储提供商中进行选择。这样它可以有效地分发和复制数据,以最大限度地减少损失。
Rook 支持第三方监控工具。它还提供集群安全、扩展和资源管理。通过资源管理、自动化部署和扩展,Rook 使集群/管理员更容易监督存储框架。
在其最新版本中,Rook 的 secrets 和 config map 现在有一个终结器:finalizer。这可以阻止意外删除,并让管理员有时间备份和恢复这些资源。这是一个有用的功能,因为 ecrets 和 config map 是Rook 的关键资源之一。该团队引入了新工具来设置应用程序镜像并为应用程序执行故障转移和故障恢复。Rook 还有一个新的实验特性,支持桶通知。最后,Snyk[2]将支持安全扫描以减少攻击面,这是使 Rook 的数据存储更加安全的一个很好的补充。
3.GlusterFS
它是一个横向扩展的、软件定义的分布式存储系统。GlusterFS可以构建一个通用框架,可以访问文件传输协议(FTP) 和可用存储以快速扩展而不会出现故障点。这使您可以存储大量数据,而无需担心 Kubernetes 集群的安全性和可访问性。GlusterFS 还将用户和组划分为共享存储上的逻辑卷。这使它能够处理大量用户。它还消除了用户对传统存储阵列的依赖。
GlusterFS 提供了一个RESTful卷管理接口Hekiti[3],以帮助从 Kubernetes 自动化卷配置。这为您节省了手动设置 Gluster 卷并将它们映射到 Kubernetes 的成本。Hekiti可以支持任意数量的 GlusterFS 集群。它还允许K8s 管理员实施网络存储,而不必局限于单个 GlusterFS 集群。GlusterFS 使用块存储在存储服务器的开放空间中以位的形式存储大量信息。
最新版本发布了许多新功能、稳定性修复和代码改进。该版本通过随机选择 bricks 的端口改善了启动时间,通过更大的窗口大小改善了修复时间,并在修复布局中使用 readdir 提高了性能。
4.Ceph
Ceph 是一种开源、软件定义的存储解决方案,提供文件存储、块存储和对象存储。它为单个集群中的多种存储类型提供接口。它具有高度可扩展的基础架构。这使得它完全分布,没有任何故障点。该解决方案还通过纠删码、快照、存储克隆等提供灾难恢复和数据冗余。位于 Ceph 存储集群核心的可靠自动分布式对象存储 (RADOS)[4]层可确保存储的数据始终保持一致。它执行数据复制、恢复和故障检测。Ceph 也可以在任何地方运行,无需任何供应商锁定,并且完全自我修复和自我管理. 它也是容错的,并将数据作为对象存储在逻辑存储池中。
最新的太平洋版本修复了 OMAP 格式升级中的一个严重错误。此更新还重新设计了NFS 管理,以确保 NFS exports 在不同的 Ceph 组件之间得到一致的管理。
5. LongHorn
LongHorn 是一个开源的、轻量级的 Kubernetes分布式块存储框架。它将您的块存储分成 LongHorn 卷。这样,您可以在有或没有云提供商的情况下使用 Kubernetes 卷。它使用微服务和容器实现分布式块存储。
LongHorn 还可以跨多个节点和数据中心复制块存储以提高可用性。它支持自动无中断升级。这意味着您可以升级完整的 LongHorn 软件堆栈,而不会影响正在运行的卷。LongHorn 允许您将定期备份安排到 NFS 或 AWS S3 等外部/辅助设备。您还可以从第二个 Kubernetes 集群中的跨集群灾难恢复卷恢复主 Kubernetes 集群中的任何数据。
在最新版本发布中,LongHorn 增加了对备份加密和卷、卷克隆支持、基于策略的备份规则和自动副本重新平衡的支持。这之前是高度可用的RWX 存储[5]、增强的 API 和额外的存储网络支持。
最后的想法
如果您正在使用 Kubernetes 以云原生方式管理基础架构和应用程序,那么您还需要云原生方式来存储。这些工具中的每一个对如何处理 Kubernetes 存储都有自己的看法。采用它们将使您的 Kubernetes 系统更加便携和可靠。它还可以让您更好地控制数据的使用方式。
与任何选择过程一样,在决定选择哪种存储工具之前,您需要考虑各种不同的因素。您需要确定您的要求并选择满足大多数要求的工具。同样重要的是要注意哪种工具与您的应用程序集成得最好。
您可能必须在测试系统上实际测试每个解决方案的读写速度。然后做出选择。这将取决于硬件配置和软件开发人员的独创性。一开始,我们提到快速扩展的能力是 Kubernetes 存储解决方案的关键要求。您的长期成功取决于您在这里所做的基础工作:尝试不同的开源解决方案!
上述所有解决方案都可以轻松地为您的数据提供明确的存储。唯一的区别是他们如何处理您的数据,因此您应该做出相应的选择。这可能是高度个人化的并且特定于用例。在考虑解决方案时,请确保选择适合您的要求并与您的堆栈集成的存储系统。也就是说,选择具有积极响应的支持系统的选项也很重要。
参考资料
[1]
容器附加存储: https://docs.openebs.io/docs/next/cas.html
[2]
Snyk: https://snyk.io/
[3]
Hekiti: https://github.com/heketi/heketi
[4]
(RADOS): https://www.oreilly.com/library/view/learning-ceph/9781787127913/68e88b41-adc3-411a-828d-6c96ab0c5d7a.xhtml#:~:text=RADOS is an object storage,Reliable and resilient
[5]
RWX 存储: https://longhorn.io/docs/1.2.3/advanced-resources/rwx-workloads/
- END -
原文:https://tinyurl.com/37sjwrfw