0

假设我在 Kubernetes 中有每 30 分钟(10:00、10:30、11:00 等)安排的 cronjob

还假设由于资源作业开始于 10:05 而不是 10:00 甚至是 11:00 而不是 10:00

是否有一个环境变量/选项可以在运行的 pod 内部知道该 pod 预计何时运行?

考虑从最后一小时下载所有内容的脚本 - 我希望选择利用预定时间的信息,而不是 2 个 pod 从 10:00 到 11:00 获取数据;

预期的问题 - 是的,我知道我可以做一些队列/编码来避免这个问题,但我只对普通的 kubernetes 可能性感兴趣。

4

1 回答 1

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

于 2019-05-07T15:09:46.500 回答