假设我在Kubernetes中安排了cronjob,计划每30分钟(10:00、10:30、11:00等)
还要假设由于资源原因,作业从10:05开始而不是10:00甚至是11:00而不是10:00
正在运行的pod内是否有一个环境变量/选项可知?应该在哪个时间运行该pod?
考虑从上一小时下载所有内容的脚本-而不是2个pod从10:00到11:00获取数据,我希望选择利用计划时间信息;
预期的问题-是的,我知道我可以做一些队列/编码来避免这个问题,但是我只对普通的kubernetes可能性感兴趣。
答案 0 :(得分:0)
如果您进行kubectl describe cj <name_of_cronjob>
,它将显示Last Schedule Time
Last Schedule Time: Tue, 07 May 2019 16:58:00 +0200
您还将看到以下事件:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 2m25s cronjob-controller Created job hello-1
Normal SawCompletedJob 2m15s cronjob-controller Saw completed job: hello-1
Normal SuccessfulCreate 85s cronjob-controller Created job hello-2
Normal SawCompletedJob 75s cronjob-controller Saw completed job: hello-2
Normal SuccessfulCreate 24s cronjob-controller Created job hello-3
Normal SawCompletedJob 14s cronjob-controller Saw completed job: hello-3
您可以在date
的开头添加CronJob
作为命令,它会在启动时在日志中告诉您。
Yaml可能如下所示:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
您可以检查日志,该日志将显示正在执行的data
。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-1-nrf5b 0/1 Completed 0 3m
hello-2-kk8t5 0/1 Completed 0 119s
hello-3-tpffz 0/1 Completed 0 59s
$ kubectl logs pods/hello-2-kk8t5
Tue May 7 14:58:09 UTC 2019
Hello from the Kubernetes cluster
您可以在Kubernetes文档Running Automated Tasks with a CronJob中看到此示例和其他示例。