<p>I'm looking for a definitive answer for k8s' response to a job being updated - specifically, if I update the container spec (image / args).</p>

<p>If the containers are starting up, will it stop &amp; restart them?</p>

<p>If the job's pod is all running, will it stop &amp; restart?</p>

<p>If it's Completed, will it run it again with the new setup?</p>

<p>If it failed, will it run it again with the new setup?</p>

<p>I've not been able to find documentation on this point, but if there is some I'd be very happy to get some signposting.</p>

<p>The <code>.spec.template</code> field can not be updated in a Job, the field is <a href="https://github.com/kubernetes/kubernetes/blob/57c8024036938e40a48010299129b57b818c2a34/pkg/apis/batch/validation/validation.go#L158" rel="noreferrer">immutable</a>. The Job would need to be deleted and recreated which covers all of your questions. </p>

<p>The reasoning behind the changes aren't available in the github <a href="https://github.com/kubernetes/kubernetes/commit/9d1838fb647b2d9fcf35f1f20bf2dd9c4b35239f" rel="noreferrer">commit</a> or <a href="https://github.com/kubernetes/kubernetes/pull/14142" rel="noreferrer">pr</a>, but these changes were soon after Jobs were originally added. Your stated questions are likely part of that reasoning as making it immutable removes ambiguity. </p>
