The Dell CSM Installation wizard aims at providing an easier way to create the required yaml content to ease the install of CSI drivers and optionally CSM modules. In this new 1.8 release some cool features were added, including some specific to the newly released version 1.8 of the Dell CSI drivers.
New features in the Dell CSI v1.8 driver
The Dell CSI driver in version 1.8 continues to follow the k8s CSI specification. Some features were added for for different storage platforms, and in this post I will highlight them.
1. Storage Capacity Tracking (SCT)
This is more of a feature to stay complaint with the official CSI specification. For the Powermax and the Unity platform the CSI driver will check the storage capacity on a node before deploying storage to that node. In the case of shared storage this isn’t a really exciting feature, as shared storage in general will always show the same capacity to each node in the cluster.
Using this feature, object from the CSIStorageCapacity
type are generated by the CSI driver in the same namespace as the CSI driver, one for each storageClass. For this to work, your k8s version should be equal or higher than 1.24.
Example:
kubectl get csistoragecapacities -n unity # This shows one object per storageClass.
2. Gold, Silver, Bronze storageClasses
Another new feature (I am actually sneaking into this post as it isn’t introduced in CSI 1.8 but earlier đ ) is a way to limit resource usage on a per-storageClass basis. This will (depending on the capabilities of the underlying storage platform) give you a way to create “slower and faster” tiers by using different storage classses.
Powermax
For Powermax you can specify a Limit on both the I/O’s per second and the number of MB’s per second. This can be specified using these two variables in the CSI driver, their default is “NOLIMIT”:
HostIOLimitIOSec: "NOLIMIT"
HostIOLimitMBSec: "NOLIMIT"
Powerflex
For Powerflex a similar set of variables exist. Like Powermax these can be specified like this:
bandwidthLimitInKbps: <BANDWIDTH_LIMIT_IN_KBPS>
iopsLimit: <IOPS_LIMIT>
Unity
Unfortunately the Unity platform does not really have a way of limiting I/O’s or bandwidth per volume, but you can get to at least a basic way of specifying different storageClasses with different characteristics by specifying the tier where they should run from:
tieringPolicy:
# "0" for "Start High Then Auto-Tier"
# "1" for "Auto-Tier"
# "2" for "Highest Available Tier"
# "3" for "Lowest Available Tier"
3. Volume Limits
For both Powerstore and Powerflex a volume limits feature was added to the Dell CSI v1.8 driver. This option limits the maximum number of volumes a k8s worker node is allowed to connect into. This can be configured on a per-node basis, or cluster-wide. Setting this variable to zero will disable the limit.
Per node (Powerstore example):
kubectl label node <node name> max-powrstore-volumes-per-node=<volume_limit>
For the entire cluster (all worker nodes):
Specifying maxPowerstoreVolumesPerNode
or maxVxflexVolumesPerNode
in values.yaml (Helm installation)
Specifying X_CSI_MAX_VOLUMES_PER_NODES
in the CRD (CSM Operator installation)
Speaking of CSM Operator installation; the Operator Install Wizard has also been improved to reflect these new options (and more!) as we will see next.
Dell CSM Operator Install Wizard v1.8 improvements
The most notable change to the Dell CSM Install Wizard is the addition of support for the CSM Operator. Using the Install Wizard you can now generate the appropriate CRD to use inside the operator to ease the install of CSI/CSM on the k8s platform of your choice.
As you continue down the path of the Install Wizard, you can select CSM modules you want enabled directly from the GUI:
After you have configured everything to your liking, you just need to hit “generate yaml” and your customized CRD can be downloaded.