You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Jobs migration (#223) merged to main in #459 on 2026-08-15. The feature/package-as-jobs branch has been deleted — base this work on main,
which now executes packages as Jobs.
Part of #223. Refs #411 (item 5c). Related to #306.
Reviewer-flagged and not cross-confirmed — confirm the failure mode before changing anything.
Claim
Interrupt Jobs carry the package image on the exit-0 "done" container (job_builder.go:107), where nothing else pulls that image. Init containers run first, so the interrupt has already executed by then; if kubelet image GC evicted the image or the registry is unreachable post-reboot, the pod parks in ImagePullBackOff and the package sits at (interrupt, in_progress) until activeDeadlineSeconds flips it to erroring — with the host already interrupted.
Options
Use an image guaranteed to be present on the node for the done container, or
Note
The Jobs migration (#223) merged to
mainin #459 on 2026-08-15. Thefeature/package-as-jobsbranch has been deleted — base this work onmain,which now executes packages as Jobs.
Part of #223. Refs #411 (item 5c). Related to #306.
Claim
Interrupt Jobs carry the package image on the exit-0 "done" container (
job_builder.go:107), where nothing else pulls that image. Init containers run first, so the interrupt has already executed by then; if kubelet image GC evicted the image or the registry is unreachable post-reboot, the pod parks inImagePullBackOffand the package sits at(interrupt, in_progress)untilactiveDeadlineSecondsflips it to erroring — with the host already interrupted.Options
state: erroringpromptly (that is Surface ImagePullBackOff/ErrImagePull on package pods as state: erroring #306's scope, which would bound the damage without changing the image).Acceptance