Kubernetes 成功显示 Cron Job 但未获得所需结果
Kubernetes show Cron Job Successfully but when not getting desired result
当我 运行 将 cronjob 放入 Kubernetes 时,那个时候 cron 让我成功执行了 cron 但没有得到想要的结果
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: {{ $.Values.appName }}
namespace: {{ $.Values.appName }}
spec:
schedule: "* * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: test
image: image
command: ["/bin/bash"]
args: [ "test.sh" ]
restartPolicy: OnFailure
另外,我正在分享test.sh
#!/bin/sh
rm -rf /tmp/*.*
echo "remove done"
cronjob 运行ning 成功但是
当我检查容器时,文件没有被删除到 /tmp 目录
将test.sh
更改为:
#!/bin/sh
set -e
rm -rf /tmp/*.*
echo "remove done"
如果没有 -e
,您的 bash 脚本将 return 具有与其上一个命令相同的状态。在本例中,它是一个 echo
,因此它的状态将始终为 0
(成功)。如果 rm
命令失败,使用 set -e
将使您的脚本中止并失败。
此外,如果没有任何卷装载,此 cron 作业不会做任何有意义的事情。如果你想从另一个容器中删除一些文件,你需要在那个容器中使用 Cron(或者有一个带有 ReadWriteMany
的卷)。
Cronjob 运行 在一个特定的容器中,如果你想从另一个容器中删除文件或目录,它将不起作用。
如果您的主容器 运行正在部署,而当您的作业或 cronjob 被触发时,它会创建一个 新容器 (POD) 有独立的文件系统和挂载选项。
如果你想实现这种情况,你必须使用 PVC 和 ReadWriteMany,其中 多个容器 (POD) 可以与您的 单个 PVC 连接并共享文件系统。
通过这种方式,您的 cronjob 容器 (POD) 开始使用现有的 PVC 文件系统,您可以使用 job 或 cronjobs 删除目录。
将相同的 PVC 挂载到 cronjob 容器和主容器,它就会工作。
您需要将持久卷附加到您正在使用的 pod 和 cronjob 上,以便它可以在脚本执行时删除所有文件。您需要在脚本中相应地安装和提供路径。要添加 kubernetes cronjobs,请仔细阅读
当我 运行 将 cronjob 放入 Kubernetes 时,那个时候 cron 让我成功执行了 cron 但没有得到想要的结果
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: {{ $.Values.appName }}
namespace: {{ $.Values.appName }}
spec:
schedule: "* * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: test
image: image
command: ["/bin/bash"]
args: [ "test.sh" ]
restartPolicy: OnFailure
另外,我正在分享test.sh
#!/bin/sh
rm -rf /tmp/*.*
echo "remove done"
cronjob 运行ning 成功但是 当我检查容器时,文件没有被删除到 /tmp 目录
将test.sh
更改为:
#!/bin/sh
set -e
rm -rf /tmp/*.*
echo "remove done"
如果没有 -e
,您的 bash 脚本将 return 具有与其上一个命令相同的状态。在本例中,它是一个 echo
,因此它的状态将始终为 0
(成功)。如果 rm
命令失败,使用 set -e
将使您的脚本中止并失败。
此外,如果没有任何卷装载,此 cron 作业不会做任何有意义的事情。如果你想从另一个容器中删除一些文件,你需要在那个容器中使用 Cron(或者有一个带有 ReadWriteMany
的卷)。
Cronjob 运行 在一个特定的容器中,如果你想从另一个容器中删除文件或目录,它将不起作用。
如果您的主容器 运行正在部署,而当您的作业或 cronjob 被触发时,它会创建一个 新容器 (POD) 有独立的文件系统和挂载选项。
如果你想实现这种情况,你必须使用 PVC 和 ReadWriteMany,其中 多个容器 (POD) 可以与您的 单个 PVC 连接并共享文件系统。
通过这种方式,您的 cronjob 容器 (POD) 开始使用现有的 PVC 文件系统,您可以使用 job 或 cronjobs 删除目录。
将相同的 PVC 挂载到 cronjob 容器和主容器,它就会工作。
您需要将持久卷附加到您正在使用的 pod 和 cronjob 上,以便它可以在脚本执行时删除所有文件。您需要在脚本中相应地安装和提供路径。要添加 kubernetes cronjobs,请仔细阅读