当前位置: 首页 > 软件库 > 云计算 > 云原生 >

Carina

基于 Kubernetes CSI 标准实现的存储插件
授权协议 Apache-2.0
开发语言 Google Go
所属分类 云计算、 云原生
软件类型 开源软件
地区 不详
投 递 者 孟茂学
操作系统 Linux
开源组织
适用人群 未知
 软件概览

Carina 是一款基于 Kubernetes CSI 标准实现的存储插件,用户可以使用标准的 storageClass/PVC/PV 原语申请 Carina 提供的存储介质;Carina 包含三个主要组件:carina-scheduler、carin-controller 以及 carina-node,全部以容器化形式运行在 Kubernetes 中,并且占用极少的资源。Carina 是为数据库而生的本地存储方案,编排管理本地磁盘并根据磁盘类型构建多种资源池,为数据库等应用提供极致性能的本地存储。

支持环境

  • Kubernetes:1.20 1.19 1.18
  • Node OS:Linux
  • Filesystems:ext4,xfs

总体架构

carina-arch

如上图架构所示,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 之间的关系

快速开始

  • 快速部署
$ cd deploy/kubernetes
# 安装
$ ./deploy.sh
# 卸载
$ ./deploy.sh uninstall

开发指南

常见存储方案对比

  NFS/NAS SAN Ceph Carina
设计场景 通用存储场景 高性能块设备 追求扩展性的通用存储场景 为云数据库而生的高性能块存储
文件存储 支持 支持 支持 支持
块存储 不支持 视驱动程序而定 支持 支持
文件系统 不支持格式化 视驱动程序而定 支持ext4/xfs等 支持ext4/xfs等
宽带 差/中等 中等
IOPS 差/中等 中等
延迟 差/中等
CSI支持 支持 支持 支持 支持
快照 不支持 视驱动程序而定 支持 待支持
克隆 不支持 视驱动程序而定 支持 待支持
配额 不支持 支持 支持 支持
扩容 支持 支持 支持 支持
数据高可用 依赖RAID或NAS设备 支持 支持 依赖RAID
可维护性   不同的SAN设备需要不同的驱动程序,管理成本高 架构复杂,需要专人维护
成本 NFS服务器或NAS设备,成本高 SAN设备,客户端配置HBA卡,成本高 专用存储集群,客户端需配置存储网卡,成本高 K8s集群中剩余的本地磁盘,成本低
其他特性 容器迁移后数据跟随 容器迁移后数据跟随 支持对象存储,容器迁移后数据跟随 支持binpack/spreadout等调度策略
针对有状态容器,支持原地重启、重建
容器迁移后,数据不能跟随,需要应用层面实现数据恢复
 相关资料
  • 本文向大家介绍JavaScript实现基于Cookie的存储类实例,包括了JavaScript实现基于Cookie的存储类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现基于Cookie的存储类。分享给大家供大家参考。具体分析如下: 通过这个JS类,你可以象使用session一样使用cookie,非常简单了! 希望本文所述对大家的javascript程序设计有所

  • 本文向大家介绍PHP基于文件存储实现缓存的方法,包括了PHP基于文件存储实现缓存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP基于文件存储实现缓存的方法。分享给大家供大家参考。具体如下: 在一些数据库数据记录较大,但是服务器有限的时候,可能一条MySQL查询就会好几百毫秒,一个简单的页面一般也有十几条查询,这个时候也个页面加载下来基本要好几秒了,如果并发量高的话服务器基本就瘫

  • 输入消息:'A'(十六进制:0x41)输出:0x30476DC0根据本网站:输出应为:0xD3D99E8B 我想我错过了CRC的反转/初始化,但我不确定如何改变这个基本实现来获得与网站结果等效的结果。 运行我的程序时的输出: > 初始化为0xfffffffff 反转输入消息字节 对最终值进行异或,与XORed值相反 public static UInt32 GenerateCRC_32(Byte[

  • 请访问 ydoc 官网 - 插件 浏览插件。 试一试 现在我们来安装 edit-page 插件 首先 install 这个模块: npm install --save-dev ydoc-plugin-demo 在 ydoc.json 中配置该插件: { "plugins": ["edit-page"], "pluginsConfig": { "edit-page": {

  • 本文向大家介绍JS实现本地存储信息的方法(基于localStorage与userData),包括了JS实现本地存储信息的方法(基于localStorage与userData)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现本地存储信息的方法。分享给大家供大家参考,具体如下: WEB应用的快速发展,是的本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie

  • 本文向大家介绍基于jquery实现轮播焦点图插件,包括了基于jquery实现轮播焦点图插件的使用技巧和注意事项,需要的朋友参考一下 直接上代码,可能不是最好的,欢迎吐槽。 Html CSS Css文件可以根据需求自己DIY, 但html的.slider里面的结构应该是一样。 Run 起来: $(".slider').slider({auto: true, interval: 2000}); 改进j