【问题标题】:Configure restart policy of pod from deployment config从部署配置中配置 pod 的重启策略
【发布时间】:2020-12-03 14:20:03
【问题描述】:

我们正在使用 Openshift(Kubernetes 的托管版本),我正在努力将我们的部署配置创建的所有 pod 的 pod 重启策略从“始终”设置为“从不”,但我不确定在哪里在 yaml 中进行此更改。

我们的部署配置如下所示:

kind: DeploymentConfig
metadata:
  generation: 19
  name: my-deployment-config
  namespace: my-deployment-config-namespace
  selfLink: >-
    ...
  uid: af918183-c780-11ea-8945-525400d3e4d9
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    name: my-selector
  strategy:
    activeDeadlineSeconds: 21600
    resources: {}
    rollingParams:
      intervalSeconds: 1
      maxSurge: 25%
      maxUnavailable: 25%
      timeoutSeconds: 600
      updatePeriodSeconds: 1
    type: Rolling
template:
    metadata:
      ...
    spec:
      containers:
        - image: >-
            (image source)
          imagePullPolicy: Always
          name: my-container
          ports:
            - containerPort: 8080
              protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

当我尝试将 restartPolicy 从“始终”更改为“从不”时,我遇到了

无法处理资源。原因: DeploymentConfig.apps.openshift.io “我的部署配置”无效: spec.template.spec.restartPolicy:不支持的值:“从不”: 支持的值:“始终”

The Kubernetes documentation 以及 Openshift documentation on restart 策略表明 pod 可以配置为 Always、Never 或 OnFailure。

那么我该如何从部署配置中做到这一点?

【问题讨论】:

  • 查看 OpenShift 文档中的表格(您发送的链接)。 Deployment 将创建一个 ReplicationController。 ReplicationController 总是会重启 Pod。
  • 那么对于托管在 Openshift 中的 Web 服务,除非我将其视为作业,否则我无法配置重启策略?
  • 你能提供更多关于你的用例的细节吗?我很好奇为什么您希望您的 Deployment child(ren) pod 在完成/失败时不重新启动。
  • 主要是为了触发我们现有的心跳警报。我想有一些方法可以通过警报管理器之类的东西来代替连续的 pod 重启或类似的东西,但我们还没有弄清楚。此应用程序将消息从队列中取出并进行处理,因此如果在处理消息时出现问题,它将继续从队列中取出相同的消息并再次崩溃,直到开发人员可以修复它。我们需要一个警报来告诉我们需要干预。

标签: kubernetes openshift


【解决方案1】:

对于restartPolicy,部署只允许Always。请参阅此文档https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#pod-template

也可以参考很久以前的问题报告。 https://github.com/kubernetes/kubernetes/issues/24725

只允许 .spec.template.spec.restartPolicy 等于 Always,如果未指定,则为默认值。

注意:对于 DaemonSets、ReplicaSets、ReplicationController 也是一样的。

【讨论】:

    猜你喜欢
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多