Home

Awesome

<img src="https://user-images.githubusercontent.com/88021699/130732359-4e7686a9-3010-4142-971d-b65498d9c911.jpg" width="50%">

Carina

License FOSSA Status

OpenSSF Best Practices

English | 中文

Background

Storage systems are complex! There are more and more kubernetes native storage systems nowadays and stateful applications are shifting into cloud native world, for example, modern databases and middlewares. However, both modern databases and its storage providers try to solve some common problems in their own way. For example, they both deal with data replications and consistency. This introduces a giant waste of both capacity and performance and needs more mantainness effort. And besides that, stateful applications strive to be more peformant, eliminating every possible latency, which is unavoidable for modern distributed storage systems. Enters carina.

Carina is a standard kubernetes CSI plugin. Users can use standard kubernetes storage resources like storageclass/PVC/PV to request storage media. The key considerations of carina includes:

In short, Carina strives to provide extremely-low-latency and noOps storage system for cloudnative databases and be DBA expert of the storage domain in cloudnative era!

Running Environments

Kubernetes compatiblity

kubernetesv0.9v0.9.1v0.10v0.11.0v1.0
>=1.18supportsupportsupportsupportnot released
>=1.25nonsupportnonsupportnonsupportexperimentalnot released

Carina architecture

Carina is built for cloudnative stateful applications with raw disk performance and ops-free maintainess. Carina can scan local disks and classify them by disk types, for example, one node can have 10 HDDs and 2 SSDs. Carina then will group them into different disk pools and user can request different disk type by using different storage class. For data HA, carina now leverages STORCLI to build RAID groups.

carina-arch

Carina components

It has three componets: carina-scheduler, carina-controller and carina-node.

Features

Quickstart

Install by shell

$ cd deploy/kubernetes
# install, The default installation is kube-system.
$ ./deploy.sh

# uninstall
$ ./deploy.sh uninstall

Install by helm3

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.11.0

Upgrading

Contribution Guide

Blogs

Roadmap

Typical storage providers

NFS/NASSANCephCarina
typical usagegeneral storagehigh performance block deviceextremly scalabilityhigh performance block device for cloudnative applications
filesystemyesyesyesyes
filesystem typeNFSdriver specificext4/xfsext4/xfs
blocknoyesyesyes
bandwidthstandardstandardhighhigh
IOPSstandardhighstandardhigh
latencystandardlowstandardlow
CSI supportyesyesyesyes
snapshotnodriver specificyesno
clonenodriver specificyesnot yet, comming soon
quotanoyesyesyes
resizingyesdriver specificyesyes
data HARAID or NAS appliacneyesyesRAID
ease of maintainessdriver specificmultiple drivers for multiple SANhigh maintainess effortops-free
budgethigh for NAShighhighlow, using the extra disks in existing kubernetes cluster
othersdata migrates with podsdata migrates with podsdata migrates with podsbinpack or spreadout scheduling policy <br> data doesn't migrate with pods <br> * inplace rebulid if pod fails

FAQ

Similar projects

Known Users

Welcome to register the company name in ADOPTERS.md

bocloud

Community

carina-wx

License

Carina is under the Apache 2.0 license. See the LICENSE file for details.

FOSSA Status

Code of Conduct

Please refer to our Carina Community Code of Conduct