mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Fix Job Reaping
Ensure batch.Kind("Job") has a reaper, so that pods are not orphaned.
Check for orphaned pods in test-cmd.sh.
Also provide describer and scaler for batch.Kind("Job").
The scaler, reaper, and describer for extensions can
be reused for batch.
			
			
This commit is contained in:
		@@ -242,6 +242,7 @@ runTests() {
 | 
			
		||||
  hpa_min_field=".spec.minReplicas"
 | 
			
		||||
  hpa_max_field=".spec.maxReplicas"
 | 
			
		||||
  hpa_cpu_field=".spec.cpuUtilization.targetPercentage"
 | 
			
		||||
  job_parallelism_field=".spec.parallelism"
 | 
			
		||||
  deployment_replicas=".spec.replicas"
 | 
			
		||||
  secret_data=".data"
 | 
			
		||||
  secret_type=".type"
 | 
			
		||||
@@ -723,6 +724,8 @@ __EOF__
 | 
			
		||||
  kube::test::get_object_assert jobs "{{range.items}}{{$id_field}}:{{end}}" 'pi:'
 | 
			
		||||
  # Clean up
 | 
			
		||||
  kubectl delete jobs pi "${kube_flags[@]}"
 | 
			
		||||
  # Post-condition: no pods exist.
 | 
			
		||||
  kube::test::get_object_assert pods "{{range.items}}{{$id_field}}:{{end}}" ''
 | 
			
		||||
  # Pre-Condition: no Deployment exists
 | 
			
		||||
  kube::test::get_object_assert deployment "{{range.items}}{{$id_field}}:{{end}}" ''
 | 
			
		||||
  # Command
 | 
			
		||||
@@ -1047,7 +1050,10 @@ __EOF__
 | 
			
		||||
 | 
			
		||||
  ### Scale a job
 | 
			
		||||
  kubectl create -f docs/user-guide/job.yaml "${kube_flags[@]}"
 | 
			
		||||
  # Job scale support removed.
 | 
			
		||||
  # Command
 | 
			
		||||
  kubectl scale --replicas=2 job/pi
 | 
			
		||||
  # Post-condition: 2 replicas for pi
 | 
			
		||||
  kube::test::get_object_assert 'job pi' "{{$job_parallelism_field}}" '2'
 | 
			
		||||
  # Clean-up
 | 
			
		||||
  kubectl delete job/pi "${kube_flags[@]}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
			
		||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
			
		||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/fieldpath"
 | 
			
		||||
@@ -92,6 +93,7 @@ func describerMap(c *client.Client) map[unversioned.GroupKind]Describer {
 | 
			
		||||
		extensions.Kind("DaemonSet"):               &DaemonSetDescriber{c},
 | 
			
		||||
		extensions.Kind("Deployment"):              &DeploymentDescriber{clientset.FromUnversionedClient(c)},
 | 
			
		||||
		extensions.Kind("Job"):                     &JobDescriber{c},
 | 
			
		||||
		batch.Kind("Job"):                     	    &JobDescriber{c},
 | 
			
		||||
		extensions.Kind("Ingress"):                 &IngressDescriber{c},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
			
		||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/wait"
 | 
			
		||||
)
 | 
			
		||||
@@ -46,8 +47,8 @@ func ScalerFor(kind unversioned.GroupKind, c client.Interface) (Scaler, error) {
 | 
			
		||||
		return &ReplicationControllerScaler{c}, nil
 | 
			
		||||
	case extensions.Kind("ReplicaSet"):
 | 
			
		||||
		return &ReplicaSetScaler{c.Extensions()}, nil
 | 
			
		||||
	case extensions.Kind("Job"):
 | 
			
		||||
		return &JobScaler{c.Extensions()}, nil
 | 
			
		||||
	case extensions.Kind("Job"), batch.Kind("Job"):
 | 
			
		||||
		return &JobScaler{c.Extensions()}, nil // Either kind of job can be scaled with Extensions interface.
 | 
			
		||||
	case extensions.Kind("Deployment"):
 | 
			
		||||
		return &DeploymentScaler{c.Extensions()}, nil
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
			
		||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/labels"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util"
 | 
			
		||||
@@ -75,7 +76,7 @@ func ReaperFor(kind unversioned.GroupKind, c client.Interface) (Reaper, error) {
 | 
			
		||||
	case api.Kind("Service"):
 | 
			
		||||
		return &ServiceReaper{c}, nil
 | 
			
		||||
 | 
			
		||||
	case extensions.Kind("Job"):
 | 
			
		||||
	case extensions.Kind("Job"), batch.Kind("Job"):
 | 
			
		||||
		return &JobReaper{c, Interval, Timeout}, nil
 | 
			
		||||
 | 
			
		||||
	case extensions.Kind("Deployment"):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user