首页 > 解决方案 > 从部署配置中配置 pod 的重启策略

问题描述

我们正在使用 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“my-deployment-config”无效:spec.template.spec.restartPolicy:不支持的值:“Never”:支持的值:“Always”

Kubernetes 文档以及有关重启策略的Openshift 文档显示,可以使用 Always、Never 或 OnFailure 配置 pod。

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

标签: kubernetesopenshift

解决方案


部署只允许 Always 用于 restartPolicy。请参阅此文档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 也是一样的情况。


推荐阅读