diff --git a/pkg/upgrade/job/job.go b/pkg/upgrade/job/job.go
index db27e59691eaab8f95bc773f005f5a9f51589aec..9e35748daf90ef14921861ab2af3b67ded2fb745 100644
--- a/pkg/upgrade/job/job.go
+++ b/pkg/upgrade/job/job.go
@@ -2,6 +2,7 @@ package job
 
 import (
 	"os"
+	"sort"
 	"strconv"
 	"strings"
 
@@ -22,7 +23,7 @@ const (
 	defaultBackoffLimit            = int32(2)
 	defaultActiveDeadlineSeconds   = int64(600)
 	defaultPrivileged              = true
-	defaultKubectlImage            = "rancher/kubectl:1.18.3"
+	defaultKubectlImage            = "rancher/kubectl:v1.18.20"
 	defaultImagePullPolicy         = corev1.PullIfNotPresent
 	defaultTTLSecondsAfterFinished = int32(900)
 )
@@ -95,7 +96,8 @@ var (
 func New(plan *upgradeapiv1.Plan, node *corev1.Node, controllerName string) *batchv1.Job {
 	hostPathDirectory := corev1.HostPathDirectory
 	labelPlanName := upgradeapi.LabelPlanName(plan.Name)
-	shortNodeName := strings.SplitN(upgradenode.Hostname(node), ".", 2)[0]
+	nodeHostname := upgradenode.Hostname(node)
+	shortNodeName := strings.SplitN(nodeHostname, ".", 2)[0]
 	job := &batchv1.Job{
 		ObjectMeta: metav1.ObjectMeta{
 			Name:      name.SafeConcatName("apply", plan.Name, "on", shortNodeName, "with", plan.Status.LatestHash),
@@ -138,7 +140,7 @@ func New(plan *upgradeapiv1.Plan, node *corev1.Node, controllerName string) *bat
 										Key:      corev1.LabelHostname,
 										Operator: corev1.NodeSelectorOpIn,
 										Values: []string{
-											upgradenode.Hostname(node),
+											nodeHostname,
 										},
 									}},
 								}},
@@ -186,8 +188,16 @@ func New(plan *upgradeapiv1.Plan, node *corev1.Node, controllerName string) *bat
 					}},
 				},
 			},
+			Completions: new(int32),
+			Parallelism: new(int32),
 		},
 	}
+
+	*job.Spec.Completions = 1
+	if i := sort.SearchStrings(plan.Status.Applying, nodeHostname); i < len(plan.Status.Applying) && plan.Status.Applying[i] == nodeHostname {
+		*job.Spec.Parallelism = 1
+	}
+
 	podTemplate := &job.Spec.Template
 	// setup secrets volumes
 	for _, secret := range plan.Spec.Secrets {