The module lifecycle stage: General Availability
The module has requirements for installation
The module is guaranteed to work only with stock kernels that are shipped with the supported distributions.
The module may work with other kernels or distributions, but its stable operation and availability of all features is not guaranteed.
The Deckhouse Kubernetes Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.
BlockDevice
Scope: Cluster
Version: v1alpha1
The resource displays up-to-date information about available block devices on nodes that can be used by the sds-node-configurator controller for LVM operations.
The resource is created and managed by the controller only. Manual modification of the resource is prohibited.
-
objectstatus
-
stringstatus.actualVGNameOnTheNode
The actual name of the LVM Volume Group the device is included in.
Optional: exists if only the device is used as a Physical Volume and is included in a Volume Group.
-
booleanstatus.consumable
Required value
The flag that defines whether this device can be used by the controller to create an LVM Physical Volume. -
stringstatus.fsTypeThe device’s file system type.
Allowed values:
LVM2_member,‘’ -
booleanstatus.hotPlug
Required value
Device connection type. Can be:
true: If the device has been hot-plugged;false: Otherwise.
-
stringstatus.lvmVolumeGroupName
The LVMVolumeGroup resource name.
Optional: exists only if the device is used as a Physical Volume, is included in a Volume Group, and is specified in an LVMVolumeGroup resource.
-
stringstatus.machineId
Required value
Unique identifier of the machine the device is on (normally at/etc/machine-id). -
stringstatus.model
Device model.
Optional: might not exist if the manufacturer does not provide this information for the given type of disks.
-
stringstatus.nodeName
Required value
The name of the Kubernetes node the device is on. -
stringstatus.partUUID
The UUID of the partition.
Optional: exists only if the device is a partition.
-
stringstatus.path
Required value
The device path on the node (/dev/sda). -
stringstatus.pvUUID
The LVM Physical Volume UUID.
Optional: exists only if the device is used as a LVM Physical Volume.
-
booleanstatus.rota
Required value
Device disk type. Can be:
true: For HDD;false: For SSD.
-
stringstatus.serialThe device unique serial number.
-
stringstatus.size
Required value
The device size. -
stringstatus.type
Required value
The device’s type (disk, partition, RAID, and others). -
stringstatus.vgUUID
The UUID of the LVM Volume Group to which this device belongs as a Physical Volume.
Optional: exists only if the device is used as a Physical Volume and is included in a Volume Group.
-
stringstatus.wwn
The device unique wwn (World Wide Name) identifier.
Optional: might not exist if WWN is not supported for this type of disk by the manufacturer.
-
LVMLogicalVolume
Scope: Cluster
Version: v1alpha1
-
objectspec
-
stringspec.actualLVNameOnTheNode
Required value
Logical Volume name on the node.Minimal length:
1Pattern:
^[a-z0-9]([a-z0-9-.]{0,251}[a-z0-9])?$ -
stringspec.lvmVolumeGroupName
Required value
Name of a LVMVolumeGroup resource whose Volume Group will be used for Logical Volume creation.Minimal length:
1Pattern:
^[a-z0-9]([a-z0-9-.]{0,251}[a-z0-9])?$ -
integer or stringspec.size
Required value
Desired Logical Volume size. It can be specified as a numerical value or percentage of the total Volume Group or thin pool space. For thin pools, the total space is calculated as the actual thin pool size multiplied by the
allocationLimitvalue.Note that if you specify a percentage, the Logical Volume will be automatically extended when Volume Group, thin pool, or thin pool’s
allocationLimitvalue is increased.Minimal length:
1Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100% -
objectspec.sourceSource of the volume, if present.
-
stringspec.source.kind
Required value
Kind of the source. LVMLogicalVolume kind means that the current resource is a clone. LVMLogicalVolumeSnapshot kind means that the current resource is a restored volume.Allowed values:
LVMLogicalVolume,LVMLogicalVolumeSnapshot -
stringspec.source.name
Required value
Name of the resource from which the current resource is created.Minimal length:
1
-
-
objectspec.thick
-
booleanspec.thick.contiguous
If set to
true, the logical volume will be created with thecontiguousattribute.Use this attribute carefully, as it may prevent from Logical Volume creation even if there is enough space for it.
-
-
objectspec.thinDefines the used thin pool. Specified only for Thin Logical Volume.
-
stringspec.thin.poolName
Required value
Name of the used thin pool.Minimal length:
1Pattern:
^.*$
-
-
stringspec.type
Required value
Logical Volume type.Allowed values:
Thick,Thin -
stringspec.volumeCleanup
Volume cleanup method after the PV is deleted. If this parameter is not set, there’s no guarantee that the data will be completely deleted.
Allowed values:
RandomFillSinglePass: Volume will be overwritten with random data once before deletion. This option is not recommended for solid-state drives (SSDs), as overwriting reduces the drive’s lifespan. For thin volumes, only the space in use at the moment of volume deletion will be overwritten.RandomFillThreePass: Volume will be overwritten with random data three times before deletion. This option is also not recommended for SSDs, as overwriting reduces the drive’s lifespan. For thin volumes, only the space in use at the moment of volume deletion will be overwritten.Discard: Before deletion, all blocks of the volume will be marked as free using thediscardsystem call. This option is applicable only to SSDs and thick volumes.
Allowed values:
RandomFillThreePass,RandomFillSinglePass,Discard
-
-
objectstatusDescribes the resource status.
-
stringstatus.actualSizeActual Logical Volume size on the node.
-
booleanstatus.contiguousShows if the created Logical Volume has the
contiguousattribute. -
stringstatus.phaseCurrent resource’s phase.
Allowed values:
Created,Pending,Cleaning,Resizing,Failed -
stringstatus.reasonReason of the phase.
-
LVMLogicalVolumeSnapshot
Scope: Cluster
Version: v1alpha1
-
objectspec
-
stringspec.actualSnapshotNameOnTheNodeName of the volume snapshot.
Minimal length:
1 -
stringspec.lvmLogicalVolumeName
Required value
Name of the snapshotted LLV resource.Minimal length:
1
-
-
objectstatusDescribes the resource status.
-
stringstatus.actualLVNameOnTheNodeName of the volume the snapshot is created from.
-
stringstatus.actualVGNameOnTheNodeName of the Volume Group, where the snapshot resides in.
-
stringstatus.nodeNameName of the Kubernetes node the snapshot resides in.
-
stringstatus.phase
Current resource’s phase.
Possible values:
Created: Snapshot was created successfully.Pending: Snapshot is being created.Failed: An error occurred while creating the snapshot.
Allowed values:
Created,Pending,Failed -
stringstatus.reasonReason of the phase.
-
stringstatus.sizeSnapshotted Logical Volume size on the node.
-
stringstatus.usedSizeSnapshot Logical Volume size on the node.
-
LVMVolumeGroup
Scope: Cluster
Version: v1alpha1
An interface for managing Volume Groups and Thin pools on the nodes.
These resources might be created both by a user and the
sds-node-configuratorcontroller.sds-node-configuratorcontroller will automatically create an LVMVolumeGroup resource if it detects an existing Volume Group on a node tagged with ‘storage.deckhouse.io/enabled=true’. Controller will fill in both the ‘spec’ and ‘status’ fields.spec.thinPoolsfield must be filled in by yourself.
-
objectspec
-
stringspec.actualVGNameOnTheNode
Required value
Desired name of a Volume Group. Must be unique for the node it is on.
This field is immutable.
-
objectspec.blockDeviceSelector
Required value
Desired block device selector.
Note: Selected block devices must belong to the same node for a volume group of type ‘Local’.
-
array of objectsspec.blockDeviceSelector.matchExpressionsDesired block device selector expressions.
-
stringspec.blockDeviceSelector.matchExpressions.keyLabel key to check.
-
stringspec.blockDeviceSelector.matchExpressions.operatorOperator used to compare values.
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.blockDeviceSelector.matchExpressions.valuesArray of values to compare. Required if the operator is
InorNotIn.
-
-
objectspec.blockDeviceSelector.matchLabelsDesired block device selector labels.
-
-
objectspec.localDesired configuration for a local Volume Group.
-
stringspec.local.nodeName
Required value
Desired node for the LVM Volume Group.
This field is immutable.
-
-
array of objectsspec.thinPoolsDesired thin pool configuration.
-
stringspec.thinPools.allocationLimitThin pool oversize limit.
Default:
150%Pattern:
^[1-9][0-9]{2,3}%$ -
stringspec.thinPools.name
Desired thin pool name.
This field is immutable.
-
integer or stringspec.thinPools.size
Desired thin pool size. Might be specified as number or percent size of total Volume Group space.
Note, that if you specify the percent size, the thin pool will be automatically extended when Volume Group is extended.
Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100%
-
-
stringspec.type
Required value
Type of a Volume Group.
Possible values:
Local: Local volume group; the devices used are not distributed (not Shared LUN).
Allowed values:
Local
-
-
objectstatus
-
stringstatus.allocatedSizeAmount of space currently occupied on the Volume Group.
-
array of objectsstatus.conditionsLVMVolumeGroup conditions.
-
stringstatus.conditions.lastTransitionTimeTime the condition was updated.
-
stringstatus.conditions.messageInformation about the current status.
-
integerstatus.conditions.observedGenerationResource version when the condition was applied.
-
stringstatus.conditions.reasonReason for the current status.
-
stringstatus.conditions.statusCondition status.
-
stringstatus.conditions.typeCondition type.
Allowed values:
VGConfigurationApplied,VGReady,NodeReady,AgentReady,Ready
-
-
stringstatus.configurationAppliedIndicates if the last configuration has been successfully applied.
-
array of objectsstatus.nodesInformation about the nodes the Volume Group is on.
-
array of objectsstatus.nodes.devicesInformation about the devices used in the Volume Group on the current node.
-
stringstatus.nodes.devices.blockDeviceName of the corresponding block device resource.
-
stringstatus.nodes.devices.devSizeBlock device size.
-
stringstatus.nodes.devices.pathDevice path on the node (e.g.,
/dev/sda). -
stringstatus.nodes.devices.pvSizePhysical Volume size.
-
stringstatus.nodes.devices.pvUUIDLVM Physical Volume UUID.
-
-
stringstatus.nodes.nameNode name.
-
-
stringstatus.phaseGeneral LVMVolumeGroup condition.
Allowed values:
Pending,Ready,NotReady,Terminating,‘’ -
stringstatus.thinPoolReadyShows the number of healthy and total thin pools.
-
array of objectsstatus.thinPools
Current state of the Volume Group’s thin pools.
Might be empty if there are no thin pools in the Volume Group.
-
stringstatus.thinPools.actualSizeThin pool capacity.
-
stringstatus.thinPools.allocatedSizeTotal requested size of logical volumes in the thin pool.
-
stringstatus.thinPools.allocationLimitThin pool oversize limit.
Default:
150%Pattern:
^[1-9][0-9]{2,3}%$ -
stringstatus.thinPools.availableSpaceThin pool free space available.
-
stringstatus.thinPools.messageInformation about the status.
-
stringstatus.thinPools.nameThin pool name.
-
booleanstatus.thinPools.readyThin pool health status.
-
stringstatus.thinPools.usedSizeThin pool used size.
-
-
stringstatus.vgFreeVolume Group free space.
-
stringstatus.vgSizeVolume Group capacity.
-
stringstatus.vgUUIDVolume Group UUID.
-
LvmVolumeGroupBackup
Scope: Cluster
Version: v1alpha1
-
objectspec
-
stringspec.actualVGNameOnTheNode
Required value
Desired name of a Volume Group. Must be unique for the node it is on.
This field is immutable.
-
array of stringsspec.blockDeviceNames
Required value
An array of block device resource names to create a Volume Group.
Note that the selected block devices must belong to the same node for a Local Volume Group.
-
array of objectsspec.thinPoolsDesired thin pool configuration.
-
stringspec.thinPools.allocationLimitThin pool oversize limit.
Default:
150%Pattern:
^[1-9][0-9]{2,3}%$ -
stringspec.thinPools.name
Desired thin pool name.
This field is immutable.
-
integer or stringspec.thinPools.size
Desired thin pool size. Might be specified as number or percent size of total Volume Group space.
Note, that if you specify the percent size, the thin pool will be automatically extended when Volume Group is extended.
Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100%
-
-
stringspec.type
Required value
Type of a Volume Group.
Possible values:
Local: Local volume group; the devices used are not distributed (not Shared LUN).
Allowed values:
Local
-
-
objectstatus
-
stringstatus.allocatedSizeAmount of space currently occupied on the Volume Group.
-
array of objectsstatus.conditionsLVMVolumeGroup conditions.
-
stringstatus.conditions.lastTransitionTimeTime the condition was updated.
-
stringstatus.conditions.messageInformation about the current status.
-
integerstatus.conditions.observedGenerationResource version when the condition was applied.
-
stringstatus.conditions.reasonReason for the current status.
-
stringstatus.conditions.statusCondition status.
-
stringstatus.conditions.typeCondition type.
Allowed values:
VGConfigurationApplied,VGReady,NodeReady,AgentReady,Ready
-
-
stringstatus.configurationAppliedIndicates if the last configuration has been successfully applied.
-
array of objectsstatus.nodesInformation about the nodes the Volume Group is on.
-
array of objectsstatus.nodes.devicesInformation about the devices used in the Volume Group on the current node.
-
stringstatus.nodes.devices.blockDeviceName of the corresponding block device resource.
-
stringstatus.nodes.devices.devSizeBlock device size.
-
stringstatus.nodes.devices.pathDevice path on the node (e.g.,
/dev/sda). -
stringstatus.nodes.devices.pvSizePhysical Volume size.
-
stringstatus.nodes.devices.pvUUIDLVM Physical Volume UUID.
-
-
stringstatus.nodes.nameNode name.
-
-
stringstatus.phaseGeneral LVMVolumeGroup condition.
Allowed values:
Pending,Ready,NotReady,Terminating,‘’ -
stringstatus.thinPoolReadyShows the number of healthy and total thin pools.
-
array of objectsstatus.thinPools
Current state of the Volume Group’s thin pools.
Might be empty if there are no thin pools in the Volume Group.
-
stringstatus.thinPools.actualSizeThin pool capacity.
-
stringstatus.thinPools.allocatedSizeTotal requested size of logical volumes in the thin pool.
-
stringstatus.thinPools.allocationLimitThin pool oversize limit.
Default:
150%Pattern:
^[1-9][0-9]{2,3}%$ -
stringstatus.thinPools.availableSpaceThin pool free space available.
-
stringstatus.thinPools.messageInformation about the status.
-
stringstatus.thinPools.nameThin pool name.
-
booleanstatus.thinPools.readyThin pool health status.
-
stringstatus.thinPools.usedSizeThin pool used size.
-
-
stringstatus.vgFreeVolume Group free space.
-
stringstatus.vgSizeVolume Group capacity.
-
stringstatus.vgUUIDVolume Group UUID.
-
LVMVolumeGroupSet
Scope: Cluster
Version: v1alpha1
-
objectspec
-
objectspec.lvmVolumeGroupTemplate
Required value
Common template for LVMVolumeGroup resources provided by the set.-
stringspec.lvmVolumeGroupTemplate.actualVGNameOnTheNode
Required value
Desired name of a Volume Group in LVMVolumeGroups. Must be unique for the node it is on.
This field is immutable. Note that this Volume Group name will be common for every LVMVolumeGroup created by the set.
-
objectspec.lvmVolumeGroupTemplate.blockDeviceSelector
Required value
BlockDevice resources selector used in LVMVolumeGroups configurations.-
array of objectsspec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressionsExpressions for the block device selector.
-
stringspec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.keyLabel key to check.
-
stringspec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.operatorOperator for comparing values.
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.valuesAn array of values to compare. Required if the operator is
InorNotIn.
-
-
objectspec.lvmVolumeGroupTemplate.blockDeviceSelector.matchLabelsLabels for the block device selector.
-
-
objectspec.lvmVolumeGroupTemplate.metadataMetadata of LVMVolumeGroup resources.
-
objectspec.lvmVolumeGroupTemplate.metadata.labelsRequired labels for LVMVolumeGroup resources.
-
-
array of objectsspec.lvmVolumeGroupTemplate.thinPools
Desired thin pool configuration in LVMVolumeGroups.
Note that the configuration will be common for every LVMVolumeGroup created by the set.
-
stringspec.lvmVolumeGroupTemplate.thinPools.allocationLimitThin pool oversize limit.
Default:
150%Pattern:
^[1-9][0-9]{2,3}%$ -
stringspec.lvmVolumeGroupTemplate.thinPools.name
Desired thin pool name.
This field is immutable.
-
integer or stringspec.lvmVolumeGroupTemplate.thinPools.size
Desired thin pool size. Might be specified as a number or percentage of total Volume Group space.
Note that if you specify the percent size, the thin pool will be automatically extended when Volume Group is extended.
Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100%
-
-
stringspec.lvmVolumeGroupTemplate.type
Required value
Type of a VolumeGroup in LVMVolumeGroups.
Possible values:
Local: Local volume group; the devices used are not distributed (not Shared LUN).
Allowed values:
Local
-
-
objectspec.nodeSelector
Required value
Node selector for nodes that will be used by LVMVolumeGroups.-
array of objectsspec.nodeSelector.matchExpressionsExpressions for the node selector.
-
stringspec.nodeSelector.matchExpressions.keyLabel key to check.
-
stringspec.nodeSelector.matchExpressions.operatorOperator for comparing values.
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.nodeSelector.matchExpressions.valuesAn array of values to compare. Required if the operator is
InorNotIn.
-
-
objectspec.nodeSelector.matchLabelsLabels for the node selector.
-
-
stringspec.strategy
Required value
Strategy (rule) to provide LVMVolumeGroup resources by the set.Allowed values:
PerNode
-
-
objectstatus
-
array of objectsstatus.createdLVMVolumeGroupsBrief information about LVMVolumeGroups created by the set.
-
stringstatus.createdLVMVolumeGroups.lvmVolumeGroupNameName of the created LVMVolumeGroup resource.
-
stringstatus.createdLVMVolumeGroups.nodeNameName of the node where the LVMVolumeGroup resource was created.
-
-
integerstatus.currentLVMVolumeGroupsCountCurrent number of LVMVolumeGroups created by the set.
-
integerstatus.desiredLVMVolumeGroupsCountDesired number of LVMVolumeGroups that should be created by the set.
-
stringstatus.phaseLVMVolumeGroups creation phase.
Allowed values:
Created,Pending,NotCreated,‘’ -
stringstatus.reasonReason for the current phase.
-