【问题标题】:How to execute script shell in Kubernetes cronjob如何在 Kubernetes cronjob 中执行脚本 shell
【发布时间】:2021-06-21 21:31:30
【问题描述】:

我想使用 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?

【问题讨论】:

  • 可以添加test.sh的代码吗?你也可以运行kubectl logs pod_name 来查看日志。
  • kubectl describe pod pod-name 输出什么?
  • @KrishnaChaurasia 添加了图片
  • 您使用busybox 作为图像并且您没有以任何方式提供文件。你希望它在那里?
  • 你好@AminPashna。请以文本而不是屏幕截图的形式提供必要的详细信息。很难用这样的输出进行分析。

标签: kubernetes cron


【解决方案1】:

正如 cmets 中正确指出的那样,您需要提供脚本文件才能通过您的 CronJob 执行它。您可以通过在volume 中安装文件来做到这一点。例如,您的 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
            - /home/admin_/test.sh
            volumeMounts:
            - name: script-dir
              mountPath: /myscript
          restartPolicy: OnFailure
          volumes:
          - name: script-dir
            hostPath:
              path: /path/to/my/script/dir
              type: Directory

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

【讨论】:

  • 谢谢!我试试看
  • 感谢您的跟进,是的,非常感谢您的帮助,我终于可以执行 .sh 文件并创建一个 CronJob 来运行它。感谢您的帮助
猜你喜欢
  • 2016-11-09
  • 2021-12-08
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2020-09-15
  • 2011-08-18
  • 2020-12-23
  • 1970-01-01
相关资源
最近更新 更多