gpt4 book ai didi

kubernetes - 在现有 pods 上进行K8S cronjob调度?

转载 作者:行者123 更新时间:2023-12-02 12:26:46 24 4
gpt4 key购买 nike

我的应用程序在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

最佳答案

我在这里看到两件事,您需要了解:

  • 不幸的是,无法在现有 pods 上安排cronjob。 pod 短暂存在,工作需要完成。无法判断该工作是否完成。这是设计使然。
  • 同样,为了能够查看从一个 pods 到另一个 pods 的文件,您还必须使用PVC。如果您的工作要访问它,则必须保留由您的应用程序创建的日志。在这里,您可以找到有关Create ReadWriteMany PersistentVolumeClaims on your Kubernetes Cluster的一些示例:

  • Kubernetes allows us to provision our PersistentVolumes dynamicallyusing PersistentVolumeClaims. Pods treat these claims as volumes. Theaccess mode of the PVC determines how many nodes can establish aconnection to it. We can refer to the resource provider’s docs fortheir supported access modes.

    关于kubernetes - 在现有 pods 上进行K8S cronjob调度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62948182/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com