Klustre CSI focuses on static provisioning: you point a PV at an existing Lustre export, bind it to a PVC, and mount it into pods. Explore the topics below for the manifest workflow and mount attribute details.
This is the multi-page printable view of this section. Click here to print.
Volumes
1 - Static PV workflow
1. Create the PersistentVolume
apiVersion: v1
kind: PersistentVolume
metadata:
name: lustre-static-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
storageClassName: klustre-csi-static
persistentVolumeReclaimPolicy: Retain
csi:
driver: lustre.csi.klustrefs.io
volumeHandle: lustre-static-pv
volumeAttributes:
source: 10.0.0.1@tcp0:/lustre-fs
mountOptions: flock,user_xattr
volumeHandlejust needs to be unique within the cluster; it is not used by the Lustre backend.volumeAttributes.sourcecarries the Lustre management target and filesystem path.
2. Bind with a PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: lustre-static-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: klustre-csi-static
volumeName: lustre-static-pv
resources:
requests:
storage: 10Gi
Even though Lustre capacity is managed outside Kubernetes, the storage field should match the PV so the binder succeeds.
3. Mount from workloads
volumes:
- name: lustre
persistentVolumeClaim:
claimName: lustre-static-pvc
containers:
- name: app
image: busybox
volumeMounts:
- name: lustre
mountPath: /mnt/lustre
Multiple pods can reference the same PVC because Lustre supports ReadWriteMany. Pods must schedule on labeled nodes (lustre.csi.klustrefs.io/lustre-client=true).
4. Cleanup
Deleting the PVC detaches pods but the PV remains because the reclaim policy is Retain. Manually delete the PV when you no longer need it.
2 - Volume attributes and mount options
volumeAttributes
| Key | Example | Purpose |
|---|---|---|
source | 10.0.0.1@tcp0:/lustre-fs | Host(s) and filesystem path given to mount.lustre. |
mountOptions | flock,user_xattr | Comma-separated Lustre mount flags. |
Additional keys (e.g., subdir) can be added in the future; the driver simply passes the map to the Lustre helper script.
Storage class tuning
See the storage class reference for details on:
allowedTopologies– keep workloads on nodes with the Lustre label.reclaimPolicy– typicallyRetainfor static PVs.mountOptions– defaults toflockanduser_xattr, but you can addnoatime,flock,user_xattr, etc.
Override mount options per volume by setting volumeAttributes.mountOptions. This is useful when a subset of workloads needs different locking semantics.
Access modes
- Use
ReadWriteManyfor shared Lustre volumes. ReadOnlyManyis supported when you only need read access.ReadWriteOnceoffers no benefit with Lustre; prefer RWX.
Lifecycle reminders
- Klustre CSI does not provision or delete Lustre exports. Ensure the server-side directory exists and has the correct permissions.
- Kubernetes capacity values are advisory. Quotas should be enforced on the Lustre server.
PersistentVolumeReclaimPolicy=Retainkeeps PVs around after PVC deletion; clean them up manually to avoid dangling objects.