restartPolicy:不支持的值:“从不”:支持的值:“始终”

Joã*_*tos 4 kubernetes

我的广告连播具有以下配置:

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
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

What am I missing?

Thanks

Edu*_*llo 8

您应该使用作业控制器而不是 StatefulSet:

一个 Job 创建一个或多个 Pod,并确保指定数量的 Pod 成功终止。当 pod 成功完成时,Job 会跟踪成功完成情况。

查看处理 Pod 和容器故障部分,该部分解释了使用restartPolicywith 值OnFailureNever与其他配置(例如parallelism,completions和 )相结合的效果backoffLimit

  • 作业的问题在于它们是不可变的,无法像编辑部署一样编辑它 (4认同)

小智 5

请参阅https://github.com/kubernetes/kubernetes/issues/24725

似乎仅支持“始终”。

  • 对于任何感兴趣的人,这里是关于如何创建 pod运行一次。 (2认同)
  • 我还期望能够将 `deployment.spec.template.spec.restartPolicy` 设置为“Never”或“OnFailure”!我阅读了@max23_提供的链接。我想人们可以使用“backoffLimit: 0”,尽管它看起来不是一个可靠的解决方案,因为 Pod 终止的原因很可能是一个实际的失败! (2认同)
  • 这太疯狂了,而且一直如此。请改变这一点。 (2认同)
  • 最疯狂的部分是,到目前为止,文档明确指出支持“从不”:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy (2认同)