cloud-native local storage management system for stateful workload, low-latency with simplicity
Go
515
428 commits
updated Dec 11, 2024
English | 简体中文
Open-Local is a local disk management system composed of multiple components. With Open-Local, using local storage in Kubernetes will be as simple as centralized storage.
| Feature | Open-Local Version | K8S Version |
|---|---|---|
| Node Disk pooling | v0.1.0+ | 1.18-1.20 |
| Dynamic Provisioning | v0.1.0+ | 1.20-1.22 |
| Volume Expansion | v0.1.0+ | 1.20-1.22 |
| Volume Snapshot | v0.1.0+ | 1.20-1.22 |
| LVM/Block Device/Mountpoints as fs | v0.1.0+ | 1.18-1.20 |
| Raw Block Device(volumeMode: Block) | v0.3.0+ | 1.20-1.22 |
| IO-Throttling | v0.4.0+ | 1.20-1.22 |
| CSI ephemeral volumes | v0.5.0+ | 1.20-1.22 |
| IPv6 Support | v0.5.3+ | 1.20-1.22 |
| SPDK host device | v0.6.0+ | 1.20-1.22 |
| Read-write snapshot | v0.7.0+ | 1.20-1.22 |
┌─────────────────────────────────────────────────────────────────────────────┐
│ Master │
│ ┌───┬───┐ ┌────────────────┐ │
│ │Pod│PVC│ │ API-Server │ │
│ └───┴┬──┘ └────────────────┘ │
│ │ bound ▲ │
│ ▼ │ watch │
│ ┌────┐ ┌───────┴────────┐ │
│ │ PV │ │ Kube-Scheduler │ │
│ └────┘ ┌─┴────────────────┴─┐ │
│ ▲ │ open-local │ │
│ │ │ scheduler-extender │ │
│ │ ┌────►└────────────────────┘◄───┐ │
│ ┌──────────────────┐ │ │ ▲ │ │
│ │ NodeLocalStorage │ │create│ │ │ callback │
│ │ InitConfig │ ┌┴──────┴─────┐ ┌──────┴───────┐ ┌────┴────────┐ │
│ └──────────────────┘ │ External │ │ External │ │ External │ │
│ ▲ │ Provisioner │ │ Resizer │ │ Snapshotter │ │
│ │ watch ├─────────────┤ ├──────────────┤ ├─────────────┤ │
│ ┌─────┴──────┐ ├─────────────┴──┴──────────────┴──┴─────────────┤GRPC│
│ │ open-local │ │ open-local │ │
│ │ controller │ │ CSI ControllerServer │ │
│ └─────┬──────┘ └────────────────────────────────────────────────┘ │
│ │ create │
└──────────┼──────────────────────────────────────────────────────────────────┘
│
┌──────────┼──────────────────────────────────────────────────────────────────┐
│ Worker │ │
│ │ │
│ ▼ ┌───────────┐ │
│ ┌──────────────────┐ │ Kubelet │ │
│ │ NodeLocalStorage │ └─────┬─────┘ │
│ └──────────────────┘ │ GRPC Shared Disks │
│ ▲ ▼ ┌───┐ ┌───┐ │
│ │ ┌────────────────┐ │sdb│ │sdc│ │
│ │ │ open-local │ create volume └───┘ └───┘ │
│ │ │ CSI NodeServer ├───────────────► VolumeGroup │
│ │ └────────────────┘ │
│ │ │
│ │ Exclusive Disks │
│ │ ┌─────────────┐ ┌───┐ │
│ │ update │ open-local │ init device │sdd│ │
│ └────────────────┤ agent ├────────────────► └───┘ │
│ └─────────────┘ Block Device │
│ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Open-Localcontains four types of components:
Open-Local also includes a monitoring dashboard:

