现有Pod的Cronjob

时间:2017-06-29 00:35:43

标签: openshift openshift-origin openshift-enterprise

我在Openshift 3上运行了一个django应用程序。我需要定期运行某些manage.py命令。在Openshift 2中我使用了Cron齿轮,现在在Openshift 3中我想使用CronJob吊舱类型。

我想为cronjob创建一个pod,使用与django app正在使用相同的源,但不要暴露它。

例如:

W1 - Django app D1 - Postgres DB

M1 - 用于manage.py工作的django应用程序,作为cronjob pod运行。

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

您想使用预定作业。

请注意,此时(OpenShift 3.5),您必须使用batch/v2alpha1作为API版本。请注意显示旧版本标签的过时文档。

我不确定如何轻松引用与使用S2I构建器构建应用程序时生成的现有图像流关联的图像,并且您希望使用相同的图像。基础Kubernetes对象需要您引用映像注册表中的图像。因此,您需要通过查看图像流并手动复制图像注册表IP和图像详细信息来解决这个问题。

更新1

请参阅:

有关如何使用OpenShift 3.6的详细信息,您可以自动解析图像流名称。该机制在3.6中仍然是alpha状态,但确实有效。

答案 1 :(得分:0)

我已经让它在YAML中指定图像名称,但后来试图让它作为模板的一部分工作,但在尝试在此服务器上使用批处理/ v1版本时遇到错误

  

无法创建cron作业“djangomanage”。此服务器不支持用于CronJob类的API版本批处理/ v1。

我的模板代码是

  - apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: djangomanage
    spec:
      schedule: "*/5 * * * *"  
      jobTemplate:             
        spec:
          template:
            spec:
              containers:
              - name: djangomanage
                image: '${NAME}:latest'
                env:
                  - name: APP_SCRIPT
                    value: "/opt/app-root/src/cron.sh"
              restartPolicy: Never

CRON.SH

python /opt/app-root/src/manage.py 

答案 2 :(得分:0)

您需要使用以下内容更新第1行:

- apiVersion: batch/v1beta1

请参见下面的链接: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#cronjob-v1beta1-batch