【问题标题】:K8S cronjob scheduling on existing pod?现有 pod 上的 K8S cronjob 调度?
【发布时间】:2020-11-06 22:02:16
【问题描述】:

我的应用程序在 K8S pod 中运行。我的应用程序将日志写入我已经在 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。
  • 您能否提供一个可重现的示例来说明您已经完成的工作?
  • 添加了清单示例。我收到错误 CronJob "discovery-cronjob" 无效:spec.jobTemplate.spec.template.spec.containers[0].volumeMounts[0].name: Not found: "shared-logs"

标签: kubernetes kubernetes-cronjob


【解决方案1】:

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

  1. 很遗憾,无法在现有 pod 上安排 cronjob。 Pod 是短暂的,工作需要完成。无法判断工作是否完成。这是设计使然。

  2. 此外,为了能够从一个 pod 看到文件到另一个 pod,您必须使用PVC。如果您的工作想要访问应用程序创建的日志,则必须保留它。在这里您可以找到一些如何Create ReadWriteMany PersistentVolumeClaims on your Kubernetes Cluster 的示例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2022-01-28
    • 2021-05-16
    • 2018-12-30
    • 2019-04-28
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多