Top Open Source Kubernetes Storage Solutions
1. OpenEBS
License: Apache License
GitHub Repo: https://github.com/openebs/openebs
OpenEBS is an open source project that provides cloud native storage solutions for Kubernetes. Unlike other solutions, OpenEBS easily integrates with Kubernetes, making it a popular solution. It offers container-native storage employing Kubernetes to store and manage data, using container-attached storage (CAS) architecture.
The CAS architecture ensures every storage volume has its own dedicated pod and set of replica pods deployed and managed like other containers or microservices in Kubernetes. You can also deploy OpenEBS as a container to easily assign storage services on the container, application, or cluster level.
The project supports synchronous replication to allow replicating data volumes across different availability zones to achieve high availability. You can use this feature to build a highly available stateful application that uses local disks on cloud services like Google Kubernetes Engine (GKE).
A key advantage of OpenEBS is that it helps avoid vendor lock-in issues that occur due to the differences in storage architecture implementations by each cloud provider. OpenEBS solves this by defining a layer of abstraction between the applications and the supporting cloud service provider. It makes migrating data across multiple providers easier—there’s no need to handle the underlying architecture.
2. Rook
License: Apache License
GitHub Repo: https://github.com/rook/rook
Rook is an open source project supported by the Cloud Native Computing Foundation (CNCF). This cloud native solution is a community-driven endeavor to help manage block, object, and file storage. It lets you choose from various storage providers while providing a framework, platform, and user support.
Ceph Rook is considered the most stable version, providing highly-scalable distributed storage. Rook lets you use YAML files to declare the desired number of variables needed in the cluster. Next, it spins up clusters and checks in as an admin controller to ensure the defined config file runs as intended.
Rook lets you introduce storage providers on Kubernetes using the kubectl command. Once deployed, the solution lets you easily manage your application’s shared file systems or storage operations. It stores data as block objects built using a StorageClass and automatically mounts storage units onto pods using CephBlockPool.
Rook lets you scale, secure, and manage cluster resources from one place. It provides a dashboard for storage clusters that lets you check cluster health and resource status. Additionally, it supports monitoring through third-party tools like Grafana and Prometheus so that you can manage advanced metrics, graphs, and alerts for storage containers.
3. GlusterFS
License: GPLV2 and LGPLV3+
GitHub Repo: https://github.com/gluster/glusterfs
GlusterFS is an open source network filesystem solution backed by RedHat that offers an open source (community) version and a commercial version. The solution aggregates data storage from various sources into scalable, distributed file systems.
It provides a RESTful interface to manage volumes, called Heketi, that lets you automate Kubernetes volume provisioning. This feature eliminates the overhead of manually mapping and creating GlusterFS volumes to Kubernetes persistent volumes.
GlusterFS is not a Kubernetes-native storage solution. Rather, it provides a storage solution that can work with Kubernetes. The Heketi interface supports Kubernetes integration but is a relatively new addition and only updated after users encounter significant bugs.
4. Longhorn
License: Apache License
GitHub Repo: https://github.com/longhorn/longhorn
LongHorn is an open source framework that offers distributed lightweight block storage for Kubernetes. It works by separating block storage into multiple LongHorn volumes to enable using Kubernetes volumes separately or with a cloud provider. It uses containers and microservices to implement distributed block storage.
LongHorn can replicate block storage over several data centers and nodes to help improve availability. It also supports non-disruptive, automated upgrades to ensure you can upgrade the whole LongHorn stack without disrupting the running volumes.
You can use LongHorn to schedule automated recurring backups to secondary or external locations like AWS S3 or NFS. It also lets you recover data from your primary Kubernetes cluster using cross-cluster recovery volumes in other Kubernetes clusters.
LongHorn features include RWX storage with high availability, storage networking support, and an advanced API. The last version release introduced support for volume and backup encryption, backup policy rules, automatic rebalancing of replicas, and volume cloning.