Dynamic Kubernetes Local Persistent Volumes
OpenEBS Dynamic Local PV provisioner can be used to dynamically provision
Kubernetes Local Volumes using different kinds of storage available on the Kubernetes nodes.
Project Status: GA
Local Persistent Volumes are great for distributed cloud native data services that can handle resiliency and availability and expect low-latency access to the storage. Local Persistent Volumes can be provisioned using the hostpath, NVMe or PCIe based SSDs, Hard Disks or on top of other filesystems like ZFS, LVM.
Some of the targetted applications are:
- Distributed SQL Databases like PostgreSQL
- Distributed No-SQL Databases like MongoDB, Cassandra
- Distributed Object Storages like MinIO (distributed mode)
- Distributed Streaming services like Apache Kakfa,
- Distributed Logging and search services like ElasticSearch, Solr
- AI/ML workloads
Overview
Kubernetes Local persistent volumes allows users to access local storage through the standard PVC interface in a simple and portable way. The PV contains node affinity information that the system uses to schedule pods to the correct nodes.
OpenEBS Dynamic Local PVs extends the capabilities provided by the Kubernetes Local PV by making use of the OpenEBS Node Storage Disk Manager (NDM), the significant differences include:
- Users need not pre-format and mount the devices in the node.
- Supports Dynamic Local PVs - where the devices can be used by CAS solutions and also by applications. CAS solutions typically directly access a device. OpenEBS Local PV ease the management of storage devices to be used between CAS solutions (direct access) and applications (via PV), by making use of BlockDeviceClaims supported by OpenEBS NDM.
- Supports using hostpath as well for provisioning a Local PV. In fact in some cases, the Kubernetes nodes may have limited number of storage devices attached to the node and hostpath based Local PVs offer efficient management of the storage available on the node.
Kubernetes Compatibility Matrix
Kubernetes <= 1.15 | Kubernetes 1.16 | Kubernetes 1.17 | Kubernetes 1.18 | Kubernetes 1.19 | Kubernetes 1.20 | Kubernetes 1.21 | Kubernetes 1.22 | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 | Kubernetes 1.26 | Kubernetes 1.27 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
v3.3.x |
✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
v3.4.x |
✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
v3.5.x |
✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
HEAD |
✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Install
Please refer to our Quickstart and the OpenEBS Documentation.
Contributing
Head over to the CONTRIBUTING.md page.
Roadmap
Find the Dynamic Local PV roadmap items at the OpenEBS Roadmap page.
OpenEBS Adopters
Check out the list of organizations and users who have chosen OpenEBS to run their stateful workloads, over at the OpenEBS Adopters page.
Community, discussion, and support
Learn how to engage with the OpenEBS community on the community page.
You can reach the maintainers of this project at:
- Kubernetes Slack channels: * #openebs * #openebs-dev
- Mailing List
Code of conduct
Participation in the OpenEBS community is governed by the CNCF Code of Conduct.
Inspiration/Credit
OpenEBS Local PV has been inspired by the prior work done by the following the Kubernetes projects:
- https://github.com/kubernetes-sigs/sig-storage-lib-external-provisioner/tree/master/examples/hostpath-provisioner
- https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner
- https://github.com/rancher/local-path-provisioner