Skip to content
Capacity-aware CSI plugin for Kubernetes
Go Makefile Dockerfile
Branch: master
Clone or download
Latest commit c56fe98 Nov 6, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci update golang to v1.13.4 Nov 6, 2019
.github/ISSUE_TEMPLATE Enhance issue template Jun 6, 2019
api/v1 Merge topolvm-hook into topolvm-controller Oct 1, 2019
config Remove auto-generated sample manifest Oct 3, 2019
controllers
csi Split CSI driver implementation Jul 6, 2019
deploy Bump version to 0.2.0 Oct 8, 2019
docs docs: fix table formatting. Oct 17, 2019
driver Implement NodeGetVolumeStats RPC Oct 7, 2019
e2e Address review comments Oct 8, 2019
example
filesystem filesystem: make Unmount robust further Oct 7, 2019
hack Merge topolvm-hook into topolvm-controller Oct 1, 2019
hook Merge topolvm-hook into topolvm-controller Oct 1, 2019
lvmd lvmd: fix a bug that causes test failures Sep 9, 2019
pkg topolvm-node: merge lvmetrics functions Oct 8, 2019
runners Test object deletion by testing DeletionTimestamp not nil Oct 11, 2019
scheduler
vendor Update controller-runtime to v0.3.0 Oct 11, 2019
.dockerignore Move building csi sidecar binaries to release container image Jun 20, 2019
.gitignore End-to-end test on kind (#11) Jul 5, 2019
CHANGELOG.md
Dockerfile topolvm-node: merge lvmetrics functions Oct 8, 2019
LICENSE Fix typo in LICENSE Jun 16, 2019
Makefile Add livenessprobe to manifests Oct 6, 2019
PROJECT Merge topolvm-hook into topolvm-controller Oct 1, 2019
README.md Update documents to merge lvmetrics into topolvm-node Oct 7, 2019
RELEASE.md Bump version to 0.2.0 Oct 8, 2019
constants.go Divide and merge csi-topolvm Oct 1, 2019
csi.proto Generate protobuf Apr 26, 2019
go.mod Update controller-runtime to v0.3.0 Oct 11, 2019
tools_test.go
version.go Bump version to 0.2.0 Oct 8, 2019

README.md

GitHub release CircleCI GoDoc Go Report Card Docker Repository on Quay

TopoLVM

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.1.0

Supported environments

  • Kubernetes
    • 1.14
    • 1.15
  • Node OS
    • Linux with LVM2
  • Filesystems
    • ext4
    • xfs
    • btrfs

Features

  • 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 metrics: Usage stats are exported as Prometheus metrics from kubelet.

Planned features

Programs

A diagram of components is available in docs/design.md.

This repository contains these programs:

  • topolvm-controller: CSI controller service.
  • topolvm-scheduler: A scheduler extender for TopoLVM.
  • topolvm-node: CSI node service.
  • lvmd: gRPC service to manage LVM volumes.

lvmd is a standalone program that should be run on Node OS as a systemd service. Other programs are packaged into a container image.

Getting started

A demonstration of TopoLVM running on kind (Kubernetes IN Docker) is available at example directory.

For production deployments, see deploy directory.

User manual is at docs/user-manual.md.

Documentation

docs directory contains documents about designs and specifications.

You can’t perform that action at this time.