From cdde275366ae425c404e20449500ae21f003f4f9 Mon Sep 17 00:00:00 2001 From: Dmitry Meyer Date: Wed, 28 Oct 2026 11:28:40 +0000 Subject: [PATCH 1/2] Kubernetes: set job pod's restartPolicy to Never A container with already submitted job cannot survive restart Closes: https://github.com/dstackai/dstack/issues/4420 --- .../_internal/core/backends/kubernetes/compute.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/dstack/_internal/core/backends/kubernetes/compute.py b/src/dstack/_internal/core/backends/kubernetes/compute.py index 980cd67615..b55522da90 100644 --- a/src/dstack/_internal/core/backends/kubernetes/compute.py +++ b/src/dstack/_internal/core/backends/kubernetes/compute.py @@ -125,6 +125,16 @@ class Operator(str, Enum): IN = "In" +class RestartPolicy(str, Enum): + """ + This policy determines how Kubernetes reacts to containers exiting due to errors + or other reasons. The default value is `Always`. + """ + ALWAYS = "Always" + ON_FAILURE = "OnFailure" + NEVER = "Never" + + class KubernetesBackendData(CoreModel): jump_pod_name: str jump_pod_service_name: str @@ -557,7 +567,8 @@ def create_gateway_replica( run_as_group=0, ), ) - ] + ], + restart_policy=RestartPolicy.ALWAYS, ), ) api.create_namespaced_pod( @@ -958,6 +969,7 @@ def _create_jump_pod_service_if_not_exists( ], ) ], + restart_policy=RestartPolicy.ALWAYS, tolerations=tolerations, ), ) @@ -1299,6 +1311,7 @@ def _create_job_pod( env=env_vars, ) ], + restart_policy=RestartPolicy.NEVER, image_pull_secrets=( [client.V1LocalObjectReference(name=registry_auth_secret_name)] if registry_auth_secret_name is not None From 00d2a3b7f5c0dc438c1f1e23b9e0876de8f2924a Mon Sep 17 00:00:00 2001 From: Dmitry Meyer Date: Wed, 28 Oct 2026 11:35:47 +0000 Subject: [PATCH 2/2] Fix formatting --- src/dstack/_internal/core/backends/kubernetes/compute.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dstack/_internal/core/backends/kubernetes/compute.py b/src/dstack/_internal/core/backends/kubernetes/compute.py index b55522da90..ee4539fe33 100644 --- a/src/dstack/_internal/core/backends/kubernetes/compute.py +++ b/src/dstack/_internal/core/backends/kubernetes/compute.py @@ -130,6 +130,7 @@ class RestartPolicy(str, Enum): This policy determines how Kubernetes reacts to containers exiting due to errors or other reasons. The default value is `Always`. """ + ALWAYS = "Always" ON_FAILURE = "OnFailure" NEVER = "Never"