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.
- 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.
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 for complete design and architecture.
Kubernetes <= 1.18 | Kubernetes >=1.19 | |
---|---|---|
v4.0.x |
✕ | ✓ |
v4.1.x |
✕ | ✓ |
v4.2.x |
✕ | ✓ |
HEAD |
✕ | ✓ |
- Prerequisites
- Quickstart
- Developer Setup
- Testing
- Contibuting Guidelines
- Governance
- Changelog
- Release Process
- Access Modes
- ReadWriteOnce
ReadOnlyManyReadWriteMany
- Volume modes
-
Filesystem
mode -
Block
mode
-
- Volume Resize(Via Quotas)
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/HEAD/examples/hostpath-provisioner
- https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner
- https://github.com/rancher/local-path-provisioner