topols

package module
v0.39.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

README

Main

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 18 Mar 2024 at commit 44099e06250795cce5c6c18ac9b577fb04d01e29.

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.34, 1.33, 1.32
  • 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.

Documentation

Index

Constants

View Source
const CapacityKeyPrefix = "capacity.topols.kvaster.com/"

CapacityKeyPrefix is the key prefix of Node annotation that represents VG free space.

View Source
const CapacityResource = corev1.ResourceName("topols.kvaster.com/capacity")

CapacityResource is the resource name of topols capacity.

View Source
const CreatedbyLabelKey = "app.kubernetes.io/created-by"

Label key that indicates The controller/user who created this resource https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/#labels

View Source
const CreatedbyLabelValue = "topols-controller"

Label value that indicates The controller/user who created this resource

View Source
const DefaultCSISocket = "/run/topols/csi-topols.sock"

DefaultCSISocket is the default path of the CSI socket file.

View Source
const DefaultDeviceClassAnnotationName = "00default"

DefaultDeviceClassAnnotationName is the part of annotation name for the default device-class.

View Source
const DefaultDeviceClassKey = "topols.kvaster.com/default-device-class"

DefaultDeviceClassKey is the key that represents default device class on Node

View Source
const DefaultDeviceClassName = ""

DefaultDeviceClassName is the name for the default device-class.

View Source
const DefaultSize = DefaultSizeGb << 30

DefaultSize is DefaultSizeGb in bytes

View Source
const DefaultSizeGb = 1

DefaultSizeGb is the default size in GiB for volumes (PVC or generic ephemeral volumes) w/o capacity requests.

View Source
const DeviceClassKey = "topols.kvaster.com/device-class"

DeviceClassKey is the key used in CSI volume create requests to specify a device-class.

View Source
const LVPendingDeletionKey = "topols.kvaster.com/pendingdeletion"

GetPendingDeletionKey returns the name of the pending-deletion annotation

View Source
const LogicalVolumeFinalizer = "topols.kvaster.com/logicalvolume"

LogicalVolumeFinalizer is the name of LogicalVolume finalizer

View Source
const NoCowKey = "topols.kvaster.com/no-cow"

NoCowKey is the key used in CSI volume create requests to specify no-cow property of filesystem

View Source
const NodeFinalizer = "topols.kvaster.com/node"

NodeFinalizer is the name of Node finalizer of TopoLS

View Source
const PVCFinalizer = "topols.kvaster.com/pvc"

PVCFinalizer is the name of PVC finalizer of TopoLS

View Source
const PluginName = "topols.kvaster.com"

PluginName is the name of the CSI plugin.

View Source
const ResizeRequestedAtKey = "topols.kvaster.com/resize-requested-at"

ResizeRequestedAtKey is the key of LogicalVolume that represents the timestamp of the resize request.

View Source
const TopologyNodeKey = "topology.topols.kvaster.com/node"

TopologyNodeKey is the key of topology that represents node name.

Variables

View Source
var (
	// Version is the topols version, this value will be injected on building.
	Version = "devel"
)

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
api
v1
Package v1 contains API Schema definitions for the topols v1 API group +kubebuilder:object:generate=true +groupName=topols.kvaster.com
Package v1 contains API Schema definitions for the topols v1 API group +kubebuilder:object:generate=true +groupName=topols.kvaster.com
cmd
hypertopols command
topols-node command
internal
pkg
lsm

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL