TopoLS is fork of TopoLVM project. TopoLS goal is the same as TopoLVM - provisioning of local storage, but TopoLS uses btrfs quotas instead of lvm2. TopoLS runs in separate namespace and can be installed alongside with TopoLVM.
TopoLS code is ready for testing, but documentation is not yet finished (even touched), so please wait for corrected docs.
Last synced to TopoLVM code on 18 Mar 2024 at commit 44099e06250795cce5c6c18ac9b577fb04d01e29.
TopoLS is a CSI plugin using btrfs quotas 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.6.0
- Kubernetes: 1.29, 1.28, 1.27
- Node OS: Linux
- Filesystems: btrfs
- Dynamic provisioning: Volumes are created dynamically when
PersistentVolumeClaim
objects are created. - Topology: TopoLS uses CSI topology feature to schedule Pod to Node where free space on btrfs volume exists.
- Extended scheduler: TopoLS 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 topols-scheduler.
This repository contains these programs:
topols-controller
: CSI controller service.topols-scheduler
: A scheduler extender for TopoLS.topols-node
: CSI node service.
For production deployments, see deploy/README.md.
Docker images are available on ghcr.io
:
topols,
topols-with-sidecar.