在 kubernetes 中同步外部文件系统上的文件的计划作业

问题描述

有没有一种方法可以运行计划作业,以便在已安装的共享卷上定期提取一些文件

我尝试过 cronjob,但显然它不应该使用外部文件系统

提前致谢。

解决方法

CronJobs 应该能够像任何其他产生 Pod 的资源一样挂载 PVC,您只需在 volumeMounts 模板下添加一个 container 部分,然后在 volume 下添加一个 template 部分{1}}。

类似于以下内容:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: example-name
spec:
  schedule: '0 * * * *'
  jobTemplate:
    spec:
      completions: 1
      template:
        spec:
          containers:
          - name: example-container-name
            image: your-docker-repo/your-docker-image:the-tag
            volumeMounts:
            - name: data
              mountPath: /internal/path/to/mount/pvc
          volumes:
          - name: data
            persistentVolumeClaim:
              claimName: example-claim

这应该会在 Pod 生成时将 example-claim PVC 挂载到 CronJob 的 Pod。

基本上有两个部分..在每个容器volumeMounts下列出了容器挂载的volumes,在哪个路径以及一些更多的配置。所有 volumeMounts 条目都应该在卷部分中定义一次,这些部分将名称(充当规范的键)和声明或空目录相关联。

至于创建 PVC,让我链接您的文档 (https://kubernetes.io/docs/concepts/storage/persistent-volumes/)

您想要做的基本上是创建一个指向您挂载的共享卷的持久卷(它是什么,nfs 存储?声明略有变化,具体取决于您要挂载的内容),然后声明( PVC)在将绑定到 PV 的 CronJob 的相同命名空间中。

如果您不确定各种对象的正确缩进或放置位置,请查看实用的 API 参考文档 (https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#cronjob-v1beta1-batch)