Kubernetes K8S在现有pod上的作业调度?

Kubernetes K8S在现有pod上的作业调度?,kubernetes,kubernetes-cronjob,Kubernetes,Kubernetes Cronjob,我的应用程序运行在K8S吊舱中。我的应用程序将日志写入到pod上已装载卷的特定路径。我的需求是安排cronjob,它将每周触发一次,从pod卷读取日志,并根据我的脚本生成报告(基本上是根据一些关键字过滤日志)。并通过邮件发送报告。 不幸的是,我不知道我将如何继续进行这项工作,因为我无法获得任何关于将conrjob集成到现有pod或卷的文档或博客 apiVersion: v1 kind: Pod metadata: name: webserver spec: volumes: - name

我的应用程序运行在K8S吊舱中。我的应用程序将日志写入到pod上已装载卷的特定路径。我的需求是安排cronjob,它将每周触发一次,从pod卷读取日志,并根据我的脚本生成报告(基本上是根据一些关键字过滤日志)。并通过邮件发送报告。 不幸的是,我不知道我将如何继续进行这项工作,因为我无法获得任何关于将conrjob集成到现有pod或卷的文档或博客

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

我在这里看到了两件你需要知道的事情:

  • 不幸的是,无法在现有pod上安排cronjob。豆荚是短暂的,工作需要完成。要知道这项工作是否完成是不可能的。这是故意的

  • 此外,为了能够从一个pod到另一个pod查看文件,您必须使用。如果作业想要访问应用程序创建的日志,则必须将其持久化。在这里,您可以找到一些如何:

  • Kubernetes允许我们动态地配置PersistentVolume 使用PersistentVolumeClaims。POD将这些声明视为卷。这个 PVC的访问模式决定了有多少节点可以建立一个 连接到它。我们可以参考资源提供商的文档了解更多信息 他们支持的访问模式


    我在这里看到了两件你需要知道的事情:

  • 不幸的是,无法在现有pod上安排cronjob。豆荚是短暂的,工作需要完成。要知道这项工作是否完成是不可能的。这是故意的

  • 此外,为了能够从一个pod到另一个pod查看文件,您必须使用。如果作业想要访问应用程序创建的日志,则必须将其持久化。在这里,您可以找到一些如何:

  • Kubernetes允许我们动态地配置PersistentVolume 使用PersistentVolumeClaims。POD将这些声明视为卷。这个 PVC的访问模式决定了有多少节点可以建立一个 连接到它。我们可以参考资源提供商的文档了解更多信息 他们支持的访问模式


    您已经尝试过什么?我尝试过使用在应用程序pod中配置的相同卷编辑部署和创建cronjob。您能否提供一个可复制的示例,说明您已经做了什么?添加了清单示例。我收到错误:CronJob“发现CronJob”无效:spec.jobTemplate.spec.template.spec.containers[0]。volumeMounts[0]。名称:未找到:“共享日志”您已经尝试过什么?我尝试过使用在应用程序pod中配置的相同卷编辑部署和创建cronjob。您能否提供一个可复制的示例,说明您已经做了什么?添加了清单示例。我收到错误:CronJob“发现CronJob”无效:spec.jobTemplate.spec.template.spec.containers[0]。volumeMounts[0]。名称:未找到:“共享日志”