首页 > 解决方案 > 当并行度设置> 1时如何获得1个initContainer

问题描述

我在下面定义的 Kubernetes 中有一份工作(为简洁起见,有一些遗漏)。设置了并行度和 N 次完成。我想要 1 个初始化容器来延迟并行容器的启动。当我按原样运行它时,每次出现的完成都会得到一个初始化容器。

apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  parallelism: 10
  completions: 10
  backoffLimit: 0
  template:
    spec:

      # I want 1 of these to run first
      initContainers:
      - name: init-container
        image: my/container:latest
        imagePullPolicy: Always
        command: ["init_script.sh"]

      # I want 10 of these to run in parallel once init_script.sh exits
      containers:
      - name: container
        image: my/container:latest
        imagePullPolicy: Always
        command: ["run_job.sh"]

      restartPolicy: Never

标签: kubernetes

解决方案


Kubernetes Jobs 是非常基础的,不提供任何具有调度依赖的高级调度机制。例如,在另一项工作完成后开始一项工作的能力。我的建议是在 Kubernetes 之上使用更高级的调度工具。您可以使用的开源软件很少。例如。

其他两种选择:

✌️


推荐阅读