在 OpenShift 3.3 下,我尝试使用oc
命令行工具创建作业(显然缺乏对作业创建的基于参数的支持),但我无法理解如何利用现有应用程序的图像流。例如,当我的应用程序进行 S2I 构建时,它会推送到app:latest
图像流。我希望我尝试创建的作业使用我的应用程序的图像流在新的作业特定 pod 的上下文中运行。我已经使用这个 YAML 准备了一个测试作业:
---
apiVersion: batch/v1
kind: Job
metadata:
name: myapp-test-job
spec:
template:
spec:
restartPolicy: Never
activeDeadlineSeconds: 30
containers:
- name: myapp
image: myapp:latest
command: ["echo", "hello world"]
当我使用创建上述作业oc create -f job.yaml
时,OpenShift 无法拉取myapp:latest
。如果我更改image: myapp:latest
为image: 172.30.194.141:5000/myapp/myapp:latest
(并在此过程中指定我的 OpenShift 实例的内部 Docker 注册表的主机和端口),这可行,但我宁愿不指定它,因为它似乎引入了对 OpenShift 实现细节的依赖。有没有办法让 OpenShift Jobs 使用现有应用程序中的图像而不依赖这些细节?
文档显示image: perl
,但不清楚如何使用在 OpenShift 中构建和存储的Docker映像。