CSI driver not found: The named CSI driver is not registered on the node or in the cluster
This means a volume asked for a CSI driver that Kubernetes does not know about — either the driver is not installed, its node plugin is missing from that node, or the name in the StorageClass is misspelled.
Applies to: All Kubernetes versions using CSI storage
What it means
CSI drivers register themselves with the cluster as CSIDriver objects and with each node through the kubelet's plugin registration mechanism. A StorageClass or a volume references a driver by name, and if that name does not resolve, the operation fails with a message such as driver name … not found in the list of registered CSI drivers. There are two distinct places this can break. Cluster-wide, the driver may simply not be installed. Per-node, the driver's DaemonSet may not be running on the node the pod landed on — which produces a failure that affects some nodes and not others and looks intermittent until you notice the pattern.
Most common causes
- The CSI driver is not installed in the cluster at all.
- The driver's node plugin DaemonSet is not scheduled onto that node, often because of a taint it does not tolerate.
- The driver name in the StorageClass is misspelled or belongs to a different provider.
- The node plugin is running but has not completed registration with the kubelet.
- A driver upgrade in progress, during which registration is briefly absent.
- The kubelet's plugin registration directory is misconfigured, which happens with non-standard kubelet root paths.
How to diagnose it
- List registered drivers:
kubectl get csidrivers. If the name is absent, the driver is not installed. - Check the node plugin on the affected node:
kubectl get pods -n kube-system -o wide | grep csi. - Compare the name in the StorageClass against the registered name exactly:
kubectl get storageclass NAME -o jsonpath='{.provisioner}'. - Check the node plugin's registrar container logs for registration errors.
- Confirm the DaemonSet tolerates the taints on the nodes you need it to run on.
How to fix it
- Install the CSI driver, following the provider's instructions for the Kubernetes version in use.
- Add the tolerations the node plugin DaemonSet needs so it runs on every node that will host workloads with volumes.
- Correct the provisioner name in the StorageClass.
- Restart the node plugin if registration did not complete.
- If the kubelet uses a non-default root directory, configure the driver's registration path to match.
Notes
A driver that is registered cluster-wide but missing on one node produces failures only for pods that happen to land there. Checking get csidrivers alone can therefore give a clean answer while the problem is real — the per-node check is the one that finds it.
Related
- ProvisioningFailed — Dynamic provisioning of a volume failed
- FailedMount — A volume could not be mounted into the pod
Sources
- Kubernetes documentation — Volumes: CSI
- Container Storage Interface specification
- Kubernetes documentation — Storage Classes