变量GCS_DATA_PVC用于代表每个环境关联的OBS桶,便于挂载常用的对象存储桶。
须知
GCS_DATA_PVC变量在workflow语法中,挂卷的volumes字段内可用。
语法
volumes:
genobs:
mount_path: /obs #挂载到容器内的路径 mount_from:
pvc: '${GCS_DATA_PVC}' #内置变量,代表执行流程的环境所关联的OBS桶
解释
容器挂载共享存储是可以使用任意的PVC的,提供这个内置变量是为了省去用户定义 PVC的动作。你也可以自己定义PVC来完成这个挂载行为。
使用时,把GCS_DATA_PVC当做普通的inputs变量就可以。
须知
GCS_SFS_PVC变量在workflow语法中,挂卷的volumes字段内可用。
语法
volumes:
gensfs:
mount_path: /sfs #挂载到容器内的路径 mount_from:
pvc: '${GCS_SFS_PVC}' #内置变量,代表流程中使用的SFS文件存储卷
解释
容器挂载SFS文件存储卷是可以使用任意的PVC的,提供这个内置变量是为了省去用户 定义PVC的动作。您也可以自己定义PVC来完成这个挂载行为。
使用时,把GCS_SFS_PVC当做普通的inputs变量就可以。
4 流程语法示例
4.1 单一步骤(一个并发)
4.2 单一步骤(并发执行)
4.3 复杂依赖任务(DAG)
4.1 单一步骤(一个并发)
命令示例
首先以执行单一命令为例。以 gcs sub job 为例,我们使用:
gcs sub job --cpu 0.5 --memory 1g --tool bwa:0.7.12 --shell sh bwa_help.sh
生成 GCS 流程示例
该命令将会生成以下模板,并提交基因容器语法解析器:
version: genecontainer_0_1 inputs:
memory:
default: 1g type: string cpu:
default: 0.5c type: string tool:
default: bwa:0.7.12 type: string job-script:
default: bwa_help.sh type: string
jobid:
default: bwa-help-2018-0830-171114-00d34 type: string
shell:
default: sh
memory: ${memory}
cpu: ${cpu}
commands:
- sh /obs/gcscli/bwa-help-2018-0830-171114-00d34/bwa_help.sh volumes:
sample-data:
mount_path: /obs
bwa-help-2018-0830-171114-00d34:
path:
- /obs/output/bwa-help-2018-0830-171114-00d34
生成 Kubernetes 示例
该模板将进一步解析成以下 Kubernetes 模板 ,并提交云容器引擎:
kind: Job
apiVersion: batch/v1 metadata:
name: bwa-help-2018-0830-171114-00d34-0-81419ff7ad0d11e8 namespace: default
selfLink:
/apis/batch/v1/namespaces/default/jobs/bwa-help-2018-0830-171114-00d34-0-81419ff7ad0d11e8 uid: 815b643b-ad0d-11e8-aba9-fa163ed435e0
resourceVersion: '706141' labels:
gcs.execution.id: 81419ff7-ad0d-11e8-bebc-0255ac1066a1
gcs.execution.name: gcs-2018-0830-171114-1-0-2018-0830-171114-35d77 gcs.source.name: bwa-help-2018-0830-171114-00d34
source: gcs
stack-name: gcs-2018-0830-171114-1-0-2018-0830-171114-35d77 spec:
parallelism: 1 completions: 1 backoffLimit: 6 selector:
matchLabels:
controller-uid: 815b643b-ad0d-11e8-aba9-fa163ed435e0 template:
metadata:
creationTimestamp: null labels:
controller-uid: 815b643b-ad0d-11e8-aba9-fa163ed435e0 gcs.execution.id: 81419ff7-ad0d-11e8-bebc-0255ac1066a1
gcs.execution.name: gcs-2018-0830-171114-1-0-2018-0830-171114-35d77 gcs.source.name: bwa-help-2018-0830-171114-00d34
job-name: bwa-help-2018-0830-171114-00d34-0-81419ff7ad0d11e8 source: gcs
containers:
- name: bwa-help-2018-0830-171114-00d34-0-81419ff7ad0d11e8
image: '100.125.5.235:20202/genecontainer/bwa:0.7.12-r1039-sam18-sbb67' command:
- sh - '-c'
- sh /obs/gcscli/bwa-help-2018-0830-171114-00d34/bwa_help.sh resources:
terminationMessagePath: /dev/termination-log terminationMessagePolicy: File
imagePullPolicy: IfNotPresent restartPolicy: OnFailure
terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst
securityContext: {}
affinity:
podAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1 schedulerName: default-scheduler
4.2 单一步骤(并发执行)
其次,再看一下任务并发的情况。假如用户之前脚本是这样:
#run.sh var1=$1 var2=$2
echo "$var1\t$var2"
# 执行该脚本 workflow 部分:
workflow:
第二种是使用并发变量:
inputs:
var1:
default:
- 1 - 2
description: var1 type: array label: basic var2:
default:
- a - b
description: var2 type: array label: basic workflow:
splitfq:
tool: zsplit:0.2 type: GCS.Job resources:
memory: 1g cpu: 0.5c commands_iter:
command: >
sh /obs/gcscli/run-xxx/run.sh ${1} ${2}
vars_iter:
- '${var1}' - '${var2}'
4.3 复杂依赖任务(DAG)
如果有四个任务,a/b/c/d 我们希望首先执行 任务 a,然后执行 b/c,b/c 同时完成 后,最后执行 d,如下图所示:
为了实现这个目标,需要引入 depends 字段。以任务 d为例,完成任务 d 需要首先完 成任务 b/c,则depends 字段为:
depends:
version: genecontainer_0_1 inputs:
volumes:
sample-data:
mount_path: /obs mount_from:
pvc: ${GCS_DATA_PVC}
temp-data:
mount_path: /sfs mount_from:
pvc: ${GCS_SFS_PVC}
ref-data:
mount_path: /ref mount_from:
pvc: ${GCS_REF_PVC}