Skip to content

Dynamically deploy Stateful Persistent Node-Local Volumes & Filesystems for Kubernetes that is provisioned from simple local filesystem storage.

License

Notifications You must be signed in to change notification settings

openebs/dynamic-localpv-provisioner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OpenEBS Dynamic LocalPV Provisioner

CNCF Status LICENSE Slack Community Meetings Go Report Card FOSSA Status OpenSSF Best Practices CLOMonitor Artifact HUB

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

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

Loading

Please check here 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

Features

Inspiration/Credit

OpenEBS Local PV has been inspired by the prior work done by the following the Kubernetes projects:

Dev Activity dashboard

Alt

License Compliance

FOSSA Status

OpenEBS is a CNCF Sandbox Project