簡體   English   中英

現有 pod 上的 K8S cronjob 調度?

[英]K8S cronjob scheduling on existing pod?

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

我在這里看到兩件事你需要知道:

  1. 不幸的是,無法在現有 pod 上安排 cronjob。 Pod 是短暫的,作業需要完成。 無法判斷工作是否完成。 這是設計使然。

  2. 此外,為了能夠從一個 pod 看到文件到另一個 pod,您必須使用PVC 如果您的工作想要訪問您的應用程序創建的日志,則必須保留它。 在這里,您可以找到有關如何在 Kube.netes 集群上創建 ReadWriteMany PersistentVolumeClaims 的一些示例:

Kube.netes 允許我們使用 PersistentVolumeClaims 動態配置我們的 PersistentVolumes。 Pod 將這些聲明視為卷。 PVC 的訪問模式決定了有多少節點可以與其建立連接。 我們可以參考資源提供者的文檔,了解他們支持的訪問方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM