【发布时间】: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 服务,除非我将其视为作业,否则我无法配置重启策略?
-
你能提供更多关于你的用例的细节吗?我很好奇为什么您希望您的
Deploymentchild(ren) pod 在完成/失败时不重新启动。 -
主要是为了触发我们现有的心跳警报。我想有一些方法可以通过警报管理器之类的东西来代替连续的 pod 重启或类似的东西,但我们还没有弄清楚。此应用程序将消息从队列中取出并进行处理,因此如果在处理消息时出现问题,它将继续从队列中取出相同的消息并再次崩溃,直到开发人员可以修复它。我们需要一个警报来告诉我们需要干预。
标签: kubernetes openshift