Carina: an high performance and ops-free local storage for kubernetes
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:(CSI_VERSION=1.5.0)
Node OS:Linux
Filesystems:ext4,xfs
If Kubelet is running in containerized mode, you need to mount the host /dev:/dev directory
Each node in the cluster has 1..N Bare disks, supporting SSDS and HDDS. (You can run the LSBLK --output NAME,ROTA command to view the disk type. If ROTA=1 is HDD,ROTA =0 is SSD.)
The capacity of a raw disk must be greater than 10 GB
If the server does not support the bcache kernel module, see FAQ, Modify yamL deployment
Kubernetes compatiblity
kubernetes v0.9 v0.9.1 v0.10 v0.11.0 v1.0
>=1.18 support support support support not released
>=1.25 nonsupport nonsupport nonsupport experimental not 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 components
It has three componets: carina-scheduler, carina-controller and carina-node.
Features
Quickstart Install by shell
$ cd deploy/kubernetesInstall by helm3install, The default installation is kube-system.
$ ./deploy.sh
uninstall
$ ./deploy.sh uninstall
helm repo add carina-csi-driver https://carina-io.github.iohelm 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
./deploy.sh uninstall
and then install the new version ./deploy.sh
(uninstalling carina will not affect volume usage)Contribution Guide
Blogs
Roadmap
Typical storage providers
NFS/NAS SAN Ceph Carina
typical usage general storage high performance block device extremly scalability high performance block device for cloudnative applications
filesystem yes yes yes yes
filesystem type NFS driver specific ext4/xfs ext4/xfs
block no yes yes yes
bandwidth standard standard high high
IOPS standard high standard high
latency standard low standard low
CSI support yes yes yes yes
snapshot no driver specific yes no
clone no driver specific yes not yet, comming soon
quota no yes yes yes
resizing yes driver specific yes yes
data HA RAID or NAS appliacne yes yes RAID
ease of maintainess driver specific multiple drivers for multiple SAN high maintainess effort ops-free
budget high for NAS high high low, using the extra disks in existing kubernetes cluster
others data migrates with pods data migrates with pods data migrates with pods
binpack or spreadout scheduling policy
data doesn't migrate with pods
* inplace rebulid if pod fails
FAQ
Similar projects
Known Users
Welcome to register the company name in ADOPTERS.md
Community
License
Carina is under the Apache 2.0 license. See the LICENSE file for details.
Code of Conduct
Please refer to our Carina Community Code of Conduct
Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.
We'll never share your email with anyone else.