Available in: Ultimate/EE
Included in extensions: Storage Integration
The module lifecycle stage: Experimental
The module has requirements for installation
The csi-mind-ustor module lets cluster workloads store data on uStor volumes.
The volumes are attached to the nodes over NBD (Network Block Device).
The connection to the uStor cluster is described by a MindUstorStorageConnection custom resource, and each StorageClass of the driver by a MindUstorStorageClass custom resource. The module installs the uStor client on the nodes and keeps its configuration in line with the connection.
Main features
The module provides the following features:
- StorageClasses for uStor pools, described by MindUstorStorageClass resources
- Persistent volumes in uStor, attached to the nodes over NBD
- Online volume expansion, without restarting the pod
- Volumes formatted with ext4 or xfs, and raw Block volumes
- Volume snapshots and restoring volumes from them
ReadWriteManyBlock volumes for the live migration of virtual machines of thevirtualizationmodule- Automatic installation and configuration of the uStor client (
ustor-client,ustor-nbd) on the nodes - Volume usage metrics for the alerts and dashboards of PersistentVolumeClaims
- A regular check of the login to the uStor management API, and alerts when a connection or a StorageClass is not ready
How the module works
The module works as follows:
- When the module is enabled, it installs the uStor client on all nodes of the cluster with a supported OS
and labels these nodes
storage.deckhouse.io/csi-mind-ustor-client-ready=true. The CSI node plugin runs only on the labeled nodes. - The administrator creates Secrets with the uStor user credentials and the client certificates, and a MindUstorStorageConnection that refers to them.
- The module writes the uStor client configuration and the certificates to
/etc/ustoron the nodes selected bydataPlane.nodeSelectorof the connection, keeps the CSI node plugin only on them and starts the CSI controller. The module logs in to the uStor management API with the credentials of the connection every hour. - The administrator creates a MindUstorStorageClass. The module creates a StorageClass with the same name
for the
ustor-nbd.csi.mindsw.iodriver. - When a PersistentVolumeClaim with this StorageClass is created, the driver creates an image in the uStor pool. A pod that uses the volume is scheduled only on a node where the CSI node plugin runs. When the pod starts, the volume is attached to its node over NBD and mounted.
StorageClasses of the ustor-nbd.csi.mindsw.io driver can be created, changed and deleted only through MindUstorStorageClass.
Only their annotations can be changed directly.
System requirements
The module has the following requirements:
- Deckhouse Platform (DP) 1.72 or later.
- A uStor 1.6 cluster whose management API is reachable from the Kubernetes cluster.
- The nodes that mount uStor volumes reach the uStor etcd and OSDs over the uStor data network.
- The
nbdkernel module can be loaded on these nodes. - The nodes run Astra Linux 1.8, RED OS 8, Ubuntu 22.04 or 24.04, or Debian 12. uStor volumes cannot be mounted on nodes with other operating systems.
- A dedicated uStor user for the CSI controller, prepared as described in Preparing the uStor user.
- For volume snapshots, a module that provides the
snapshot.storage.k8s.ioAPI, for examplesnapshot-controller.
On the nodes selected by dataPlane.nodeSelector of the connection, the module replaces /etc/ustor/ustor.conf
and the certificates in /etc/ustor/certs with the client configuration.
If a node has its own uStor configuration, for example a uStor server node, exclude it with dataPlane.nodeSelector.
Limitations
The module has the following limitations:
- The module serves one uStor cluster: only the oldest MindUstorStorageConnection is used.
Filesystemvolumes support only theReadWriteOnceandReadWriteOncePodaccess modes.Blockvolumes support only theReadWriteOncePodaccess mode.ReadWriteManyis allowed only for the virtual machine disks of thevirtualizationmodule.- Cloning a volume directly from another PersistentVolumeClaim is not supported: take a snapshot and restore it.
- CSI ephemeral inline volumes are not supported.
- The parameters of a MindUstorStorageClass cannot be changed after it is created.