根据Kubernetes作业和清理创建KubernetesPod



我正在尝试创建具有以下要求的Kubernetes作业:

  1. 每个作业最多只能创建一个pod
  2. 如果pod失败,作业将失败
  3. 吊舱的最大运行时间为1小时
  4. 如果作业成功完成-删除作业

我尝试了以下配置:

apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
containers:
- name: {{ .Release.Name }}
image: {{ .Values.image }}
env:
- name: ARG1
value: {{ required "ARG1 is mandatory" .Values.ENV.ARG1 }}
- name: GITLAB_USER_EMAIL
value: {{ .Values.ENV.GITLAB_USER_EMAIL }}
envFrom:
- secretRef:
name: {{ .Release.Name }}
restartPolicy: Never
backoffLimit: 1
activeDeadlineSeconds: 3600

但它并没有按预期工作,有什么想法吗?谢谢

  • 每个作业最多只能创建一个pod

请求的并行度(.spec.pllelism(可以设置为任何非负值。如果未指定,则默认为1。如果将其指定为0,则作业将有效地暂停,直到其增加。

对于Cronjobs可能有帮助successfulJobsHistoryLimit: 0, failedJobsHistoryLimit: 0,这将如果失败成功,则删除POD,因此没有历史记录或POD将保留。因此,只有一个pod会被创建或运行。

  • 如果pod失败,作业将失败

这将是默认行为,也是restartPolicy: Never,因此它不会重新启动。

  • 吊舱的最大运行时间为1小时

    activeDeadlineSeconds: 3600您已经添加

  • 如果作业成功完成-删除作业

ttlSecondsAfterFinished: 100将解决您的问题。

apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
containers:
- name: {{ .Release.Name }}
image: {{ .Values.image }}
env:
- name: ARG1
value: {{ required "ARG1 is mandatory" .Values.ENV.ARG1 }}
- name: GITLAB_USER_EMAIL
value: {{ .Values.ENV.GITLAB_USER_EMAIL }}
envFrom:
- secretRef:
name: {{ .Release.Name }}
restartPolicy: Never
backoffLimit: 1
ttlSecondsAfterFinished: 100
activeDeadlineSeconds: 3600

最新更新