我有一个 Kubernetes Cron Job 每 5 分钟运行一次计划任务。我想确保在下一个计划时间创建新的 pod 时,较早的 pod 应该已终止。较早的 Pod 应在创建新 Pod 之前终止。 Kubernetes 可以在创建新的 pod 之前终止较早的 pod 吗?
我的yaml是:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: my-scheduled
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
spec:
containers:
- name: cmm-callout
env:
- name: SCHEDULED
value: "true"
livenessProbe:
httpGet:
path: /myapp/status
port: 7070
scheme: HTTPS
initialDelaySeconds: 120
timeoutSeconds: 30
periodSeconds: 120
image: gcr.io/projectid/folder/my-app:9.0.8000.34
restartPolicy: Never
如何确保在创建新 Pod 之前终止较早的 Pod?
如果我正确理解你的情况(早期的 Pod 应该在创建新的 Pod 之前终止)。
1。请用规格.jobTemplate.规格.activeDeadlineSeconds反而。
一旦Job到达,通过设置此参数活动截止时间- 所有正在运行的 Pod 将被终止,作业状态将变为类型:失败,原因为 DeadlineExceeded。
example:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
activeDeadlineSeconds: 60
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster && sleep 420
restartPolicy: Never
2。第二种解决方案是设置并发策略。并将当前正在运行的作业替换为新作业。
example:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/2 * * * *"
concurrencyPolicy: Replace
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster && sleep 420
restartPolicy: Never
资源:
终止工作 https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#job-termination-and-cleanup
并发策略 https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#concurrency-policy
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)