Как я могу указать часовой пояс cron в задании k8s cron?
Согласно документации (https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) я могу создать задание cron в k8s с указанием часового пояса, например:
"CRON_TZ=UTC 0 23 * * *"
Мой файл развертывания:
apiVersion: batch/v1
kind: CronJob
metadata:
name: scheduler
spec:
schedule: "CRON_TZ=UTC 0 23 * * *"
...
Во время развертывания я получаю сообщение об ошибке:
«Планировщик» CronJob недействителен: spec.schedule: Недействительное значение: «CRON_TZ=UTC 0 23 * * *»: Ожидается ровно 5 полей, найдено 6: CRON_TZ=UTC 0 23 * * *
Cron работает без точного часового пояса (
schedule: "0 23 * * *"
)
Версия кластера:
Kubernetes 1.21.2-do.2
- цифровой океан.
Что случилось?
2 ответа
Префикс будет недоступен до 1.22. Включение в документацию по выпуску 1.21 было ошибкой.
Изначально изменение, добавляющее синтаксис, было включено в 1.22 , но, похоже, кто-то запутался и переместил документацию на 1.21 . Поддерживая
CRON_TZ=<timezone>
синтаксис является случайным просто потому, что пакет, используемый для обработки расписания, был недавно обновлен до версии 3 , которая добавила поддержку синтаксиса. Пакет является ключевым компонентом, делающим возможным синтаксис, и является лишь частью 1.22.
Вы устанавливаете его как переменную среды.
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: busy
spec:
jobTemplate:
metadata:
name: busy
spec:
template:
spec:
containers:
- command:
- sleep
- "5"
image: alpine
name: busy
env:
- name: CRON_TZ
value: UTC
resources: {}
restartPolicy: OnFailure
schedule: '*/1 * * * *'