Kubernetes Cronjob只跑了一半时间

Pro*_*OXO 7 kubernetes

我希望每15分钟触发一次工作,但每30分钟就会触发一次.

更新:

我通过运行简化了问题:

kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster"
Run Code Online (Sandbox Code Playgroud)

正如文档中所述: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
Run Code Online (Sandbox Code Playgroud)

命令行创建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: ForbidConcurrency 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: {}
Run Code Online (Sandbox Code Playgroud)

Pro*_*OXO 2

在测试集群中运行这些作业后,我发现外部环境阻止它们按预期运行。

原始集群上有约 20k 个计划作业。Kubernetes 的内置调度程序尚无法一致地处理此卷。

可以可靠运行的最大作业数(在预期时间的一分钟内)可能取决于主节点的大小。