我在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运行。
感谢任何帮助。
答案 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