Available with limitations in: CE
Available without limitations in: SE, SE+, EE
The module lifecycle stage: General Availability
The module has requirements for installation
Enabling the module
To enable the sds-local-volume module, follow these steps:
All commands must be run on a machine with access to the Kubernetes API and administrator privileges.
-
Enable the
sds-local-volumemodule:d8 k apply -f - <<EOF apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: sds-local-volume spec: enabled: true version: 2 EOF -
Wait for the
sds-local-volumemodule to transition to theReadystate:d8 k get modules sds-local-volume -w -
Verify that the module pods are running:
d8 k -n d8-sds-local-volume get pod -owide d8 k -n d8-sds-node-configurator get pod -o wide
For detailed module setup instructions, see the Quick start section.
Requirements
To the Deckhouse version: 1.72 and above.
To the versions of other modules:
-
sds-node-configurator: 0.6.1 and above. -
snapshot-controller: any version.
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.dataNodesSettings for local volumes csi on nodes with data
Default:
{}-
objectsettings.dataNodes.nodeSelector
The same as in the Pods
spec.nodeSelectorparameter in Kubernetes.If parameter is omitted, local volume csi will be placed on all nodes.
Caution! Changing this parameter does not result in data redistribution. If node with data no longer matches the
nodeSelector, data on that node will become inaccessible.Default:
{ "kubernetes.io/os": "linux" }
-
-
stringsettings.logLevelModule log level
Default:
DEBUGAllowed values:
ERROR,WARN,INFO,DEBUG,TRACE -
array of stringssettings.storageClassLabelIgnoredPrefixes
List of label-key prefixes that MUST NOT be propagated from a LocalStorageClass to the managed Kubernetes StorageClass.
The controller treats this list as a complement to a built-in (system) list and drops any LocalStorageClass 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/" ]
-