Velero restore operation does not complete successfully and is in PartiallyFailed state post restore.
When we describe the PVC we see following error.
[root@]# kubectl describe pvc <PVC-name> -n >namesapce>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ProvisioningFailed 3m38s (x42947 over 7d10h) persistentvolume-controller no provisionable volume plugin matched
TKGM 2.5.x
Source cluster relied on a custom external NFS provisioner configured to answer to the kubernetes.io/nfs string and we observe that the nfs deployments is not running healthily in the target cluster.
1. To Identify the StorageClass mapping:
Check all StorageClasses to determine which one is mapped to kubernetes.io/nfs kubectl get storageclass -o custom-columns=NAME:.metadata.name,PROVISIONER:.provisioner
2. To Inspect the Provisioner Deployment configurationkubectl get deployments -A | grep -i nfs
Once the NFS share is set up and healthy configure the NFS provisioner correctly by following the below steps
Helm must be installed on your jump host or management machine.
You must have an existing and reachable NFS server IP and an exported path.
1. Add and update the official Helm repository:helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/helm repo update
2. Create a dedicated namespace (optional but recommended):kubectl create namespace nfs-provisioner
3. Install the deployment via Helm: Replace <nfs-server-ip> and <nfs-exported-path> with your actual NFS storage details.helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
-n nfs-provisioner \
--set nfs.server=<nfs-server-ip> \
--set nfs.path=<nfs-exported-path> \
--set storageClass.name=nfs-client \
--set storageClass.defaultClass=true \
--set storageClass.archiveOnDelete=false
Once the Helm installation completes, verify that the provisioner pod is actively running and the StorageClass has been created:
kubectl get pods -n nfs-provisioner