Планирование cronjob K8S для существующего модуля?

У меня есть приложение, работающее в модулях K8S. мое приложение записывает журналы по определенному пути, для которого у меня уже есть том, смонтированный на модуле. Мое требование - запланировать cronjob, который будет запускаться еженедельно один раз, читать журналы из этого тома модуля и генерировать базу отчетов на моем скрипте (который в основном фильтрует журналы на основе некоторых ключевых слов). и отправьте отчет по почте. К сожалению, я не уверен, как я буду действовать в этом направлении, так как я не смог получить ни одного документа или блога, в котором говорилось бы об интеграции conrjob в существующий модуль или том.

apiVersion: v1
kind: Pod
metadata:
name: webserver
spec:
  volumes:
  - name: shared-logs
    emptyDir: {}

  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: shared-logs
      mountPath: /var/log/nginx

   - name: sidecar-container
     image: busybox
     command: ["sh","-c","while true; do cat /var/log/nginx/access.log /var/log/nginx/error.log; sleep 30; done"]
     volumeMounts:
      - name: shared-logs
        mountPath: /var/log/nginx


apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: "discovery-cronjob"
labels:
  app.kubernetes.io/name: discovery
spec:
  schedule: "*/5 * * * *"
  jobTemplate:
  spec:
    template:
      spec:
        containers:
        - name: log-report
          image: busybox
          command: ['/bin/sh']
          args:  ['-c', 'cat /var/log/nginx/access.log > nginx.log']
          volumeMounts:
          - mountPath: /log
            name: shared-logs
        restartPolicy: Never

person Ruchi Dubey    schedule 17.07.2020    source источник
comment
Что вы уже пробовали?   -  person Wytrzymały Wiktor    schedule 17.07.2020
comment
Я попытался отредактировать развертывание и создать задание cron, используя тот же том, который настроен в модуле приложения.   -  person Ruchi Dubey    schedule 20.07.2020
comment
Не могли бы вы привести воспроизводимый пример того, что вы уже сделали?   -  person Wytrzymały Wiktor    schedule 21.07.2020
comment
Добавлен пример манифеста. Я получаю сообщение об ошибке CronJob discovery-cronjob недействителен: spec.jobTemplate.spec.template.spec.containers [0] .volumeMounts [0] .name: Not found: shared-logs   -  person Ruchi Dubey    schedule 21.07.2020


Ответы (1)


Я вижу здесь две вещи, которые вам необходимо знать:

  1. К сожалению, невозможно запланировать задание cron для существующего модуля. Стручки недолговечны, и работу нужно доделать. Было бы невозможно сказать, завершена работа или нет. Это сделано намеренно.

  2. Также, чтобы иметь возможность просматривать файлы из одного модуля в другой, вы должны использовать ПВХ. Журналы, созданные вашим приложением, должны сохраняться, если ваша работа хочет получить к ним доступ. Здесь вы можете найти несколько примеров того, как Создать ReadWriteMany PersistentVolumeClaims в кластере Kubernetes:

Kubernetes позволяет нам динамически подготавливать PersistentVolumes с помощью PersistentVolumeClaims. Стручки рассматривают эти претензии как объемы. Режим доступа PVC определяет, сколько узлов может установить с ним соединение. Мы можем обратиться к документации поставщика ресурсов, чтобы узнать о поддерживаемых режимах доступа.

person Wytrzymały Wiktor    schedule 27.07.2020