Hello CKADers, _Create a cron job with image busybox that runs every minute and . . .

pikachunetes:
Hello CKADers,

Create a cron job with image busybox that runs every minute and writes ‘date; echo Hello from the Kubernetes cluster’ to standard output. The cron job should be terminated if it takes more than 17 seconds to start execution after its schedule.

For the above question, do we have to add activeDeadlineSeconds=17 or startingDeadlineSeconds=17 and Why!
Thank you

Dhawan Shringi:
https://kodekloud.com/community/t/hi-all-anyone-can-please-help-what-is-the-difference-between-activedeadlinesec/17815

Dhawan Shringi:
Based on the first comment, it should be activeDeadlineSeconds.

pikachunetes:
@Dhawan Shringi, as in the question it is asked if it takes more than 17 seconds to start and not 17 secs to execute
Shouldn’t it be startingDeadlineSeconds
cc: @Fernando Jimenez

Dhawan Shringi:
My bad, I misread the question, it should be startingDeadlineSeconds.

pikachunetes:
My doubt arose in the first place, because of the GitHub solution for this question,
there they have mentioned activeDeadlineSeconds instead of startingDeadlineSeconds
Link: https://github.com/dgkanatsios/CKAD-exercises/blob/master/c.pod_design.md#create-a-cron-job-with-image-busybox-that-runs-every-minute-and-writes-date-echo-hello-from-the-kubernetes-cluster-to-standard-output-the-cron-job-should-be-terminated-if-it-takes-more-than-17-seconds-to-start-execution-after-its-schedule|https://github.com/dgkanatsios/CKAD-exercises/blob/master/c.pod_design.md#create-a-cron-job-with-image-busybo[…]o-start-execution-after-its-schedule
Can someone pls verify

Dhawan Shringi:
https://github.com/dgkanatsios/CKAD-exercises/issues/174

unnivkn:
The .spec.startingDeadlineSeconds field is optional. It stands for the deadline in seconds for starting the job if it misses its scheduled time for any reason. After the deadline, the cron job does not start the job. Jobs that do not meet their deadline in this way count as failed jobs.

unnivkn:
The activeDeadlineSeconds applies to the duration of the job, no matter how many Pods are created. Once a Job reaches activeDeadlineSeconds, all of its running Pods are terminated and the Job status will become type: Failed with reason: DeadlineExceeded.

unnivkn:
So the answer is : startingDeadlineSeconds

Dhawan Shringi:
Based on the docs:

For every CronJob, the CronJob Controller checks how many schedules it missed in the duration from its last scheduled time until now. If there are more than 100 missed schedules, then it does not start the job and logs the error

It is important to note that if the startingDeadlineSeconds field is set (not nil), the controller counts how many missed jobs occurred from the value of startingDeadlineSeconds until now rather than from the last scheduled time until now.

So, it should be activeDeadlineSeconds :grimacing:

unnivkn:
https://kodekloud.com/community/t/hi-all-anyone-can-please-help-what-is-the-difference-between-activedeadlinesec/17815

unnivkn:
https://michael.bouvy.net/post/deep-dive-kubernetes-cronjob

Dhawan Shringi:
The above post doesn’t talk much about startingDeadlineSeconds and based on the documentation, my understanding is that the cron job controller uses the parameter startingDeadlineSeconds to see if there where more than 100 misses in the last duration of startingDeadlineSeconds if not, it will allow the execution of cron job.

pikachunetes:
I think the question is a little ambiguous as it talks about the termination of the cronjob itself and not the job created by it. startingDeadlineSeconds and activeDeadlineSeconds both can terminate the job and not the whole cronjob.
but still, the former option looks more promising.

Dhawan Shringi:
It talks about startingDeadlineSeconds https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#cron-job-limitations|here, however it doesn’t say anywhere that the parameter can terminate a cronjob, not in the official documentation. Maybe we’ll have to implement it to be 100 percent sure and yes, it is certainly ambiguous question.

unnivkn:
Read here: Starting Deadline https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

Fernando Jimenez:
startingDeadlineSeconds makes the most sense in combination with Currency Policy Forbid. That’s why it is by default unset.
With a Current Policy Forbid, you are telling Kubernetes that you do not want more than one job running at a time. This is important if your job takes longer and overlaps with the next time the scheduled job should start. The startingDeadlineSeconds still allows a job to start past the schedule, if the previous job has finished. It also prevents the lockdown of more than 100 fails.

Fernando Jimenez:
Based on the original question, the actual answer should be activeDeadlineSeconds

pikachunetes:
Great explanation there!
@Fernando Jimenez, can you pls explain how does activeDeadlineSeconds fits right in the original question. That’s still a grey area for me.
“job should be terminated if it takes more than 17 seconds to start execution after its schedule”