I recently wrote about OpenEBS in regard to local volumes in my post Deploying Percona Kubernetes Operators with OpenEBS Local Storage. And there are also my recent blog posts about Kubernetes, Percona Operators, and storage management problems:
For me, working with my own deployment of Kubernetes, I struggled for a long time how to manage storage volumes in Kubernetes on your own hardware.
If you are using Kubernetes from a cloud provider, or with NAS/SAN system that comes with Kubernetes support, this is less of a problem, but I was looking for a widely available (Open Source) solution that could provide cloud-like flexibility and be feature-rich.
Today I want to offer to take a look at OpenEBS as a general storage management solution for Kubernetes. There are two more storage options, besides the already mentioned LocalPV:
What is so special about those?
cStor allows you to combine storage capacity from the multiple nodes and provides the following features (I took the info from https://docs.openebs.io/docs/next/casengines.html):
|Lightweight and completely in user space||Yes|
|Snapshots and cloning support||Advanced|
|Suitable for high capacity workloads||Yes|
|Disk pool or aggregate support||Yes|
|On-demand capacity expansion||Yes|
|Data resiliency (RAID support )||Yes|
|Near disk performance||No|
As we can see, cStor offers capabilities compared with storage volumes offered by cloud provides, such as Replication, Data Snapshot and Cloning, aggregation of multiple disks, etc.
The only downside (and it might be an important factor for consideration) is that the performance will be worse compared to the local storage. The most limiting factor is network performance, and if the storage nodes share the same network with the workload nodes, they will compete for the network resources. Also, the IO latency (which is important for databases) will be limited by network latency.
This is where zfs-localpv comes into play. If you need better performance and still want to use some advanced capabilities like volume snapshots and cloning, you can choose the zfs-localpv storage provisioner.
As the name suggests, this provisioner uses the ZFS filesystem over local storage, where local storage offers high-performance IO and ZFS offers more features than a traditional Linux filesystem.
There is one more storage in development: Mayastor, which MayaData covered in our community blog.
I praise MayaData, creators of OpenEBS, to take the lead on providing OpenSource volume management tools for Kubernetes. This is a valid choice for on-premise Kubernetes deployments or when you do not want to rely on cloud provider volumes.