OpenEBS 是什么?
OpenEBS 是 Kubernetes 本地超融合存储解决方案,它管理节点可用的本地存储,并为有状态工作负载提供本地或高可用的分布式持久卷。作为一个完全的 Kubernetes 原生解决方案的另一个优势是,管理员和开发人员可以使用 kubectl、Helm、 Prometheus、Grafana、Weave Scope 等 Kubernetes 可用的所有优秀工具来交互和管理 OpenEBS。
OpenEBS 是一种开源云原生存储解决方案,托管于 CNCF 基金会,目前该项目处于沙箱阶段。
OpenEBS 是一组存储引擎,允许您为有状态工作负载 (StatefulSet) 和 Kubernetes 平台类型选择正确的存储解决方案。在高层次上,OpenEBS 支持两大类卷——本地卷和复制卷。
OpenEBS 能做什么?
OpenEBS 管理 k8s 节点上存储,并为 k8s 有状态负载(StatefulSet)提供本地存储卷或分布式存储卷。
本地卷(Local Storage)
OpenEBS 可以使用宿主机裸块设备或分区,或者使用 Hostpaths 上的子目录,或者使用 LVM、ZFS 来创建持久化卷
本地卷直接挂载到 Stateful Pod 中,而不需要 OpenEBS 在数据路径中增加任何开销
OpenEBS 为本地卷提供了额外的工具,用于监控、备份 / 恢复、灾难恢复、由 ZFS 或 LVM 支持的快照等
对于分布式卷 (即复制卷)
OpenEBS 使用其中一个引擎 (Mayastor、cStor 或 Jiva) 为每个分布式持久卷创建微服务
有状态 Pod 将数据写入 OpenEBS 引擎,OpenEBS 引擎将数据同步复制到集群中的多个节点。OpenEBS 引擎本身作为 Pod 部署,并由 Kubernetes 进行协调。当运行 Stateful Pod 的节点失败时,Pod 将被重新调度到集群中的另一个节点,OpenEBS 将使用其他节点上的可用数据副本提供对数据的访问
有状态的 Pods 使用 iSCSI (cStor 和 Jiva) 或 NVMeoF (Mayastor) 连接 OpenEBS 分布式持久卷
OpenEBS cStor 和 Jiva 专注于存储的易用性和持久性。它们分别使用自定义版本的 ZFS 和 Longhorn 技术将数据写入存储。OpenEBS Mayastor 是最新开发的以耐久性和性能为设计目标的引擎,高效地管理计算 (大页面、核心) 和存储 (NVMe Drives),以提供快速分布式块存储
❝
注意:OpenEBS 分布式块卷被称为复制卷,以避免与传统的分布式块存储混淆,传统的分布式块存储倾向于将数据分布到集群中的许多节点上。复制卷是为云原生有状态工作负载设计的,这些工作负载需要大量的卷,这些卷的容量通常可以从单个节点提供,而不是使用跨集群中的多个节点分片的单个大卷
对比传统分布式存储
OpenEBS 与其他传统存储解决方案不同的几个关键方面 :
使用微服务体系结构构建,就像它所服务的应用程序一样。OpenEBS 本身作为一组容器部署在 Kubernetes 工作节点上。使用 Kubernetes 本身来编排和管理 OpenEBS 组件
完全建立在用户空间,使其高度可移植性,以运行在任何操作系统 / 平台。
完全意图驱动,继承了 Kubernetes 易用性的相同原则
OpenEBS 支持一系列存储引擎,因此开发人员可以部署适合于其应用程序设计目标的存储技术。像 Cassandra 这样的分布式应用程序可以使用 LocalPV 引擎进行最低延迟的写操作。像 MySQL 和 PostgreSQL 这样的单片应用程序可以使用使用 NVMe 和 SPDK 构建的 Mayastor 或基于 ZFS 的 cStor 来实现弹性。像 Kafka 这样的流媒体应用程序可以在边缘环境中使用 NVMe 引擎 Mayastor 以获得最佳性能。
驱使用户使用 OpenEBS 的主要原因是 :
在所有的 Kubernetes 发行版上都是可移植的
提高了开发人员和平台 SRE 的生产力
与其他解决方案相比,易于使用
优秀的社区支持
免费开源
本地卷类型
本地卷只能从集群中的单个节点访问。必须在提供卷的节点上调度使用 Local Volume 的 Pods。本地卷通常是分布式工作负载的首选,比如 Cassandra、MongoDB、Elastic 等,这些工作负载本质上是分布式的,并且内置了高可用性(分片)
根据附加到 Kubernetes 工作节点上的存储类型,您可以从不同的动态本地 PV 进行选择——Hostpath、Device、LVM、ZFS 或 Rawfile
可复制卷类型
复制卷顾名思义,是指将数据同步复制到多个节点的卷。卷可以支持节点故障。还可以跨可用性区域设置复制,以帮助应用程序跨可用性区域移动。
复制卷还能够提供像快照、克隆、卷扩展等企业存储特性。复制卷是有状态工作负载 (如 Percona/MySQL、Jira、GitLab 等) 的首选。
根据附加到 Kubernetes 工作节点的存储类型和应用程序性能需求,您可以从 Jiva、cStor 或 Mayastor 中进行选择
OpenEBS 存储引擎建议
应用需求
存储类型
OpenEBS 卷类型
低时延、高可用性、同步复制、快照、克隆、精简配置
SSD/ 云存储卷
OpenEBS Mayastor
高可用性、同步复制、快照、克隆、精简配置
主机路径或外部挂载存储
Dynamic Local PV - Hostpath, Dynamic Local PV - Rawfile
低时延、本地 PV
本地机械 /SSD/ 云存储卷等块设备
Dynamic Local PV - Device
低延迟,本地 PV,快照,克隆
本地机械 /SSD/ 云存储卷等块设备
OpenEBS Dynamic Local PV - ZFS , OpenEBS Dynamic Local PV - LVM
机械 /SSD/ 云存储卷
OpenEBS cStor
高可用性、同步复制、精简配置
主机路径或外部挂载存储
OpenEBS Jiva
低时延、本地 PV
总结:
多机环境,如果有额外的块设备(非系统盘块设备)作为数据盘,选用 OpenEBS Mayastor、OpenEBS cStor
多机环境,如果没有额外的块设备(非系统盘块设备)作为数据盘,仅单块系统盘块设备,选用 OpenEBS Jiva
单机环境,建议本地路径 Dynamic Local PV - Hostpath, Dynamic Local PV - Rawfile,由于单机多用于测试环境,数据可靠性要求较低。