Introduction
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 22 May 2023 at commit 995c3e2dc8e299fbdb8731f447893906b966a4e4.
TopoLS
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
Supported environments
- Kubernetes: 1.26, 1.25, 1.24
- Node OS: Linux
- Filesystems: btrfs
Features
- 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.
Programs
This repository contains these programs:
topols-controller
: CSI controller service.topols-scheduler
: A scheduler extender for TopoLS.topols-node
: CSI node service.
Getting started
For production deployments, see deploy/README.md.
Docker images
Docker images are available on ghcr.io
:
topols,
topols-with-sidecar.