Search code examples
cronkubectlkubernetes

Kubernetes CronJob Failure to start a job "Timeout" and "Job already exists"


I am trying to run a cronjob in kubernetes, but keep to having these two errors:

type: 'Warning' reason: 'FailedCreate' Error creating job: jobs.batch "dev-cron-1516702680" already exists

and

type: 'Warning' reason: 'FailedCreate' Error creating job: Timeout: request did not complete within allowed duration

Below are my cronjob yaml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  creationTimestamp: 2018-01-23T09:45:10Z
  name: dev-cron
  namespace: dev 
  resourceVersion: "16768201"
  selfLink: /apis/batch/v1beta1/namespaces/dev/cronjobs/dev-cron
  uid: 1a32eb94-0022-11e8-9256-065eb556d6a2
spec:
  concurrencyPolicy: Allow
  failedJobsHistoryLimit: 1
  jobTemplate:
    metadata:
      creationTimestamp: null
    spec:
      template:
        metadata:
          creationTimestamp: null
        spec:
          containers:
          - args:
            - for country in th; 
            - do
            - 'curl -X POST -d "{'footprint':'xxxx-xxxx'}"-H "Content-Type: application/json" https://dev.xxx.com/xxx/xxx'
            - done
            image: appropriate/curl:latest
            imagePullPolicy: Always
            name: cron
            resources: {}
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Never
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
  schedule: '* * * * *'
  startingDeadlineSeconds: 10
  successfulJobsHistoryLimit: 3
  suspend: false
status: {}

I am not sure why this is keep happening. I am running Kubernetes version 1.9.1, in AWS cluster. Any idea why?


Solution

  • It turned out to happen because there is an auto injector by Istio initializer. Once I disabled Istio initializer injection for cronjobs, it works fine.