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.5.0
Our supported platform are:
- Kubernetes: 1.27, 1.26, 1.25
- Node OS: Linux with LVM2 (*1)
- Filesystems: ext4, xfs, btrfs(experimental)
- lvm version 2.02.163 or later (adds JSON output support)
*1 The host's Linux Kernel must be v4.9 or later which supports rmapbt
and reflink
, if you use xfs filesystem with an official docker image.
Docker images are available on ghcr.io.
A demonstration of TopoLVM running on kind (Kubernetes IN Docker) is available at example directory.
For production deployments, see deploy/README.md.
User manual is at docs/user-manual.md.
Deprecated: If you want to use TopoLVM on Rancher/RKE, see docs/deprecated/rancher.md.
TopoLVM project welcomes contributions from any member of our community. To get started contributing, please see our Contributing Guide.
- 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 exists.
- 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: Volumes can be expanded by editing
PersistentVolumeClaim
objects. - Storage capacity tracking: You can enable Storage Capacity Tracking mode instead of using topolvm-scheduler.
- Snapshot: When we want it.
- Pod security policy support is deprecated and will be removed when TopoLVM removes the support of Kubernetes < v1.25. This policy is same as Kubernetes.
If you have any questions or ideas, please use discussions.
docs directory contains the user manual, designs and specifications, and so on.
A diagram of components is available in docs/design.md.
TopoLVM maintainers presented the motivation and implementation of TopoLVM at KubeCon Europe 2020: https://kccnceu20.sched.com/event/ZerD
This project is licensed under Apache License 2.0.