KubeGene—致力于使基因组测序过程变得简单、便携和可扩展

330 阅读3分钟

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等
  • 支持用户定义的工作流语法插件
  • 支持混合云部署

支持

如果你需要支持,请从[故障排除指南]开始,并通过我们所概述的过程进行工作。