创建 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 个问题: