【发布时间】:2018-05-08 01:08:01
【问题描述】:
我希望每 15 分钟触发一次作业,但它始终每 30 分钟触发一次。
更新:
我已经通过运行简化了问题:
kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster"
这里的文档中指定:https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/
但作业仍然拒绝按时运行。
$ kubectl get cronjobs
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 1 5m 30m
hello2 */1 * * * * False 1 5m 12m
命令行创建的 cronjob 需要 25 分钟才能运行,而从 yaml 创建的 cronjob 需要 7 分钟。他们最终都被安排在同一时间,所以这几乎就像 etcd 终于醒来并做了什么?
原始问题:
当我深入到一个活跃的工作时,我看到 Status: Terminated: Completed 但是
Age: 25 minutes 或大于 15 的值。
在日志中,我看到要运行的 python 脚本已经完成了它的最终打印语句。根据 s3 中的输出文件,该脚本大约需要 2 分钟才能完成。然后再过 28 分钟就不会安排新作业了。
我尝试过不同的配置:
Schedule: */15 * * * * 和 Schedule: 0,15,30,45 * * * *
还有
Concurrency Policy: Forbid 和 Concurrency Policy: Replace
这里还有什么问题?
修改了标识行的完整配置:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
labels:
type: f-c
name: f-c-p
namespace: extract
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
jobTemplate:
metadata:
creationTimestamp: null
spec:
template:
metadata:
creationTimestamp: null
labels:
type: f-c
spec:
containers:
- args:
- /f_c.sh
image: identifier.amazonaws.com/extract_transform:latest
imagePullPolicy: Always
env:
- name: ENV
value: prod
- name: SLACK_TOKEN
valueFrom:
secretKeyRef:
key: slack_token
name: api-tokens
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
key: aws_access_key_id
name: api-tokens
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
key: aws_secret_access_key
name: api-tokens
- name: F_ACCESS_TOKEN
valueFrom:
secretKeyRef:
key: f_access_token
name: api-tokens
name: s-f-c
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Never
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
schedule: '*/15 * * * *'
successfulJobsHistoryLimit: 1
suspend: false
status: {}
【问题讨论】:
-
*/15 * * * *时间表应该可以正常工作,您可以发布您的 cronjob 规范吗?其他字段可能会影响它(例如startingDeadlineSeconds) -
当然,已添加。谢谢!
-
@Sosdoc 想再看看?即使是最简单的命令也不会按时运行
-
我会将这个:
imagePullPolicy: Always更改为这个:imagePullPolicy: IfNotPresent并寻找结果。 AFAIK 它花费更多时间在互联网上提取图像并因此陷入问题 -
@ProGirlXOXO 我检查了更改日志,但没有提到这个问题,我能提供的最好建议是尝试在主服务器上重新启动 docker 进程(也许是 api-server,尝试更改一些配置在 master 上强制重新加载)。
标签: kubernetes