【问题标题】:restartPolicy: Unsupported value: "Never": supported values: "Always"restartPolicy:不支持的值:“从不”:支持的值:“始终”
【发布时间】:2019-08-05 17:38:10
【问题描述】:

我的 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

并且它在没有重启策略的情况下部署良好。但是,我不希望该过程在完成后再次运行,因此我添加了“restartPolicy:从不”。不幸的是,当我尝试部署时出现以下错误:

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"

我错过了什么?

谢谢

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    请看https://github.com/kubernetes/kubernetes/issues/24725

    似乎只支持“始终”。

    【讨论】:

    • 对于任何感兴趣的人,这里是link,关于如何创建一个运行一次的 pod。
    • 我还期望能够将deployment.spec.template.spec.restartPolicy 设置为“从不”或“OnFailure”!我阅读了@max23_ 提供的链接。我想有人可以使用backoffLimit: 0,尽管它似乎不是一个可靠的解决方案,因为 pod 终止的原因很可能是一个实际的失败!
    【解决方案2】:

    您应该使用 Job controller 而不是 StatefulSet:

    一个 Job 创建一个或多个 Pod 并确保指定数量的 Pod 他们成功终止。随着 pod 成功完成,作业 跟踪成功完成。

    查看Handling Pod and Container Failures 部分,该部分解释了将restartPolicyOnFailureNever 结合使用的效果,以及与parallelismcompletionsbackoffLimit 等其他配置结合使用的效果。

    【讨论】:

    • Jobs 的问题是它们是不可变的,我们不能像编辑部署一样编辑它
    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2021-05-24
    • 1970-01-01
    • 2021-08-21
    • 2017-07-12
    • 2019-11-09
    • 2018-11-10
    • 2013-02-21
    相关资源
    最近更新 更多