首页 > 解决方案 > Kubernetes CronJob 运行 Python 脚本

问题描述

我正在尝试通过 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,我知道不支持相对路径,所以我硬编码了路径,但后来我找不到我的主目录,我试着ls /home/在那儿做我的文件夹名称不可见,因此我无法访问我的项目存储库。

最初我打算运行可以执行以下操作的 bash 脚本:

  1. 安装要求pip install requirements.txt
  2. 然后运行 ​​Python 脚本

但是我不确定如何使用 kubernetes 做到这一点,这让我很困惑

简而言之,我希望能够运行 k8s CronJob,它可以通过首先安装要求然后运行它来运行 Python 脚本

标签: pythonkubernetes

解决方案


启动脚本 ./main.py 在哪里?它是否存在于图像中。您需要使用 python:3.6-slim 作为基础镜像来构建新镜像,并将您的 python 脚本添加到 PATH。那么你就可以从 k8s CronJob 运行它了


推荐阅读