如何解决设置并行度> 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上使用更高级的调度工具。几乎没有开源可以使用。例如。
- Volcano-例如,您可以使用
TaskCompleted
事件。 - Airflow-您可以直接从工具中安排广告连播,并构建您的DAG (Directed Acyclic Graph).
- 等等。
其他两种选择:
- 您甚至可以创建自己的custom scheduler。
- 您可以建立自己的operator,根据状态开始常规工作。
✌️
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。