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
Im runnig K8S cronjob和Im使用以下命令对其进行观看
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
这是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
我也尝试更改时间表,例如"*/1 * * * *”
,但无济于事。
更新
似乎每个cronjob都有这样的条目
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 1 0s 7s
10秒后,我看到
hello */1 * * * * False 0 1 0s 17s
依此类推... 一个处于活动状态,第二个不处于活动状态
答案 0 :(得分:1)
我认为您在看错东西。
CronJob
正在产生Job
,因此您应该查看作业日志:
$ kubectl get jobs
NAME DESIRED SUCCESSFUL AGE
hello-1558019160 1 1 2m
hello-1558019220 1 1 1m
hello-1558019280 1 1 14s
如您所见,每分钟仅产生一个。
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
我正在运行您的.yaml
,但没有发现Active
的工作高于1
。
希望这会有所帮助。