我试图通过Kubernetes CronJob调度Python脚本,但由于某种原因,我无法理解如何做到这一点。我能够运行像echo Hello World
这样的简单脚本,但这不是我想要的
我尝试使用这个规范:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: test
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: "Forbid"
failedJobsHistoryLimit: 10
startingDeadlineSeconds: 600 # 10 min
jobTemplate:
spec:
backoffLimit: 0
activeDeadlineSeconds: 3300 # 55min
template:
spec:
containers:
- name: hello
image: python:3.6-slim
command: ["python"]
args: ["./main.py"]
restartPolicy: Never
但是我无法运行它,因为main.py找不到www.example.com,我知道不支持相对路径,所以我硬编码了路径,但是我找不到我的主目录,我试着做ls /home/
,在那里我的文件夹名称不可见,所以我无法访问我的项目存储库。
最初我打算运行bash脚本,它可以做:
1.按pip install requirements.txt
安装要求
1.然后运行Python脚本
但是我不确定我怎么能用kubernetes做到这一点,这对我来说太混乱了
简而言之,我希望能够运行k8s CronJob,它可以通过首先安装需求然后运行它来运行Python脚本
2条答案
按热度按时间dohp0rv51#
启动脚本在哪里。/main.py位于?它是否存在于映像中。您需要使用python:3.6-slim作为基础映像构建新映像,并将python脚本添加到PATH中。那么你就可以从k8s CronJob上运行它
dw1jzc5e2#
看起来这个答案可以帮助你:Kubernetes: Is it possible to mount volumes to a container running as a CronJob?
如果你不想构建自己的docker镜像,你可以将脚本挂载为Volume。
这里有一个例子