This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Reference

Configuration and manifest details for the Klustre CSI Plugin.

Look up manifests, configuration flags, storage classes, and Helm values. This section complements the how-to guides by surfacing the exact fields you can tune.

1 - Settings ConfigMap

Values consumed by the Klustre CSI node daemonset via ConfigMap.

ConfigMap/klustre-csi-settings provides runtime configuration to the node daemonset. Each key maps to either an environment variable or a command-line argument.

KeyDescriptionDefault
csiEndpointUNIX socket path used by the node plugin. Must align with kubelet’s plugin directory.unix:///var/lib/kubelet/plugins/lustre.csi.klustrefs.io/csi.sock
driverRegistrationArgArgument passed to the node-driver-registrar sidecar.--kubelet-registration-path=/var/lib/kubelet/plugins/lustre.csi.klustrefs.io/csi.sock
logLevelVerbosity for the Klustre CSI binary (info, debug, etc.).info
nodeImageContainer image for the Klustre CSI node plugin.ghcr.io/klustrefs/klustre-csi-plugin:0.0.1
pluginDirHostPath where CSI sockets live./var/lib/kubelet/plugins/lustre.csi.klustrefs.io
priorityClassNamePriority class applied to the daemonset pods.system-node-critical
registrarImageContainer image for the node-driver-registrar sidecar.registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.1
registrationDirHostPath where kubelet expects CSI driver registration files./var/lib/kubelet/plugins_registry

To update any field:

kubectl -n klustre-system edit configmap klustre-csi-settings
kubectl rollout restart daemonset/klustre-csi-node -n klustre-system

Ensure any customized paths (e.g., pluginDir) match the volumes mounted in the daemonset spec.

2 - Storage class parameters

Details of the default static storage class shipped with Klustre CSI.

The manifests bundle a StorageClass named klustre-csi-static. It targets pre-provisioned Lustre exports and enforces node placement.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: klustre-csi-static
allowedTopologies:
- matchLabelExpressions:
  - key: lustre.csi.klustrefs.io/lustre-client
    values:
    - "true"
mountOptions:
- flock
- user_xattr
provisioner: lustre.csi.klustrefs.io
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer

Field summary

  • provisioner – Must stay lustre.csi.klustrefs.io so PVCs bind to the Klustre driver.
  • allowedTopologies – Uses the lustre.csi.klustrefs.io/lustre-client=true label to ensure only Lustre-capable nodes run workloads. Update the label key/value if you customize node labels.
  • mountOptions – Defaults to flock and user_xattr. Add or remove Lustre options as needed (e.g., nolock, noatime).
  • reclaimPolicyRetain keeps the PV around when a PVC is deleted, which is typical for statically provisioned Lustre shares.
  • volumeBindingModeWaitForFirstConsumer defers binding until a pod is scheduled, ensuring topology constraints match the consuming workload.

Customization tips

  • Create additional storage classes for different mount flag sets or topology labels. Ensure each class references the same provisioner.
  • If you disable topology constraints, remove allowedTopologies, but be aware that pods might schedule onto nodes without Lustre access.
  • For multi-cluster environments, consider namespacing storage class names (e.g., klustre-csi-static-prod).

3 - Helm values

Commonly overridden values for the Klustre CSI Helm chart.

The chart is published as oci://ghcr.io/klustrefs/charts/klustre-csi-plugin. Run helm show values oci://ghcr.io/klustrefs/charts/klustre-csi-plugin --version 0.1.1 for the full schema. This page summarizes frequently tuned fields.

