I have the following configuration for my pod:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-app
labels:
app: my-app
spec:
serviceName: my-app
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
restartPolicy: Never
containers:
- name: my-app
image: myregistry:443/mydomain/my-app
imagePullPolicy: Always
And it deploys fine without the restartPolicy. However, I do not want the process to be run again once finished, hence I added the 'restartPolicy: Never'. Unfortunately I get the following error when I attempt to deploy:
Error from server (Invalid): error when creating "stack.yaml": StatefulSet.apps "my-app" is invalid: spec.template.spec.restartPolicy: Unsupported value: "Never": supported values: "Always"
What am I missing?
Thanks
Please see https://github.com/kubernetes/kubernetes/issues/24725
It appears that only "Always" is supported.
You should use a Job controller instead of a StatefulSet:
A Job creates one or more Pods and ensures that a specified number of them successfully terminate. As pods successfully complete, the Job tracks the successful completions.
Take a look at Handling Pod and Container Failures section, which explains the effects of using restartPolicy
with values OnFailure
or Never
, combined with another configs such as parallelism
, completions
and backoffLimit
.