Topolvm-Operator is an open source cloud-native local storage orchestrator for Kubernetes, which bases on topolvm.
- Kubernetes: 1.20, 1.19
- Node OS: Linux with LVM2
- Filesystems: ext4, xfs
The CSIStorageCapacity feature gate should be turned on
- Orchestrate topolvm
- Prepare volume group
- Volume group dynamic expand
- Perception of storage topology
- Volume capacity limit
- PVC snapshot
- Prometheus metric and alarm
- Auto discover available devices
Topolvm Operator had been shared in operatorhub.io home.
- Raid of volume group
- Manage volume group that user created
operator
: orchestrate topolvm includeTopolvmCluster controller
andConfigMap controller
preparevg
: prepare volume group on each node
A diagram of components and the how they work see below:
Topolvm-operator
watch theTopolvmCluster
(CRD)Topolvm-operator
watch theoperator-setting ConfigMap
Topolvm-operator
startdiscover devices Daemonset
Topolvm-operator
startConfigMap controller
to watchlvmd ConfigMap
ifTopolvmCluster
createdTopolvmCluster controller
createpreparevg
Job,Topolvm-controller
Deployment depend onTopolvmCluster
preparevg
Job on specific node check disk that provided inTopolvmCluster
and create volume group, if volume group created successfully and then createlvmd ConfigMap
for the nodeConfigMap controller
finds the newlvmd ConfigMap
then createTopolvm-node
DeploymentTopolvmCluster controller
updateTopolvmCluster
status
docs directory contains documents about installation and specifications
nfs | rook ceph | longhorn | host path | topolvm | |
---|---|---|---|---|---|
filesystem | yes | yes | yes | yes | yes |
filesystem type | nfs | ext4/xfs | driver specific | ext4/xfs | ext4/xfs |
block | no | yes (rbd) | yes | no | yes |
bandwidth | standard | high | high | high | high |
IOPS | standard | standard | standard | high | high |
latency | standard | standard | standard | low | low |
snapshot | no | yes | yes | no | yes |
clone | no | yes | no | no | no |
quota | no | yes | yes | no | yes |
access mod | ReadWriteOnce ReadOnlyMany ReadWriteMany | ReadWriteOnce ReadOnlyMany ReadWriteMany | ReadWriteOnce ReadOnlyMany | ReadWriteOnce | ReadWriteOnce ReadWriteOncePod |
resizing | yes | yes | yes | yes | yes |
data redundancy | Hardware RAID | yes | yes | Hardware RAID | Hardware RAID |
protocol type | nfs | rados | iscsi | fs | lvm |
ease of maintainess | driver specific | high maintainess effort | medium | medium | ops-free |
usage scenarios | general storage | extremly scalability | container attach storage | temporary data | high performance block device for cloudnative applications |
topolvm-operator is based on topolvm, we fork topolvm/topolvm and do some enhancements.
see alauda/topolvm
the enhancements are below:
- remove topolvm-scheduler
- lvmd containerized
- add new feature snapshot
- topolvm-operator alaudapublic/topolvm-operator
- topolvm alaudapublic/topolvm
For filing bugs, suggesting improvements, or requesting new features, please open an issue.