KubeGene
什么是KubeGene
KubeGene致力于使基因组测序过程变得简单、便携和可扩展。它为kubernetes上的基因组测序提供了完整的解决方案,支持主流的生物基因组测序场景,如DNA、RNA和液体活检。KubeGene是基于轻量级容器技术和官方标准算法。通过使用KubeGene,你可以做出一个灵活的、可定制的基因组测序过程。
优势
通用的工作流程设计语法
KubeGene提供了一套完整的基因组测序工作流程语法,与特定的分析工具解耦。它需要很低的学习成本来学习如何编写和使用工作流程。你可以轻松地将基因组测序业务迁移到KubeGene。
为生物测序行业量身定做的工作流程
工作流的语法是通过比较不同的基因组测序场景而设计的。同时,它尽可能地保留了用户的传统使用习惯,更贴近用户的使用场景。
更有效的资源使用
KubeGene使用容器来运行基因组测序业务。与传统的使用虚拟机的基因组测序解决方案相比,KubeGene使资源使用更加高效,避免了资源闲置。
根据需求进行扩展
通过使用KubeGene,Kubernetes可以根据你的基因组测序工作负荷自动扩展你的集群。同时,你也可以轻松地手动扩展kubernetes集群。它可以节省你的生产成本。
前提条件
- Kubernetes 1.10以上
- golang 1.10以上
如果你有旧版本的Kubernetes,我们建议先升级Kubernetes,然后再使用kubeGene。
如果你使用1.10的kubernetes,你应该确保功能门CustomResourceSubresources
你可以使用minikube来快速建立一个本地的kubernetes集群。欲了解更多信息,你可以使用minikube。
部署KubeGene
KubeGene有两个主要组件:
-
Kubedag:Kubedag是Kubernetes平台上的一个DAG工作流引擎。它致力于使基因测序工作流在容器中轻松执行。
-
genectl. genectl是一个命令行接口,用于对KubeGene运行命令。
克隆代码
首先,制作工作目录:
$ mkdir -p $GOPATH/src/kubegene.io
进入工作目录,克隆代码:
$ git clone https://github.com/kubegene/kubegene.git
安装kubedag
我们已经提供了YAML文件,其中包含了运行kubedag所需的所有API对象,你可以使用以下命令轻松部署kubedag。
$ ./hack/local-up-kubedag.sh
kubedag会自动创建一个Kubernetes自定义资源定义(CRD):
$ kubectl get customresourcedefinitions
NAME AGE
executions.execution.kubegene.io 2s
更多信息,你可以参见Kugedag。
安装genectl
编译genectl
$ make genectl
进入bin目录,使genectl二进制文件可执行:
$ chmod +x ./genectl
把二进制文件移到你的PATH中:
$ sudo mv ./genectl /usr/local/bin/genectl
关于如何使用genectl,你可以参见genectl。
建立你的工具库
一个工具是一个生物信息学软件的镜像包,基因组测序使用。当你使用genectl提交你的工作流程时,你应该指定你的工具 repo地址,它可以是一个目录或URL,如果它是一个URL,它必须指向一个指定的工具文件。默认的工具库是本地目录"/${home}/kubegene/tools")。你可以编写你自己的工具并把它们放在工具库中。关于如何编写你的工具yaml,你可以参见工具。
编写并提交你的工作流程
我们已经定义了一套完整的基因测序工作流程语法。它尽可能地保持了用户的传统使用习惯,并且需要很低的学习成本来学习如何编写和使用工作流。关于如何编写工作流,你可以看工作流语法。
在示例目录中,我们有几个工作流yaml的例子。你可以在example/simple-sample 目录中看到一个简单的例子。
要提交工作流,你需要先创建存储卷:
$ kubectl create -f example/simple-sample/sample-pv.yaml
persistentvolume "sample-pv" created
$ kubectl create -f example/simple-sample/sample-pvc.yaml
persistentvolumeclaim "sample-pvc" created
然后你可以通过以下命令提交工作流:
$ genectl sub workflow example/simple-sample/simple-sample.yaml
The workflow has been submitted successfully! And the execution has been created.
Your can use the follow command to query the status of workflow execution.
genectl get execution execution-bf0dc -n default
or use the follow command to query the detail info for workflow execution.
genectl describe execution execution-bf0dc -n default
or use the follow command to delete the workflow execution.
genectl delete execution execution-bf0dc -n default
查询工作流的详细执行状态:
$ genectl describe execution execution-bf0dc -n default
Namespace: default
Labels: <none>
Annotations: <none>
Phase: Succeeded
Message: execution has run successfully
workflow:
jobprepare(total: 1; success: 1; failed: 0; running: 0; error: 0):
Subtask Phase Message
------- ----- -------
execution-bf0dc.jobprepare.0 Succeeded success
joba(total: 2; success: 2; failed: 0; running: 0; error: 0):
Subtask Phase Message
------- ----- -------
execution-bf0dc.joba.0 Succeeded success
execution-bf0dc.joba.1 Succeeded success
jobb(total: 3; success: 3; failed: 0; running: 0; error: 0):
Subtask Phase Message
------- ----- -------
execution-bf0dc.jobb.0 Succeeded success
execution-bf0dc.jobb.1 Succeeded success
execution-bf0dc.jobb.2 Succeeded success
jobc(total: 2; success: 2; failed: 0; running: 0; error: 0):
Subtask Phase Message
------- ----- -------
execution-bf0dc.jobc.1 Succeeded success
execution-bf0dc.jobc.0 Succeeded success
jobd(total: 2; success: 2; failed: 0; running: 0; error: 0):
Subtask Phase Message
------- ----- -------
execution-bf0dc.jobd.1 Succeeded success
execution-bf0dc.jobd.0 Succeeded success
jobfinish(total: 1; success: 1; failed: 0; running: 0; error: 0):
Subtask Phase Message
------- ----- -------
execution-bf0dc.jobfinish.0 Succeeded success
功能上的优势
KubeGene已经提供了运行基因组测序工作流程的基本功能。更多的功能将被添加:
- 支持其他工作流引擎,如argo等
- 支持用户定义的工作流语法插件
- 支持混合云部署
支持
如果你需要支持,请从[故障排除指南]开始,并通过我们所概述的过程进行工作。