TopoLVM is a CSI plugin using LVM for Kubernetes. It can be considered as a specific implementation of local persistent volumes using CSI and LVM.
- Project Status: Testing for production
- Conformed CSI version: 1.1.0
- Kubernetes
- 1.14
- 1.15
- 1.16
- Node OS
- Linux with LVM2
- Filesystems
- ext4
- xfs
- btrfs
- Dynamic provisioning: Volumes are created dynamically when
PersistentVolumeClaim
objects are created. - Raw block volume: Volumes are available as block devices inside containers.
- Topology: TopoLVM uses CSI topology feature to schedule Pod to Node where LVM volume exist.
- Extended scheduler: TopoLVM extends the general Pod scheduler to prioritize Nodes having larger storage capacity.
- Volume metrics: Usage stats are exported as Prometheus metrics from
kubelet
.
- Volume Expansion: When support for Kubernetes 1.16 will be added.
- Snapshot: When we want it.
A diagram of components is available in docs/design.md.
This repository contains these programs:
topolvm-controller
: CSI controller service.topolvm-scheduler
: A scheduler extender for TopoLVM.topolvm-node
: CSI node service.lvmd
: gRPC service to manage LVM volumes.
lvmd
is a standalone program that should be run on Node OS as a systemd service.
Other programs are packaged into a container image.
A demonstration of TopoLVM running on kind (Kubernetes IN Docker) is available at example directory.
For production deployments, see deploy directory.
User manual is at docs/user-manual.md.
docs directory contains documents about designs and specifications.