Skip to main content

Volumes and Storage

For applications that need to retain data, persistent storage is needed. NeonKUBE provides an out-of-the-box solution for persistent storage by including OpenEBS for container attached storage (CAS), and Minio for object storage.

Persistence Types

NeonKUBE provides multiple persistence types for different applications.

Network File System

The most commonly used storage type is Network File System (NFS). NFS supports ReadWriteMany and can be used for small applications requiring shared access to files.

note

NFS is relatively slow and is not a good option for complex applications requiring fast operations.

PVCNFSDeploymentpodpodpod

Block Storage

Block Storage volumes are dynamically provisioned storage volumes. Using this mode, each pod in the application will have a separate Persistent Volume.

PVCPVCPVCStatefulSetpodpodpod

There are different block storage engines and they each have different strengths outlined here:

OpenEBS cStor

cStor is the most commonly used and provides enterprise grade features such as synchronous data replication, snapshots, clones, thin provisioning of data, high resiliency of data, data consistency and on-demand increase of capacity or performance.

OpenEBS Jiva

Jiva is a lightweight distributed storage engine. It is not as performant as cStor but is great for use on smaller clusters.

OpenEBS LocalPV

LocalPV provides dynamic provisioning of Kubernetes Local Volumes. This is great for applications that require the best performance and can tolerate reducad availability. A good use case for LocalPV is a distributed database.

Object Storage

NeonKUBE provides Minio which provides high-performance, S3 compatible object storage. NeonKUBE also provides a Minio Bucket custom resource for easily managing buckets.

bucket.yaml

apiVersion: minio.neonkube.io/v1alpha1
kind: MinioBucket
metadata:
name: my-minio-bucket
namespace: default
spec:
objectLocking: false
region: us-west-2
tenant: minio
versioning: "Off"