使用 Kubernetes 安排构建

Scheduling a build using Kubernetes

文档 https://docs.openshift.com/container-platform/3.9/dev_guide/cron_jobs.html 提供了创建 cron 作业的详细信息。

要启动每 10 分钟执行一次构建的计划任务,我使用命令:

oc run run-build 161/my-app --image=myimage --restart=OnFailure --schedule='*/10 * * * *' 

哪个returns:

cronjob.batch/run-build created

但是作业启动失败:

pod日志显示:

Error: unknown command "161/my-app" for "openshift-deploy"
Run 'openshift-deploy --help' for usage.

我是否配置了错误地启动 cron 作业的命令 (oc run run-build 161/my-app --image=myimage --restart=OnFailure --schedule='*/10 * * * *')?

您正在尝试使用 161/my-app 命令覆盖图像 CMD/ARG(这似乎无效)。

你应该使用:

oc run run-build --image=myimage --schedule='*/10 * * * *' \
--restart=OnFailure \
--command -- <YOUR COMMAND HERE>

其中 run-build 是您创建的 cronjob 的名称。

如果您想使用默认的 CMD/ARG 构建在容器镜像中,只需省略 --command 标志及其值。

首先,要找到oc run的完整文档并不容易,所以让我们与source code

一起讨论

由于已经创建了cronjob.batch/run-build,构建是由kubernetes调度的,所以schedule部分可能没有问题。

现在的问题是图像 运行 失败的原因。

我们可以从日志中发现,161/my-app被识别为命令openshift-deploy的参数,应该是--image=myimage

中定义的CMD
Error: unknown command "161/my-app" for "openshift-deploy"
Run 'openshift-deploy --help' for usage.

您必须展开 161/my-app 并根据它更新命令。

在Docker图像中总是定义了一个CMD,因此我们必须决定是否使用默认CMD:

如果使用默认CMD并想修改参数:Check this example

oc run nginx --image=nginx -- <arg1> <arg2> ... <argN>

如果使用新的 CMD 和参数:Check this Example

oc run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>

我注意到你的问题中有两个信息,你可以在这里查看并在必要时更新问题:

  1. openshift-deploy部分可以参考here
  2. openshift-build部分,可参考here