diff --git a/.drone.yml b/.drone.yml
index 5459dc9aba58581fe61141eb85fa4b88695d24e9..14ab03777005e93c2ad3a4600ad7c34f5a35c388 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -88,77 +88,6 @@ volumes:
   host:
     path: /var/run/docker.sock
 
----
-kind: pipeline
-name: s390x
-
-platform:
-  os: linux
-  arch: amd64
-
-node:
-  arch: s390x
-
-steps:
-- name: build
-  image: rancher/dapper:v0.6.0
-  commands:
-  - dapper ci
-  volumes:
-  - name: docker
-    path: /var/run/docker.sock
-
-- name: upload-artifacts
-  image: rancher/drone-images:github-release-s390x
-  settings:
-    api_key:
-      from_secret: github_token
-    prerelease: true
-    checksum:
-    - sha256
-    checksum_file: CHECKSUMsum-s390x.txt
-    checksum_flatten: true
-    files:
-    - "dist/artifacts/*"
-  when:
-    instance:
-    - drone-publish.rancher.io
-    ref:
-    - refs/head/master
-    - refs/tags/*
-    event:
-    - tag
-
-- name: push-controller
-  image: rancher/drone-images:docker-s390x
-  volumes:
-  - name: docker
-    path: /var/run/docker.sock
-  settings:
-    dockerfile: package/Dockerfile
-    build_args:
-    - ARCH=s390x
-    - TAG=${DRONE_TAG}-s390x
-    password:
-      from_secret: docker_password
-    repo: "rancher/system-upgrade-controller"
-    tag: "${DRONE_TAG}-s390x"
-    username:
-      from_secret: docker_username
-  when:
-    instance:
-    - drone-publish.rancher.io
-    ref:
-    - refs/head/master
-    - refs/tags/*
-    event:
-    - tag
-
-volumes:
-- name: docker
-  host:
-    path: /var/run/docker.sock
-
 ---
 kind: pipeline
 name: arm64
@@ -266,7 +195,6 @@ steps:
     platforms:
       - linux/amd64
       - linux/arm64
-      - linux/s390x
     target: "rancher/system-upgrade-controller:${DRONE_TAG}"
     template: "rancher/system-upgrade-controller:${DRONE_TAG}-ARCH"
   when:
@@ -301,7 +229,6 @@ steps:
 
 depends_on:
 - amd64
-- s390x
 - arm64
 
 ---
diff --git a/pkg/upgrade/job/job.go b/pkg/upgrade/job/job.go
index d8a6cfdb00bae3688fe22d16198572598e98743e..1e9ce44634c8508149187fc7658a1d44d0c9982a 100644
--- a/pkg/upgrade/job/job.go
+++ b/pkg/upgrade/job/job.go
@@ -124,35 +124,48 @@ func New(plan *upgradeapiv1.Plan, node *corev1.Node, controllerName string) *bat
 	labelPlanName := upgradeapi.LabelPlanName(plan.Name)
 	nodeHostname := upgradenode.Hostname(node)
 	shortNodeName := strings.SplitN(node.Name, ".", 2)[0]
+
+	jobAnnotations := labels.Set{
+		upgradeapi.AnnotationTTLSecondsAfterFinished: strconv.FormatInt(int64(TTLSecondsAfterFinished), 10),
+	}
+	podAnnotations := labels.Set{}
+
+	for key, value := range plan.Annotations {
+		if !strings.Contains(key, "cattle.io/") {
+			jobAnnotations[key] = value
+			podAnnotations[key] = value
+		}
+	}
+
+	jobLabels := labels.Set{
+		upgradeapi.LabelController: controllerName,
+		upgradeapi.LabelExclusive:  exclusiveString,
+		upgradeapi.LabelNode:       node.Name,
+		upgradeapi.LabelPlan:       plan.Name,
+		upgradeapi.LabelVersion:    plan.Status.LatestVersion,
+		labelPlanName:              plan.Status.LatestHash,
+	}
+
+	for key, value := range plan.Labels {
+		if !strings.Contains(key, "cattle.io/") {
+			jobLabels[key] = value
+		}
+	}
+
 	job := &batchv1.Job{
 		ObjectMeta: metav1.ObjectMeta{
-			Name:      name.SafeConcatName("apply", plan.Name, "on", shortNodeName, "with", plan.Status.LatestHash),
-			Namespace: plan.Namespace,
-			Annotations: labels.Set{
-				upgradeapi.AnnotationTTLSecondsAfterFinished: strconv.FormatInt(int64(TTLSecondsAfterFinished), 10),
-			},
-			Labels: labels.Set{
-				upgradeapi.LabelController: controllerName,
-				upgradeapi.LabelExclusive:  exclusiveString,
-				upgradeapi.LabelNode:       node.Name,
-				upgradeapi.LabelPlan:       plan.Name,
-				upgradeapi.LabelVersion:    plan.Status.LatestVersion,
-				labelPlanName:              plan.Status.LatestHash,
-			},
+			Name:        name.SafeConcatName("apply", plan.Name, "on", shortNodeName, "with", plan.Status.LatestHash),
+			Namespace:   plan.Namespace,
+			Annotations: jobAnnotations,
+			Labels:      jobLabels,
 		},
 		Spec: batchv1.JobSpec{
 			BackoffLimit:            &BackoffLimit,
 			TTLSecondsAfterFinished: &TTLSecondsAfterFinished,
 			Template: corev1.PodTemplateSpec{
 				ObjectMeta: metav1.ObjectMeta{
-					Labels: labels.Set{
-						upgradeapi.LabelController: controllerName,
-						upgradeapi.LabelExclusive:  exclusiveString,
-						upgradeapi.LabelNode:       node.Name,
-						upgradeapi.LabelPlan:       plan.Name,
-						upgradeapi.LabelVersion:    plan.Status.LatestVersion,
-						labelPlanName:              plan.Status.LatestHash,
-					},
+					Annotations: podAnnotations,
+					Labels:      jobLabels,
 				},
 				Spec: corev1.PodSpec{
 					HostIPC:            true,
diff --git a/pkg/upgrade/job/job_suite_test.go b/pkg/upgrade/job/job_suite_test.go
index 183fc2c64e190aad5285073bbaf30a2f944ceff3..93427a3984a0e276342ec6edb4c0abbef5c68349 100644
--- a/pkg/upgrade/job/job_suite_test.go
+++ b/pkg/upgrade/job/job_suite_test.go
@@ -87,5 +87,33 @@ var _ = Describe("Jobs", func() {
 				Expect(*job.Spec.ActiveDeadlineSeconds).To(Equal(int64(300)))
 			})
 		})
+
+		Context("When the Plan has annotations and labels", func() {
+			It("Copies the non-cattle.io metadata to the Job and Pod", func() {
+				plan.Annotations = make(map[string]string)
+				plan.Annotations["cattle.io/some-annotation"] = "foo"
+				plan.Annotations["plan.cattle.io/some-annotation"] = "bar"
+				plan.Annotations["some.other/annotation"] = "baz"
+				plan.Labels = make(map[string]string)
+				plan.Labels["cattle.io/some-label"] = "biz"
+				plan.Labels["plan.cattle.io/some-label"] = "buz"
+				plan.Labels["some.other/label"] = "bla"
+
+				job := sucjob.New(plan, node, "foobar")
+				Expect(job.Annotations).To(Not(HaveKey("cattle.io/some-annotation")))
+				Expect(job.Annotations).To(Not(HaveKey("plan.cattle.io/some-annotation")))
+				Expect(job.Annotations).To(HaveKeyWithValue("some.other/annotation", "baz"))
+				Expect(job.Labels).To(Not(HaveKey("cattle.io/some-label")))
+				Expect(job.Labels).To(Not(HaveKey("plan.cattle.io/some-label")))
+				Expect(job.Labels).To(HaveKeyWithValue("some.other/label", "bla"))
+
+				Expect(job.Spec.Template.Annotations).To(Not(HaveKey("cattle.io/some-annotation")))
+				Expect(job.Spec.Template.Annotations).To(Not(HaveKey("plan.cattle.io/some-annotation")))
+				Expect(job.Spec.Template.Annotations).To(HaveKeyWithValue("some.other/annotation", "baz"))
+				Expect(job.Spec.Template.Labels).To(Not(HaveKey("cattle.io/some-label")))
+				Expect(job.Spec.Template.Labels).To(Not(HaveKey("plan.cattle.io/some-label")))
+				Expect(job.Spec.Template.Labels).To(HaveKeyWithValue("some.other/label", "bla"))
+			})
+		})
 	})
 })