diff --git a/provisioner.go b/provisioner.go
index f40041e3f534977797d1815ab4782e87c07cf2d2..24c9ccf8cfcb4ba4f245c5cbc33658f03dda4379 100644
--- a/provisioner.go
+++ b/provisioner.go
@@ -15,6 +15,7 @@ import (
 
 	pvController "github.com/kubernetes-incubator/external-storage/lib/controller"
 	"k8s.io/api/core/v1"
+	k8serror "k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	clientset "k8s.io/client-go/kubernetes"
 )
@@ -357,13 +358,13 @@ func (p *LocalPathProvisioner) createHelperPod(action ActionType, cmdsForPath []
 		},
 	}
 
-	pod, err := p.kubeClient.CoreV1().Pods(p.namespace).Create(helperPod)
-	if err != nil {
+	_, err = p.kubeClient.CoreV1().Pods(p.namespace).Create(helperPod)
+	if err != nil && !k8serror.IsAlreadyExists(err) {
 		return err
 	}
 
 	defer func() {
-		e := p.kubeClient.CoreV1().Pods(p.namespace).Delete(pod.Name, &metav1.DeleteOptions{})
+		e := p.kubeClient.CoreV1().Pods(p.namespace).Delete(helperPod.Name, &metav1.DeleteOptions{})
 		if e != nil {
 			logrus.Errorf("unable to delete the helper pod: %v", e)
 		}
@@ -371,7 +372,7 @@ func (p *LocalPathProvisioner) createHelperPod(action ActionType, cmdsForPath []
 
 	completed := false
 	for i := 0; i < CmdTimeoutCounts; i++ {
-		if pod, err := p.kubeClient.CoreV1().Pods(p.namespace).Get(pod.Name, metav1.GetOptions{}); err != nil {
+		if pod, err := p.kubeClient.CoreV1().Pods(p.namespace).Get(helperPod.Name, metav1.GetOptions{}); err != nil {
 			return err
 		} else if pod.Status.Phase == v1.PodSucceeded {
 			completed = true