作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
目录
- 一.CAS之OpenEBS存储机制概述
- 1.什么是CAS
- 2.什么是OpenEBS
- 3.OpenEBS数据引擎
- 4.NDM(Node Disk Manager)
- 5.部署OpenEBS的基本流程
- 二.部署OpenEBS
一.CAS之OpenEBS存储机制概述
1.什么是CAS
Kubernetes的卷通常是基于外部文件系统或块存储实现,这种存储方案称为共享存储(Shared Storage)。所谓的CAS,全称为Container Attached Storage,翻译为中文是"容器附加存储"。CAS则是将存储系统自身部署为Kubernetes集群上的一种较新的存储解决方案。存储在CAS中的数据可以直接从集群内的容器访问,从而能显著减少读/写时间。
2.什么是OpenEBS
OpenEBS是CAS存储机制的著名实现之一,最初由MayaData构建,后捐赠给了CNCF,目前是CNCF的沙箱级项目。OpenEBS能够将Kubernetes工作节点上可用的任何存储转换为本地卷或分布式复制卷。本地卷:- 本地卷,即节点级卷,仅支持在卷所在的节点本地访问,因此,Pod也必须调度至卷所在的节点才能使用本地卷;- OpenEBS可基于本地块设备或分区、子目录或者LVM、ZFS、甚至是由文件模拟的设备来创建PV,这些可统称为本地卷;复制卷:- 是支持将数据同步复制到多个节点的卷,因而能实现节点容错,以及跨可用区进行数据复制;- OpenEBS可基于Mayastor、cStor 或Jiva三种引擎之一,为每个分布式复制卷创建一个微服务;- Pod通过iSCSI(san存储表示是块存储类型,cStor和Jiva)或NVMeoF(Mayastor)连接至卷上;OpenEBS存在着众多组件,他们大体可以分以两大类:控制平面:负责管理节点上的存储、配置和管理数据引擎、管理卷的生命周期、集成到Prometheus进行遥测和监控等;数据引擎:- 1.数据引擎是OpenEBS 的核心,负责代表Pod对底层持久存储执行读写操作;- 2.OpenEBS支持存储引擎包括Mayastor、cStor、Jiva和OpenEBS LocalPV等;参考链接:https://openebs.io/docs/concepts/architecture
3.OpenEBS数据引擎
数据引擎类似于存储控制器,OpenEBS提供了一系列的数据引擎,所有引擎都支持PV的动态置备和数据的强一致性。数据引擎的分位本地引擎和复制引擎:本地引擎:- 1.可以从本地磁盘设备(依赖于NDM)或主机路径创建PV,也可基于集群节点上的LVM或ZFS创建PV;- 2.适合内置可用性和可扩展性功能的应用程序,或者作业类的有状态工作负载;- 3.基于节点上支持的存储机制,可选的动态Local PV包括"Local PV hostpath"、"Local PV device"、"ZFS Local PV"、"LVM Local
PV"和"Rawfile Local PV"这五种;复制引擎- 1.复制卷,顾名思义,就是那些可以将数据同步复制到多个节点的卷;- 2.复制引擎允许从复制节点范围内的任一节点上进行数据访问,并支持跨可用区进行复制;- 3.复制卷通常还支持快照、克隆、扩展等功能;- 4.基于节点上支持的存储机制,可选的复制引擎包括Mayastor、cStor和Jiva;如何选择数据引擎:- 1.应用程序处于生产状态且不需要存储级复制,则首选LocalPV;- 2.应用程序处于生产状态并且需要存储级复制,则首选cStor;- 3.应用程序较小、需要存储级复制但不需要快照或克隆,则首选Jiva;- 4.应用程序需要低延迟和接近磁盘的吞吐量,需要存储级复制,并且工作节点具有性能较高的CPU、RAM和NVME,那么Mayastor是首选;参考链接:https://openebs.io/docs/concepts/architecture#data-engines
4.NDM(Node Disk Manager)
部署OpenEBS的过程中,NDM由专用DaemonSet编排运行于每个节点上- 1.负责发现裸设备并过滤掉不支持使用的设备,例如已经带有文件系统的磁盘;- 2.需要特权模式,访问/dev、/proc和/sys目录来监视连接的设备,并使用各种探测器获取这些设备的详细信息;根据过滤器(filters)检测附加到节点上的裸磁盘设备,并将它们识别为“块设备CRD”- 1.NDM支持使用include filters或exclude filters;- 2.filter的配置保存于ConfigMap中;基于节点上的裸磁盘设备提供PV的存储引擎,会依赖于NDM实现其功能,这包括Local PV device和cStor。
5.部署OpenEBS的基本流程
部署OpenEBS的基本流程:- 1.在各节点上部署iSCSI client;- 2.在Kubernetes集群上部署OpenEBS;- 3.选择要使用的数据引擎;- 4.为选择的数据引擎准备StorageClass;部署文档:https://openebs.io/docs/quickstart-guide/installation
二.部署OpenEBS
推荐阅读:https://openebs.io/docs/quickstart-guide/installation#installation-via-helm