Available with limitations in: Open/CE
Available without limitations in: SE, SE+, Ultimate/EE
Included in extensions: Core Storage
The module lifecycle stage: Preview
The module has requirements for installation
The module is only guaranteed to work if the system requirements are met. As for any other configurations, the module may work, but its smooth operation is not guaranteed.
Requirements
To the Kubernetes version: 1.31 and above.
To the Deckhouse Platform version: 1.72 and above.
To the versions of other modules:
-
sds-node-configurator: 0.6.1 and above.
Conversions
The module is configured using the ModuleConfig resource, the schema of which contains a version number. When you apply an old version of the ModuleConfig schema in a cluster, automatic transformations are performed. To manually update the ModuleConfig schema version, the following steps must be completed sequentially for each version:
-
Updates from version 1 to 2:
Need to remove the
.enableThinProvisioningparameter.
Parameters
Schema version: 2
-
-
objectsettings.backupModule backup settings
-
booleansettings.backup.enabledModule backup state
Default:
true -
integersettings.backup.retentionCountNumber of backups to keep
Default:
7 -
stringsettings.backup.scheduleBackup schedule
Default:
0 3 * * *
-
-
objectsettings.dataNodesSettings for Linstor on nodes with data
Default:
{}-
objectsettings.dataNodes.nodeSelector
The same as the Pod
spec.nodeSelectorparameter in Kubernetes.Nodes that match the selector get the
storage.deckhouse.io/sds-replicated-volume-node: ""label. Module components, including the LINSTOR satellite and the CSI node, run on nodes with this label.The default value
kubernetes.io/os: linuxselects all Linux nodes. A custom value replaces the default one and is not merged with it.Caution! Set this parameter when enabling the module. If you change it later, including disabling the module and enabling it again with a different selector, the nodes that have already been selected keep the
storage.deckhouse.io/sds-replicated-volume-*labels and module components keep running on them. The labels are not removed and the data is not moved to other nodes.To remove the module from such a node, follow the FAQ section Example of removing resources from a node without removing the node itself, then remove the labels from the node manually.
Default:
{ "kubernetes.io/os": "linux" }
-
-
objectsettings.drbdPortRangeSettings for DRBD TCP ports
Default:
{}-
integersettings.drbdPortRange.maxPortDRBD ports range end
Default:
7999 -
integersettings.drbdPortRange.minPortDRBD ports range start
Default:
7000
-
-
stringsettings.logLevelModule log level
Default:
INFOAllowed values:
ERROR,WARN,INFO,DEBUG,TRACE -
booleansettings.newControlPlane
When true, use the new control-plane as a backend for the module. Once switched to true, reverting back to false is prohibited.
Enabling it is only allowed on Deckhouse development builds; on any release channel the setting is rejected and ignored.
Default:
false -
stringsettings.registrySchemeDeprecated parameter. Remove it from ModuleConfig for Deckhouse with version greater than 1.57.
Default:
https -
array of stringssettings.storageClassLabelIgnoredPrefixes
List of label-key prefixes that MUST NOT be propagated from a ReplicatedStorageClass to the managed Kubernetes StorageClass.
The controller treats this list as a complement to a built-in (system) list and drops any ReplicatedStorageClass label whose key starts with any prefix from either list.
Matching is literal
strings.HasPrefix(Go semantics): an entry without a trailing/matches by substring, NOT by full label key. For example,teamwould drop every key starting withteam(team,team-id,team.example.com/...). To restrict matching to a specific subdomain, end the entry with/(e.g.argocd.argoproj.io/). To target an exact label key, write the full key and be aware it also matches keys whose name extends it (e.g.app.kubernetes.io/managed-byalso dropsapp.kubernetes.io/managed-by-foo).Note that
kubernetes.io/in the system list matches only labels whose key literally starts withkubernetes.io/; reserved subdomains such astopology.kubernetes.io/zoneornode.kubernetes.io/*are NOT covered by default — add them here explicitly if your environment requires it.The defaults cover labels typically added by GitOps tooling (Argo CD, Flux, Rancher Fleet) so that their reconcilers do not fight the storage controller over labels on the managed StorageClass.
Default:
[ "argocd.argoproj.io/", "kustomize.toolkit.fluxcd.io/", "helm.toolkit.fluxcd.io/", "fleet.cattle.io/" ]
-