<p>So I've a cron job like this:</p>
<pre><code>apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: my-cron-job
spec:
  schedule: &quot;0 0 31 2 *&quot;
  failedJobsHistoryLimit: 3
  successfulJobsHistoryLimit: 1
  concurrencyPolicy: &quot;Forbid&quot;
  startingDeadlineSeconds: 30
  jobTemplate:
    spec:
      backoffLimit: 0
      activeDeadlineSeconds: 120
...
</code></pre>
<p>Then i trigger the job manually like so:</p>
<pre><code>kubectl create job my-job --namespace precompile --from=cronjob/my-cron-job
</code></pre>
<p>But it seams like I can trigger the job as often as I want and the <code>concurrencyPolicy: &quot;Forbid&quot;</code> is ignored.</p>
<p>Is there a way so that manually triggered jobs will respect this or do I have to check this manually?</p>

<blockquote>
<p>Note that concurrency policy only applies to the jobs created by the same cron job.</p>
</blockquote>
<p>The <code>concurrencyPolicy</code> field only applies to jobs created by the same cron job, as stated in the documentation: <a href="https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#concurrency-policy" rel="noreferrer">https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#concurrency-policy</a></p>
<p>When executing <code>$ kubectl create job my-job --namespace precompile --from=cronjob/my-cron-job</code> you are essentially creating a one-time job on its own that uses the <code>spec.jobTemplate</code> field as a reference to create it. Since <code>concurrencyPolicy</code> is a cronjob field, it is not even being evaluated.</p>
<p><strong>TL;DR</strong></p>
<p>This actually is the expected behavior. Manually created jobs are not effected by <code>concurrencyPolicy</code>. There is no flag you could pass to change this behavior.</p>
