How to run kubernetes pod for a set period of time each day?

7/10/2018

I'm looking for a way to deploy a pod on kubernetes to run for a few hours each day. Essentially I want it to run every morning at 8AM and continue running until about 5:30 PM.

I've been researching a lot and haven't found a way to deploy the pod with a specific timeframe in mind. I've found cron jobs, but that seems to be to be for pods that terminate themselves, whereas mine should be running constantly.

Is there any way to deploy my pod on kubernetes this way? Or should I just set up the pod itself to run its intended application based on its internal clock?

-- jzeef
kubernetes

2 Answers

7/10/2018
-- Daein Park
Source: StackOverflow

7/11/2018

According to the Kubernetes architecture, a Job creates one or more pods and ensures that a specified number of them successfully terminate. As pods successfully complete, the job tracks the successful completions. When a specified number of successful completions is reached, the job itself is complete.

In simple words, Jobs run until completion or failure. That's why there is no option to schedule a Cron Job termination in Kubernetes.

In your case, you can start a Cron Job regularly and terminate it using one of the following options:

  1. A better way is to terminate a container by itself, so you can add such functionality to your application or use Cron. More information about how to add Cron to the Docker container, you can find here.

  2. You can use another Cron Job to terminate your Cron Job. You need to run a command inside a Pod to find and delete a Pod related to your Job. For more information, you can look through this link. But it is not a good way, because your Cron Job will always have failed status.

In both cases, you need to check with what status your Cron Job was finished and use the correct RestartPolicy accordingly.

-- Artem Golenyaev
Source: StackOverflow