Скопируйте файл из модуля задания cron в локальный каталог в AKS

Я создал задание cron, которое запускается каждые 60 минут. В контейнере задания я смонтировал том emptyDir как подробные журналы. В моем контейнере я пишу файл csv по пути detailed-logs\logs.csv.

Я пытаюсь скопировать этот файл из модуля на локальный компьютер с помощью kubectl cp podname:detailed-logs\logs.csv \k8slogs\logs.csv, но возникает ошибка:

путь "подробные журналы \ logs.csv" не найден (нет такого файла или каталога).

После успешного выполнения задания модуль, созданный заданием, переходит в состояние completed, может ли это быть проблемой?


person Tarun    schedule 20.02.2019    source источник


Ответы (1)


Файл, о котором вы говорите, не будет сохраняться после завершения работы модуля. Что вы можете сделать, так это сделать резервную копию файла во время выполнения задания cron. Я могу предложить два решения: либо прикрепить постоянный том к модулю заданий, либо загрузить файл куда-нибудь во время выполнения задания.

ИСПОЛЬЗУЙТЕ ПОСТОЯННЫЙ ГРОМКОСТЬ

Здесь вы можете создать PV с помощью быстрой readWriteOnce заявки на постоянный том:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

Затем вы можете установить его на модуль, используя следующее:

      ...
        volumeMounts:
        - name: persistent-storage
          mountPath: /detailed-logs
      volumes:
      - name: persistent-storage
        persistentVolumeClaim:
          claimName: my-pvc
      ...

ЗАГРУЗИТЬ ФАЙЛ

Я выполняю задание в контейнере, в котором установлено aws-cli, а затем сохраняю мой файл на AWS S3, вы можете выбрать другую платформу:

apiVersion: v1
kind: ConfigMap
metadata:
  name: backup-sh
data:
  backup.sh: |-
    #!/bin/bash
    aws s3 cp /myText.txt s3://bucketName/
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: s3-backup
spec:
  schedule: "0 0 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: aws-kubectl
            image: expert360/kubectl-awscli:v1.11.2
            env:
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: s3-creds
                  key: access-key-id
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: s3-creds
                  key: secret-access-key
            command:
              - /bin/sh
              - -c
            args: ["sh /backup.sh"]
            volumeMounts:
            - name: backup-sh
              mountPath: /backup.sh
              readOnly: true
              subPath: backup.sh
          volumes:
          - name: backup-sh
            configMap:
              name: backup-sh
          restartPolicy: Never
person cookiedough    schedule 20.02.2019
comment
Я не могу использовать постоянный том или внешнее хранилище, как было предложено. Есть ли способ использовать непостоянный том? Задание Cron хранит историю предыдущих заданий, поэтому связан ли с ним какой-либо объем. - person Tarun; 21.02.2019
comment
Взгляните на эту ссылку для использования тома hostPath. Цитируя текст, том hostPath монтирует файл или каталог из файловой системы хост-узла в ваш Pod. @Tarun - person cookiedough; 21.02.2019