PathDefaultPurpose
image.repositoryghcr.io/klustrefs/klustre-csi-pluginNode plugin image repository.
image.tag0.1.1Node plugin tag.
imagePullSecrets[]Global image pull secrets applied to all pods.
nodePlugin.pluginDir/var/lib/kubelet/plugins/lustre.csi.klustrefs.ioHost path for CSI sockets.
nodePlugin.kubeletRegistrationPath/var/lib/kubelet/plugins/lustre.csi.klustrefs.io/csi.sockPath passed to kubelet registrar.
nodePlugin.logLevelinfoVerbosity for the node binary.
nodePlugin.resourcesrequests: 50m/50Mi, limits: 200m/200MiContainer resource settings.
nodePlugin.registrar.image.repositoryregistry.k8s.io/sig-storage/csi-node-driver-registrarSidecar repository.
nodePlugin.registrar.image.tagv2.10.1Sidecar tag.
nodePlugin.extraVolumes / extraVolumeMounts[]Inject custom host paths (e.g., additional libraries).
storageClass.createtrueToggle creation of klustre-csi-static.
storageClass.allowedTopologies[0].matchLabelExpressions[0].keylustre.csi.klustrefs.io/lustre-clientNode label key for placement.
storageClass.mountOptions["flock","user_xattr"]Default Lustre mount flags.
settingsConfigMap.createtrueControls whether the chart provisions klustre-csi-settings.
serviceAccount.createtrueCreate the node service account automatically.
rbac.createtrueProvision RBAC resources (ClusterRole/Binding).

Example override file

image:
  tag: 0.1.2
nodePlugin:
  logLevel: debug
  extraVolumeMounts:
    - name: host-etc
      mountPath: /host/etc
  extraVolumes:
    - name: host-etc
      hostPath:
        path: /etc
storageClass:
  mountOptions:
    - flock
    - user_xattr
    - noatime

Install with:

helm upgrade --install klustre-csi \
  oci://ghcr.io/klustrefs/charts/klustre-csi-plugin \
  --version 0.1.1 \
  --namespace klustre-system \
  --create-namespace \
  -f overrides.yaml

4 - Parameter reference

CLI flags and environment variables for the Klustre CSI node daemonset.

The node daemonset containers accept a small set of flags and environment variables. Most values are sourced from ConfigMap/klustre-csi-settings. Use this table as a quick lookup when you need to override behavior.

Component / flagEnv varPurposeDefault source
klustre-csi --node-idKUBE_NODE_NAMEUnique identifier sent to the CSI sidecars and kubelet. Normally the Kubernetes node name.Downward API (spec.nodeName).
klustre-csi --endpointCSI_ENDPOINTPath to the CSI UNIX socket served by the node plugin. Must match kubelet registration path.csiEndpoint in the settings ConfigMap.
klustre-csi --log-levelLOG_LEVELDriver verbosity (error, warn, info, debug, trace).logLevel in the settings ConfigMap.
PATHPATHEnsures mount.lustre, umount.lustre, and related tools are found inside the container./host/usr/sbin:/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin.
LD_LIBRARY_PATHLD_LIBRARY_PATHPoints to host library directories required by the Lustre client binaries./host/lib:/host/lib64:/host/usr/lib:/host/usr/lib64.
node-driver-registrar --csi-addressn/aLocation of the CSI socket inside the pod./csi/csi.sock.
node-driver-registrar --kubelet-registration-pathn/a (derived from ConfigMap)Host path where kubelet looks for CSI drivers.driverRegistrationArg from the settings ConfigMap.

How to override

  1. Edit the settings ConfigMap:

    kubectl -n klustre-system edit configmap klustre-csi-settings
    

    Change csiEndpoint, driverRegistrationArg, or logLevel as needed.

  2. If you must customize PATH or LD_LIBRARY_PATH, edit the daemonset directly (Helm users can override nodePlugin.pathEnv or nodePlugin.ldLibraryPath values).

  3. Restart the daemonset pods:

    kubectl rollout restart daemonset/klustre-csi-node -n klustre-system
    

Notes

  • --node-id should stay aligned with the Kubernetes node name unless you have a strong reason to deviate (CSI treats it as the authoritative identifier).
  • Changing CSI_ENDPOINT or driverRegistrationArg requires matching host path mounts in the daemonset (pluginDir, registrationDir).
  • Increasing LOG_LEVEL to debug or trace is useful for troubleshooting but may emit sensitive information—reset it after collecting logs.