
一、开源项目简介
Carina 是一款基于 Kubernetes CSI 标准实现的存储插件,用户可以使用标准的 storageClass/PVC/PV 原语申请 Carina 提供的存储介质;Carina包含三个主要组件:carina-scheduler、carin-controller以及carina-node,全部以容器化形式运行在Kubernetes中,并且占用极少的资源。Carina是为数据库而生的本地存储方案,编排管理本地磁盘并根据磁盘类型构建多种资源池,为数据库等应用提供极致性能的本地存储。
Carina致力于为云原生数据库提供高性能、免运维的存储系统,并成为云原生时代数据库存储领域的DBA专家!
二、开源协议
使用Apache-2.0开源协议
三、界面展示


总体架构

如上图架构所示,carina 能够自动发现本地裸盘,并根据其磁盘特性划分为 hdd 磁盘卷组及 ssd 磁盘卷组等,针对于本地数据高可用,carina 推出了基于 bcache 的磁盘缓存功能以及自动组建 RAID 功能.
- carina-node 是运行在每个节点上的 agent 服务,利用 lvm 技术管理本地磁盘,按照类别将本地磁盘划分到不同的 VG 中,并从中划分 LV 提供给 Pod 使用.
- carina-scheduler 是 Kubernetes 的调度插件,负责基于申请的 PV 大小、节点剩余磁盘空间大小,节点负载使用情况进行合理的调度。默认提供了 spreadout 及 binpack 两种调度策略.
- carina-controller 是 carina 的控制平面,监听 PVC 等资源,维护 PVC、LV 之间的关系
四、功能概述
功能列表
- 磁盘管理
- 设备注册
- 基于文件系统使用
- 基于块设备使用
- pvc扩容
- 基于容量的调度
- 卷拓扑
- 磁盘缓存使用
- raid管理
- 容灾转移
- 磁盘限速
- 指标监控
- API
常见存储方案对比
NFS/NAS | SAN | Ceph | Carina | |
---|---|---|---|---|
设计场景 | 通用存储场景 | 高性能块设备 | 追求扩展性的通用存储场景 | 为云数据库而生的高性能块存储 |
文件存储 | 支持 | 支持 | 支持 | 支持 |
块存储 | 不支持 | 视驱动程序而定 | 支持 | 支持 |
文件系统 | 不支持格式化 | 视驱动程序而定 | 支持ext4/xfs等 | 支持ext4/xfs等 |
宽带 | 差/中等 | 中等 | 高 | 高 |
IOPS | 差/中等 | 高 | 中等 | 高 |
延迟 | 差/中等 | 低 | 差 | 低 |
CSI支持 | 支持 | 支持 | 支持 | 支持 |
快照 | 不支持 | 视驱动程序而定 | 支持 | 待支持 |
克隆 | 不支持 | 视驱动程序而定 | 支持 | 待支持 |
配额 | 不支持 | 支持 | 支持 | 支持 |
扩容 | 支持 | 支持 | 支持 | 支持 |
数据高可用 | 依赖RAID或NAS设备 | 支持 | 支持 | 依赖RAID |
可维护性 | 不同的SAN设备需要不同的驱动程序,管理成本高 | 架构复杂,需要专人维护 | 高 | |
成本 | NFS服务器或NAS设备,成本高 | SAN设备,客户端配置HBA卡,成本高 | 专用存储集群,客户端需配置存储网卡,成本高 | K8s集群中剩余的本地磁盘,成本低 |
其他特性 | 容器迁移后数据跟随 | 容器迁移后数据跟随 | 支持对象存储,容器迁移后数据跟随 | * 支持binpack/spreadout等调度策略 * 针对有状态容器,支持原地重启、重建 * 容器迁移后,数据不能跟随,需要应用层面实现数据恢复 |
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)