How to set a time limit for a Kubernetes job?
I’d like to launch a Kubernetes job and give it a fixed deadline to finish. If the pod is still running when the deadline comes, I’d like the job to automatically be killed.
Does something like this exist? (At first I thought that the Job spec’s
activeDeadlineSeconds covered this use case, but now I see that
activeDeadlineSeconds only places a limit on when a job is re-tried; it doesn’t actively kill a slow/runaway job.)
One Solution collect form web for “How to set a time limit for a Kubernetes job?”
You can self-impose timeouts on the container’s entrypoint command by using GNU
For example the following Job that computes first 4000 digits of pi will time out after 10 seconds:
apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: metadata: name: pi spec: containers: - name: pi image: perl command: ["/usr/bin/timeout", "10", "perl", "-Mbignum=bpi", "-wle", "print bpi(4000)"] restartPolicy: Never
You can play with the numbers and see it timeout or not. Typically computing 4000 digits of pi takes ~23 seconds on my workstation, so if you set it to 5 seconds it’ll probably always fail and if you set it to 120 seconds it will always work.