具有多个作业计数器的 kubernetes
kubernetes with multiple jobs counter
我是 kubernetes 的新手,我正在尝试移动我们使用没有 k8s 的排队系统的当前管道。
我有一个 perl 脚本,它为我必须处理的每个样本生成一个批处理作业列表(yml 文件)。
然后我运行kubectl apply --recursive -f 16S_jobscripts/
比如每个样本需要按顺序处理,经过不同的处理
示例:
样品 A -> 清洁 -> 质量 -> some_calculation
样品 B -> 清洁 -> 质量 -> some_calculation
依此类推 300 个样本。
所以我们的想法是准备所有的 yml 文件并 运行 按顺序。这是有效的。
但是,使用这种方法我需要等待所有样本都被处理(假设所有清洁工作需要在我 运行 下一个工作质量之前完成)。
在这种情况下最好的方法是什么,运行 每个样本都是独立的??怎么样?
下面的 yml 描述了一项工作的一个样本。你可以看到我正在使用一个计数器 (mergereads-1 for sample1(A))
apiVersion: batch/v1
kind: Job
metadata:
name: merge-reads-1
namespace: namespace-id-16s
labels:
jobgroup: mergereads
spec:
template:
metadata:
name: mergereads-1
labels:
jobgroup: mergereads
spec:
containers:
- name: mergereads-$idx
image: .../bbmap:latest
command: ['sh', '-c']
args: ['
cd workdir &&
bbmerge.sh -Xmx1200m in1=files/trimmed/1.R1.trimmed.fq.gz in2=files/trimmed/1.R2.trimmed.fq.gz out=files/mergedpairs/1.merged.fq.gz merge=t mininsert=300 qtrim2=t minq=27 ratiomode=t &&
ls files/mergedpairs/
']
resources:
limits:
cpu: 1
memory: 2000Mi
requests:
cpu: 0.8
memory: 1500Mi
volumeMounts:
- mountPath: '/workdir'
name: db
volumes:
- name: db
persistentVolumeClaim:
claimName: workdir
restartPolicy: Never
如果我理解正确,你可以使用 parallel-jobs with a use of Job Patterns。
It does support parallel processing of a set of independent but
related work items.
也可以考虑使用Argo。
https://github.com/argoproj/argo
Argo Workflows is an open source container-native workflow engine for
orchestrating parallel jobs on Kubernetes. Argo Workflows is
implemented as a Kubernetes CRD (Custom Resource Definition).
如果有帮助,请告诉我。
我是 kubernetes 的新手,我正在尝试移动我们使用没有 k8s 的排队系统的当前管道。
我有一个 perl 脚本,它为我必须处理的每个样本生成一个批处理作业列表(yml 文件)。
然后我运行kubectl apply --recursive -f 16S_jobscripts/
比如每个样本需要按顺序处理,经过不同的处理
示例:
样品 A -> 清洁 -> 质量 -> some_calculation
样品 B -> 清洁 -> 质量 -> some_calculation
依此类推 300 个样本。
所以我们的想法是准备所有的 yml 文件并 运行 按顺序。这是有效的。
但是,使用这种方法我需要等待所有样本都被处理(假设所有清洁工作需要在我 运行 下一个工作质量之前完成)。
在这种情况下最好的方法是什么,运行 每个样本都是独立的??怎么样?
下面的 yml 描述了一项工作的一个样本。你可以看到我正在使用一个计数器 (mergereads-1 for sample1(A))
apiVersion: batch/v1
kind: Job
metadata:
name: merge-reads-1
namespace: namespace-id-16s
labels:
jobgroup: mergereads
spec:
template:
metadata:
name: mergereads-1
labels:
jobgroup: mergereads
spec:
containers:
- name: mergereads-$idx
image: .../bbmap:latest
command: ['sh', '-c']
args: ['
cd workdir &&
bbmerge.sh -Xmx1200m in1=files/trimmed/1.R1.trimmed.fq.gz in2=files/trimmed/1.R2.trimmed.fq.gz out=files/mergedpairs/1.merged.fq.gz merge=t mininsert=300 qtrim2=t minq=27 ratiomode=t &&
ls files/mergedpairs/
']
resources:
limits:
cpu: 1
memory: 2000Mi
requests:
cpu: 0.8
memory: 1500Mi
volumeMounts:
- mountPath: '/workdir'
name: db
volumes:
- name: db
persistentVolumeClaim:
claimName: workdir
restartPolicy: Never
如果我理解正确,你可以使用 parallel-jobs with a use of Job Patterns。
It does support parallel processing of a set of independent but related work items.
也可以考虑使用Argo。 https://github.com/argoproj/argo
Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Argo Workflows is implemented as a Kubernetes CRD (Custom Resource Definition).
如果有帮助,请告诉我。