根据 Kubernetes 作业和清理创建 Kubernetes Pod
Creating Kubernetes Pod per Kubernetes Job and Cleanup
我正在尝试根据以下要求创建 Kubernetes 作业:
- 每个作业最多只能创建一个pod
- 如果 pod 失败 - 作业将失败
- pod 的最长 运行 时间将为 1 小时
- 如果作业成功完成 - 删除作业
我尝试了以下配置:
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.parallelism) 可以设置为任何 non-negative 值。如果不指定,则默认为1。如果指定为0,则Job有效暂停,直到增加。
For Cronjobs could be helpful successfulJobsHistoryLimit: 0, failedJobsHistoryLimit: 0
this will
remove the PODs if it's get failed or success so no history or
POD will stays. So only one pod will get created or run.
- 如果 pod 失败 - 作业将失败
这将是默认行为,也是 restartPolicy: Never
因此它不会重新启动。
pod 的最长 运行 时间将为 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
我正在尝试根据以下要求创建 Kubernetes 作业:
- 每个作业最多只能创建一个pod
- 如果 pod 失败 - 作业将失败
- pod 的最长 运行 时间将为 1 小时
- 如果作业成功完成 - 删除作业
我尝试了以下配置:
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.parallelism) 可以设置为任何 non-negative 值。如果不指定,则默认为1。如果指定为0,则Job有效暂停,直到增加。
For Cronjobs could be helpful
successfulJobsHistoryLimit: 0, failedJobsHistoryLimit: 0
this will remove the PODs if it's get failed or success so no history or POD will stays. So only one pod will get created or run.
- 如果 pod 失败 - 作业将失败
这将是默认行为,也是 restartPolicy: Never
因此它不会重新启动。
pod 的最长 运行 时间将为 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