Я хочу, чтобы задание запускалось каждые 15 минут, но оно последовательно запускается каждые 30 минут.
UPDATE:
Я упростил задачу, просто запустив:
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
Потребовалось 25 минут для запуска cronjob из командной строки и 7 минут для cronjob, созданного из yaml. Они оба, наконец, были запланированы в одно и то же время, так что, похоже, что etcd наконец проснулся и что-то сделал?
ОРИГИНАЛЬНЫЙ ВЫПУСК:
Когда я вхожу в активную работу, я вижу Status: Terminated: Completed
, но
Age: 25 minutes
или что-то большее, чем 15.
В журналах я вижу, что сценарий python, предназначенный для запуска, завершил свою последнюю операцию печати. Сценарий занимает около 2 минут, чтобы завершить на основе его выходного файла в s3. Тогда никакая новая работа не запланирована еще на 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: {}