有没有办法知道应该在什么时间执行pod?

时间:2019-05-07 14:14:28

标签: kubernetes kubernetes-cronjob

假设我在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可能性感兴趣。

1 个答案:

答案 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中看到此示例和其他示例。