Kubernetes Run job using CronJob

1/25/2019

Is there a way through which I can run an existing Job using CronJob resource. In CronJob Spec template can we apply a selector using labels. Something like this:

Job Spec: (Link to job docs)

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

Cron Spec:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: pi-cron
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      labelSelector:
        name: pi # refer to the job created above

I came across this. I want to try inverse of this. Create-Job-From-Cronjob

-- Ankit Deshpande
kubernetes
kubernetes-cronjob

1 Answer

1/25/2019

No, you can not do this in the way you want. kubectl only allows you to create jobs based on cronjob, but not vise-versa.

 kubectl create job NAME [--image=image --from=cronjob/name] -- [COMMAND] [args...] [flags] [options]

Available commands right now for kubectl create:

  clusterrole         Create a ClusterRole.
  clusterrolebinding  Create a ClusterRoleBinding for a particular ClusterRole
  configmap           Create a configmap from a local file, directory or literal value
  deployment          Create a deployment with the specified name.
  job                 Create a job with the specified name.
  namespace           Create a namespace with the specified name
  poddisruptionbudget Create a pod disruption budget with the specified name.
  priorityclass       Create a priorityclass with the specified name.
  quota               Create a quota with the specified name.
  role                Create a role with single rule.
  rolebinding         Create a RoleBinding for a particular Role or ClusterRole
  secret              Create a secret using specified subcommand
  service             Create a service using specified subcommand.
  serviceaccount      Create a service account with the specified name
-- VKR
Source: StackOverflow