Ray*_*n D 1 cron amazon-web-services kubernetes
SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello * * * * * False 2 2m42s 5m6s
hello * * * * * False 3 6s 5m30s
hello * * * * * False 4 6s 6m30s
hello * * * * * False 3 46s 7m10s
hello * * * * * False 1 56s 7m20s
hello * * * * * False 2 6s 7m30s
hello * * * * * False 0 26s 7m50s
hello * * * * * False 1 7s 8m31s
hello * * * * * False 0 16s 8m40s
hello * * * * * False 1 7s 9m31s
hello * * * * * False 0 17s 9m41s
hello * * * * * False 1 7s 10m
Run Code Online (Sandbox Code Playgroud)
我运行 K8S cronjob 并使用以下命令观看它
kubectl get cronjobs --watch -n ns1
观看输出时,我注意到每分钟有两项工作
例如,见2m1s和2m11s
等等......
为什么 ?我想每分钟只运行一次,我该怎么做?
hello * * * * * False 0 <none> 4s
hello * * * * * False 1 7s 61s
hello * * * * * False 0 17s 71s
hello * * * * * False 1 7s 2m1s
hello * * * * * False 0 17s 2m11s
hello * * * * * False 1 7s 3m1s
hello * * * * * False 0 17s 3m11s
Run Code Online (Sandbox Code Playgroud)
这是docker文件
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
namespace: monitoring
spec:
schedule: "* * * * *" # run every minute
startingDeadlineSeconds: 10 # if a job hasn't starting in this many seconds, skip
concurrencyPolicy: Forbid # either allow|forbid|replace
successfulJobsHistoryLimit: 3 # how many completed jobs should be
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
Run Code Online (Sandbox Code Playgroud)
我还尝试更改时间表"*/1 * * * *”,但没有帮助。
更新
似乎每个cronjob都有这样的条目
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 1 0s 7s
Run Code Online (Sandbox Code Playgroud)
10秒后我看到
hello */1 * * * * False 0 1 0s 17s
Run Code Online (Sandbox Code Playgroud)
等等......一个活跃,第二个不
我认为你看错了。
CronJob正在生成 a Job,因此您应该查看作业日志:
$ kubectl get jobs
NAME DESIRED SUCCESSFUL AGE
hello-1558019160 1 1 2m
hello-1558019220 1 1 1m
hello-1558019280 1 1 14s
Run Code Online (Sandbox Code Playgroud)
如您所见,每分钟只生成一个。这项工作可能需要更长的时间才能完成,这是concurrencyPolicy要玩的时候:
该
.spec.concurrencyPolicy字段也是可选的。它指定如何处理此 cron 作业创建的作业的并发执行。规范可能仅指定以下并发策略之一:
Allow(默认):cron 作业允许并发运行作业Forbid:cron 作业不允许并发运行;如果是运行新作业的时间,而上一个作业运行尚未完成,则 cron 作业将跳过新作业运行Replace: 如果是运行新作业的时间,而上一个作业运行尚未完成,则 cron 作业将用新作业运行替换当前运行的作业运行请注意,并发策略仅适用于同一 cron 作业创建的作业。如果有多个 cron 作业,则始终允许它们各自的作业并发运行。
您还可以执行以下操作kubectl describe jobs hello-1558019160,您将看到事件:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 2m job-controller Created pod: hello-1558019160-fld74
Run Code Online (Sandbox Code Playgroud)
我正在运行你的.yaml,并没有看到Active工作更高1。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
4033 次 |
| 最近记录: |