Volcano高性能引擎
简介 volcano是一个用于高性能工作负载场景下基于kubernets的容器批量引擎。 应用场景: 机器学习以及深度学习 生物以及基因计算 大数据应用 概念 Queue 容纳一组podgroup的队列 apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: distcc spec: weight: 1 reclaimable: false capability: cpu: 50 字段: weight -> 该queue在集群资源划分中所占有的比例,该queue占用的资源比例为: (weight / total-weight) * total-resource,资源软约束。 capability -> queue内所有podgroup使用资源之和的上限,资源硬约束。 reclaimable -> 当该queue在资源使用超过该queue限制时,是否允许其他queue回收该queue使用的超额资源。 使用场景 Total Cluster CPUS = 4cores --- apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: test1 spec: weight: 1 --- apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: test2 spec: weight: 3 # 创建p1 p2 podgroup分别属于test1,test2,分别向p1 p2中投入job1 job2,资源申请分别为1C和3C,两个job均能正常工作 --- apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: test1 spec: weight: 1 # 首先创建test1 queue,创建podgroup p1,在p1中创建job1 job2,资源分配分别为1C和3C,job均能正常工作。 --- apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: test2 spec: weight: 3 # 创建test2 queue, 在该queue中创建podgroup p2,在p2中创建job3资源申请为3C,由于test2 queue weight=3,从而job2将被驱逐,test1 3C资源将归还给test2。 --- apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: test1 spec: capability: cpu: 2 # 创建test1 queue,容量设置为2,也就是资源上限使用为2C,创建p1 podgroup,在p1中创建job1 job2资源申请分别为1C和3C,那么job1正常运行,job2处于pending状态 --- apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: test1 spec: weight: 1 reclaimable: false --- apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: test2 spec: weight: 1 # 创建 test1 queue,reclaimable为False,也就是该queue不归还多占用的资源,分别在test1 test2 queue 中创建p1 p2,在p1中创建job1,资源申请为3C,由于权重比例为1:1,此时 test1 多占用1C,在p2中创建job2,资源申请为2C,此时由于test1不归还多占用的资源,job2将处于pending状态。 PodGroup podgroup是一组强关联pod的集合,用于批处理工作负载场景。 ...