@@ -245,7 +245,15 @@ func (r *ReconcileBroadcastJob) Reconcile(_ context.Context, request reconcile.R
245
245
failed := int32 (len (failedPods ))
246
246
succeeded := int32 (len (succeededPods ))
247
247
248
- desiredNodes , restNodesToRunPod , podsToDelete := getNodesToRunPod (nodes , job , existingNodeToPodMap )
248
+ isDeadLine := func (job * appsv1alpha1.BroadcastJob ) bool {
249
+ if job .Spec .CompletionPolicy .Type == appsv1alpha1 .Always &&
250
+ job .Spec .CompletionPolicy .ActiveDeadlineSeconds != nil {
251
+ return time .Since (job .CreationTimestamp .Time ) >= time .Duration (* job .Spec .CompletionPolicy .ActiveDeadlineSeconds )* time .Second
252
+ }
253
+ return false
254
+ }
255
+
256
+ desiredNodes , restNodesToRunPod , podsToDelete := getNodesToRunPod (nodes , job , existingNodeToPodMap , isDeadLine )
249
257
desired := int32 (len (desiredNodes ))
250
258
klog .Infof ("%s/%s has %d/%d nodes remaining to schedule pods" , job .Namespace , job .Name , len (restNodesToRunPod ), desired )
251
259
klog .Infof ("Before broadcastjob reconcile %s/%s, desired=%d, active=%d, failed=%d" , job .Namespace , job .Name , desired , active , failed )
@@ -514,7 +522,9 @@ func isJobFailed(job *appsv1alpha1.BroadcastJob, pods []*corev1.Pod) (bool, stri
514
522
// * restNodesToRunPod: the nodes do not have pods running yet, excluding the nodes not satisfying constraints such as affinity, taints
515
523
// * podsToDelete: the pods that do not satisfy the node constraint any more
516
524
func getNodesToRunPod (nodes * corev1.NodeList , job * appsv1alpha1.BroadcastJob ,
517
- existingNodeToPodMap map [string ]* corev1.Pod ) (map [string ]* corev1.Pod , []* corev1.Node , []* corev1.Pod ) {
525
+ existingNodeToPodMap map [string ]* corev1.Pod ,
526
+ isDeadline func (job * appsv1alpha1.BroadcastJob ) bool ,
527
+ ) (map [string ]* corev1.Pod , []* corev1.Node , []* corev1.Pod ) {
518
528
519
529
var podsToDelete []* corev1.Pod
520
530
var restNodesToRunPod []* corev1.Node
@@ -530,6 +540,10 @@ func getNodesToRunPod(nodes *corev1.NodeList, job *appsv1alpha1.BroadcastJob,
530
540
klog .Infof ("Pod %s does not fit on node %s due to %v" , pod .Name , node .Name , err )
531
541
podsToDelete = append (podsToDelete , pod )
532
542
continue
543
+ } else if isDeadline (job ) {
544
+ klog .Infof ("Pod %s need to delete due to deadline" , pod .Name )
545
+ podsToDelete = append (podsToDelete , pod )
546
+ continue
533
547
}
534
548
desiredNodes [node .Name ] = pod
535
549
} else {
0 commit comments