https://github.com/openebs/dynamic-localpv-provisioner
Dynamically deploy Stateful Persistent Node-Local Volumes & Filesystems for Kubernetes that is provisioned from simple local filesystem storage.
https://github.com/openebs/dynamic-localpv-provisioner
dynamic-provisioning hacktoberfest kubernetes kubernetes-storage microservices openebs
Last synced: about 1 year ago
JSON representation
Dynamically deploy Stateful Persistent Node-Local Volumes & Filesystems for Kubernetes that is provisioned from simple local filesystem storage.
- Host: GitHub
- URL: https://github.com/openebs/dynamic-localpv-provisioner
- Owner: openebs
- License: apache-2.0
- Created: 2020-11-01T10:58:00.000Z (over 5 years ago)
- Default Branch: develop
- Last Pushed: 2025-05-08T10:01:16.000Z (about 1 year ago)
- Last Synced: 2025-05-14T16:11:53.737Z (about 1 year ago)
- Topics: dynamic-provisioning, hacktoberfest, kubernetes, kubernetes-storage, microservices, openebs
- Language: Go
- Homepage: https://openebs.io
- Size: 27.8 MB
- Stars: 165
- Watchers: 15
- Forks: 66
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Governance: GOVERNANCE.md
Awesome Lists containing this project
README
# OpenEBS Dynamic LocalPV Provisioner
[](https://www.cncf.io/projects/openebs/)
[](./LICENSE)
[](https://kubernetes.slack.com/messages/openebs)
[](https://us05web.zoom.us/j/87535654586?pwd=CigbXigJPn38USc6Vuzt7qSVFoO79X.1)
[](https://goreportcard.com/report/github.com/openebs/dynamic-localpv-provisioner)
[](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopenebs%2Fdynamic-localpv-provisioner?ref=badge_shield&issueType=license)
[](https://www.bestpractices.dev/projects/9666)
[](https://clomonitor.io/projects/cncf/openebs)
[](https://artifacthub.io/packages/helm/openebs/openebs)
## Overview
OpenEBS Dynamic LocalPV Provisioner is an open‐source Kubernetes component that automates the dynamic provisioning of local persistent volumes. It converts local storage available on Kubernetes nodes, such as hostPath directories into persistent volumes accessible via PVCs. The provisioner automatically assigns node affinity metadata, ensuring that pods run on the node hosting the storage. The tool simplifies local storage management by automating volume creation, binding, and cleanup processes for hostpaths. It overcomes challenges of static provisioning by dynamically allocating storage on demand. Overall, the provisioner offers a robust, scalable solution for managing local persistent hostpath volumes in Kubernetes.
## Why OpenEBS Dynamic LocalPV Provisioner?
- Dynamic Provisioning: Automatically creates persistent hostpath volumes on demand from local node storage, reducing manual configuration.
- Seamless Kubernetes Integration: Uses node affinity to ensure pods are scheduled on the node where the volume is located, maintaining data consistency.
- Customizable Storage Behavior: Offers flexible configuration through StorageClasses, supporting hostpath features like quota enforcement etc.
- Optimized for High Performance: Ideal for high-performance, low-latency, stateful applications like replicated databases which need local storage.
## Architecture
```mermaid
graph TD
%% Define Styles with Black Text
style kubelet fill:#ffcc00,stroke:#d4a017,stroke-width:2px,color:#000
style Provisioner fill:#66ccff,stroke:#3388cc,stroke-width:2px,color:#000
style HelperPod fill:#99ff99,stroke:#44aa44,stroke-width:2px,color:#000
style App fill:#ff9999,stroke:#cc6666,stroke-width:2px,color:#000
style Hostpath fill:#ffdd99,stroke:#d4a017,stroke-width:2px,color:#000
style PVC fill:#ffdd99,stroke:#d4a017,stroke-width:2px,color:#000
style PV fill:#d9b3ff,stroke:#9955cc,stroke-width:2px,color:#000
subgraph "Kubernetes Cluster"
subgraph "Kubelet"
kubelet["Kubelet"]
end
subgraph "OpenEBS LocalPV"
Provisioner["LocalPV Provisioner"]
HelperPod["Helper Pod (Creates/Cleanup Directory)"]
end
subgraph "Worker Node"
App["Application Pod"]
PVC["Persistent Volume Claim"]
PV["Persistent Volume"]
Hostpath["[User-defined path on host]"]
end
end
%% Storage Flow
App -->|Requests Storage| PVC
PVC -->|Binds to| PV
PV -->|Mounted on| Hostpath
kubelet -->|Mounts Path| Hostpath
%% Provisioning Flow
Provisioner -->|Launches| HelperPod
Provisioner -->|Watches PVC Requests| Provisioner
Provisioner -->|Creates PV| PV
HelperPod -->|Creates Directory| Hostpath
PV -->|Bound to| PVC
```
Please check [here](./design/hostpath_localpv_provisioner.md) for complete design and architecture.
## Kubernetes Compatibility Matrix
| | Kubernetes <= 1.18 | Kubernetes >=1.19 |
|----------|--------------------|-------------------|
| `v4.0.x` | ✕ | ✓ |
| `v4.1.x` | ✕ | ✓ |
| `v4.2.x` | ✕ | ✓ |
| `HEAD` | ✕ | ✓ |
## Documents
- [Prerequisites](./docs/quickstart.md#prerequisites)
- [Quickstart](./docs/quickstart.md#quickstart)
- [Developer Setup](./docs/developer.md)
- [Testing](./docs/developer-setup.md#testing)
- [Contibuting Guidelines](./CONTRIBUTING.md)
- [Governance](./GOVERNANCE.md)
- [Changelog](./CHANGELOG.md)
- [Release Process](./RELEASE.md)
## Features
- [x] Access Modes
- [x] ReadWriteOnce
- ~~ReadOnlyMany~~
- ~~ReadWriteMany~~
- [x] Volume modes
- [x] `Filesystem` mode
- [ ] `Block` mode
- [x] [Volume Resize(Via Quotas)](./docs/tutorials/hostpath/xfs_quota/)
## Inspiration/Credit
OpenEBS Local PV has been inspired by the prior work done by the following the Kubernetes projects:
-
-
-
## Dev Activity dashboard

## License Compliance
[](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fopenebs%2Fdynamic-localpv-provisioner?ref=badge_large&issueType=license)
## OpenEBS is a [CNCF Sandbox Project](https://www.cncf.io/projects/openebs)
