обмен данными между cronjob и pod

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

Я попытался создать постоянный том и заявить о постоянном томе для совместного использования данных, но когда cronjob загружает данные, они не отображаются в другом модуле, даже если том смонтирован.

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: download
spec:

  concurrencyPolicy: Forbid
  suspend: false 

  schedule: "* * * * *"
  jobTemplate:
    spec:

      template:
        spec:
          volumes:
            - name: downloaded-data-claim
              persistentVolumeClaim:
                claimName: downloaded-data-claim

#container and image is here where it downloads
kind: PersistentVolume
metadata:
  name: downloaded-data
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  claimRef:
    name: downloaded-data-claim
    namespace: default
  hostPath:
    path: "/tmp/"
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: downloaded-data-claim
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  volumeName: downloaded-data

а затем модуль монтирует том

      volumes:
        - name: downloaded-data-claim 
          presistentVolumeClaim: 
            claimName: downloaded-data-claim
        - name: output
          emptyDir: {}

      containers:

        - name: "rand"
          image: <filler>
          imagePullPolicy: <filler>
          volumeMounts:
            - name: downloaded-data-claim 
              mountPath: /input
            - name: output  
              mountPath: /output  
          resources:

person anon2156    schedule 03.06.2019    source источник


Ответы (1)


Убедитесь, что вы создали CronJob в правильном пространстве имен — там, где находятся ваш модуль и pv. Обратите внимание, если у вас есть доступ к каталогу, в котором вы хотите хранить свои данные.

На самом деле я не думаю, что есть другие возможности, кроме использования внешних сервисов. Наиболее полезными являются тома nfs. Но есть на базе сервисов и внешние nfs сервера. NFS означает сетевую файловую систему — это общая файловая система, к которой можно получить доступ по сети. NFS уже должна существовать — Kubernetes не запускает NFS, модули просто получают к ней доступ.

person Malgorzata    schedule 13.06.2019