Open-Local has been widely used in production environments, and currently used products include:
More details here
Before adopting open-local in production, k8s users usually want to know use cases for open-local.
Please send us PR to update Use Cases with company, use case and since for wider adoption.
Join us from DingTalk: Group No.34118035
Overall
Maintained
Code review
Go module
Latest release
Releases this year
79 followers · starred Feb 2023
513 followers · starred Sep 2021
354 followers · starred Nov 2021
361 followers · starred Mar 2022
cloud-native local storage management system for stateful workload, low-latency with simplicity
Go
515
428 commits
updated Dec 11, 2024
English | 简体中文
Open-Local is a local disk management system composed of multiple components. With Open-Local, using local storage in Kubernetes will be as simple as centralized storage.
| Feature | Open-Local Version | K8S Version |
|---|---|---|
| Node Disk pooling | v0.1.0+ | 1.18-1.20 |
| Dynamic Provisioning | v0.1.0+ | 1.20-1.22 |
| Volume Expansion | v0.1.0+ | 1.20-1.22 |
| Volume Snapshot | v0.1.0+ | 1.20-1.22 |
| LVM/Block Device/Mountpoints as fs | v0.1.0+ | 1.18-1.20 |
| Raw Block Device(volumeMode: Block) | v0.3.0+ | 1.20-1.22 |
| IO-Throttling | v0.4.0+ | 1.20-1.22 |
| CSI ephemeral volumes | v0.5.0+ | 1.20-1.22 |
| IPv6 Support | v0.5.3+ | 1.20-1.22 |
| SPDK host device | v0.6.0+ | 1.20-1.22 |
| Read-write snapshot | v0.7.0+ | 1.20-1.22 |
┌─────────────────────────────────────────────────────────────────────────────┐
│ Master │
│ ┌───┬───┐ ┌────────────────┐ │
│ │Pod│PVC│ │ API-Server │ │
│ └───┴┬──┘ └────────────────┘ │
│ │ bound ▲ │
│ ▼ │ watch │
│ ┌────┐ ┌───────┴────────┐ │
│ │ PV │ │ Kube-Scheduler │ │
│ └────┘ ┌─┴────────────────┴─┐ │
│ ▲ │ open-local │ │
│ │ │ scheduler-extender │ │
│ │ ┌────►└────────────────────┘◄───┐ │
│ ┌──────────────────┐ │ │ ▲ │ │
│ │ NodeLocalStorage │ │create│ │ │ callback │
│ │ InitConfig │ ┌┴──────┴─────┐ ┌──────┴───────┐ ┌────┴────────┐ │
│ └──────────────────┘ │ External │ │ External │ │ External │ │
│ ▲ │ Provisioner │ │ Resizer │ │ Snapshotter │ │
│ │ watch ├─────────────┤ ├──────────────┤ ├─────────────┤ │
│ ┌─────┴──────┐ ├─────────────┴──┴──────────────┴──┴─────────────┤GRPC│
│ │ open-local │ │ open-local │ │
│ │ controller │ │ CSI ControllerServer │ │
│ └─────┬──────┘ └────────────────────────────────────────────────┘ │
│ │ create │
└──────────┼──────────────────────────────────────────────────────────────────┘
│
┌──────────┼──────────────────────────────────────────────────────────────────┐
│ Worker │ │
│ │ │
│ ▼ ┌───────────┐ │
│ ┌──────────────────┐ │ Kubelet │ │
│ │ NodeLocalStorage │ └─────┬─────┘ │
│ └──────────────────┘ │ GRPC Shared Disks │
│ ▲ ▼ ┌───┐ ┌───┐ │
│ │ ┌────────────────┐ │sdb│ │sdc│ │
│ │ │ open-local │ create volume └───┘ └───┘ │
│ │ │ CSI NodeServer ├───────────────► VolumeGroup │
│ │ └────────────────┘ │
│ │ │
│ │ Exclusive Disks │
│ │ ┌─────────────┐ ┌───┐ │
│ │ update │ open-local │ init device │sdd│ │
│ └────────────────┤ agent ├────────────────► └───┘ │
│ └─────────────┘ Block Device │
│ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Open-Localcontains four types of components:
Open-Local also includes a monitoring dashboard:

Open-Local has been widely used in production environments, and currently used products include:
More details here
Before adopting open-local in production, k8s users usually want to know use cases for open-local.
Please send us PR to update Use Cases with company, use case and since for wider adoption.
Join us from DingTalk: Group No.34118035
Overall
Maintained
Code review
Go module
Latest release
Releases this year
79 followers · starred Feb 2023
513 followers · starred Sep 2021
354 followers · starred Nov 2021
361 followers · starred Mar 2022