Как я могу указать часовой пояс 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 * * * *'
Другие вопросы по тегам