如何在 Kubernetes cronjob 中执行脚本 shell

问题描述 投票:0回答:2

我想使用 CronJob 在 Kubernetes 内运行 shell 脚本,这是我的 CronJon.yaml 文件:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - /home/admin_/test.sh
          restartPolicy: OnFailure

CronJob 已创建( kubectl apply -f CronJob.yaml ) 当我获得 cronjob 列表时,我可以看到 cron 作业( kubectl get cj ),当我运行“kubectl get pods”时,我可以看到 pod 正在创建,但 pod 崩溃了。 谁能帮我学习如何在 Kubernetes 中创建 CronJob 吗?

kubernetes cron
2个回答
7
投票

正如评论中正确指出的那样,您需要提供脚本文件才能通过您的

CronJob
执行它。您可以通过将文件安装到中来做到这一点。例如,您的
CronJob
可能如下所示:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - /myscript/test.sh
            volumeMounts:
            - name: script-dir
              mountPath: /myscript
          restartPolicy: OnFailure
          volumes:
          - name: script-dir
            hostPath:
              path: /path/to/my/script/dir
              type: Directory

上面的示例展示了如何使用 hostPath 类型的卷来挂载脚本文件。


0
投票

我需要做同样的任务。有些事情悬而未决。您可以分享您的 yaml 文件来探索吗?

© www.soinside.com 2019 - 2024. All rights reserved.