「开源」一款致力于为云原生数据库提供高性能、免运维的存储系统

一飞开源,介绍创意、新奇、有趣、实用的免费开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

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等调度策略
* 针对有状态容器,支持原地重启、重建
* 容器迁移后,数据不能跟随,需要应用层面实现数据恢复

同类型存储项目

  • topolvm
  • 官方csi-driver-host-path
  • local-path-provisioner
  • openebs

五、技术选型

支持环境

  • Kubernetes:(CSI_VERSION=1.3.0)
  • Node OS:Linux
  • Filesystems:ext4,xfs
  • 如果kubelet以容器化方式运行,需要挂载主机/dev目录
  • 集群每个节点存在1..N块裸盘,支持SSD和HDD磁盘(可使用命令lsblk --output NAME,ROTA查看磁盘类型,ROTA=1为HDD磁盘 ROTA=0为SSD磁盘)
  • 节点单块裸盘容量需要大于10G
  • 如果服务器不支持bcache内核模块,参考FAQ,修改部署yaml

快速开始

  • 快速部署

使用shell

  • 该部署方式,部署的镜像TAG为latest,如果要部署指定版本carina需要更改镜像地址
$ cd deploy/kubernetes
# 安装,默认安装在kube-system
$ ./deploy.sh

# 卸载
$ ./deploy.sh uninstall

使用helm3

  • 支持安装指定版本carina
helm repo add carina-csi-driver https://carina-io.github.io

helm search repo -l carina-csi-driver

helm install carina-csi-driver carina-csi-driver/carina-csi-driver --namespace kube-system --version v0.10.0
  • 部署文档
  • 详细部署及使用参考使用手册

Carina 升级

  • 先卸载老版本./deploy.sh uninstall,然后安装新版本./deploy.sh(卸载carina并不会影响存储卷的使用)

六、源码地址

访问一飞开源:https://code.exmay.com/

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章