To fine-tune VAST CSI Driver performance on large-scale Kubernetes clusters:
Adjust volume attachment
Use the attachRequired parameter in the driver's Helm chart configuration file to fine-tune how the driver attaches volumes to workload nodes prior to mounting the volume into a pod.
attachRequired: true (default): The driver performs a separateControllerPublishVolumeRPC to attach the volume to the node.
attachRequired: false: The driver attaches the volume to the node as part of theNodePublishVolumeoperation, which can significantly speed up volume attachment.NOTE: This setup cannot be used with nodes where HTTP/HTTPS ports are not open.
Disable sending of usage stats
Use the disableUsageStats parameter in the driver's Helm chart configuration file to prevent the driver from sending usage metrics to the VMS.
disableUsageStats: false(default): The driver sends usage metrics to the VMS.
disableUsageStats: true: The driver does not send usage metrics to the VMS.Adjust QPS and burst limits
Adjust the kube-api-qps and kube-api-burst parameters of the CSI provisioner in the driver's Helm chart configuration file:
kube-api-qps sets the maximum allowed number of requests per second that the CSI provisioner can send to the Kubernetes API server. The default value is 5.kube-api-burst sets the maximum allowed number of requests that can be sent at any given time after thekube-api-qpslimit is exceeded. The default value is 10.
For example:
controller:
extraArgs:
csiProvisioner:
- kube-api-qps=500
- kube-api-burst=1000Use API tokens for VMS authentication
Using Kubernetes secrets with API tokens for authentication on the VAST cluster may improve performance compared to using secrets with VMS credentials.
Increase the number of workers
Adjust the numWorkers parameter in the driver's Helm chart configuration file to Increase the number of CSI workers.
Use ephemeral volumes
With ephemeral volumes, the driver's interaction with the VMS is not bound to the CSI controller but is distributed among the CSI nodes. Using ephemeral volumes allows for similar performance improvements as running with attachRequired: false.