创建 Job 时如何指定 OpenShift 镜像
How to specify OpenShift image when creating a Job
在 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 使用现有应用程序中的图像而不依赖于此类细节?
documentation 显示 image: perl
,但不清楚如何使用 Docker 图像 在 OpenShift 中构建和存储。
我了解到,除非您指定内部 OpenShift Docker 注册表的完整地址,否则您还不能将 ImageStream 与作业一起使用。相关 GitHub 个问题:
在 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 使用现有应用程序中的图像而不依赖于此类细节?
documentation 显示 image: perl
,但不清楚如何使用 Docker 图像 在 OpenShift 中构建和存储。
我了解到,除非您指定内部 OpenShift Docker 注册表的完整地址,否则您还不能将 ImageStream 与作业一起使用。相关 GitHub 个问题: