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: Initial Development
- Kubernetes
- 1.14+
- Node OS
- CoreOS Container Linux
- Other Linux distributions should work but not tested
- 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 Expansion: Once Kubernetes support for volume expansion for CSI matures to beta, we will implement it.
- Snapshot: When we want it.
This repository contains these programs:
csi-topolvm
: Unified CSI driver.lvmd
: gRPC service to manage LVM volumeslvmetrics
: A DaemonSet sidecar container to expose storage metrics as Node annotationstopolvm-scheduler
: A scheduler extender for TopoLVMtopolvm-node
: A sidecar to communicate with CSI controller over TopoLVM custom resources.topolvm-hook
: A MutatingAdmissionWebhook fortopolvm-scheduler
.
lvmd
is a standalone program that should run on Node OS as a systemd service.
Other programs are packaged into container images.
docs directory contains documents about designs and specifications.