Running containers one-time or periodic in Kubernetes

11/22/2018

How to deploy and run a container in Kubernetes, that should do his job and terminate?

I thought this is what Run-Once is for, but it looks like it's not supported to work.

I have some jobs, packed in docker images, that should be run either once/on demand (data import), where the config change should trigger re-run, or periodically (like volume backup). My idea was to deploy a container with restartPolicy: never which would stop and scale up to null after accomplishing.

What alternatives do I have for this missing functionality?

-- 9ilsdx 9rvj 0lo
kubernetes

2 Answers

11/22/2018

You can use a job/cronjob. This example is from kubernetes docs:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  backoffLimit: 5
  activeDeadlineSeconds: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

So, it will calculate "pi" and will terminate

-- suren
Source: StackOverflow

11/22/2018

If you waht a task to be executed just once, or just when you want, you should define a job. From the oficial documentation you can see this example:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

If you want to execute a task periodically, you should define a job and also a cronjob, defining the frequence you want the job to be executed. The following example is also from the oficial documentation:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure
-- pcampana
Source: StackOverflow