k8s 使用 vocano.sh 支持binpack

【k8s 使用 vocano.sh 支持binpack】家资是何物,积帙列梁梠。这篇文章主要讲述k8s 使用 vocano.sh 支持binpack相关的知识,希望能为你提供帮助。
1.背景

由于AI分布式训练平台特殊性以及k8s默认的调度器,当节点为多GPU卡时,会存在毛刺
问题。比如3台8卡的GPU,前面的提交3个1卡的任务,默认的调度机制,每个节点上一个
1卡的任务,当有一个8卡的任务提交时,就会处于pending,导致资源利用率不高

2.binpack
优先调度到资源被分配的节点,逻辑实现是打分机制,默认的打分机制是0-100,根据
资源使用情况,使用越高,分数越低,binpack刚好相反,资源使用越低,分数越低

3.安装volcano
wget https://raw.githubusercontent.com/volcano-sh/volcano/release-1.4/installer/volcano-development.yaml
vim volcano-development.yaml
kubectl apply -f volcano-development.yaml
kubectl get all -n volcano-system # 查看部署的资源

修改内容如下:


4.验证需要指定  schedulerName: volcano
apiVersion: kubeflow.org/v1
kind: TFJob
metadata:
labels:
app: test-1
name: test-1
namespace: dlp
spec:
#schedulerName: volcano
cleanPodPolicy: Running
tfReplicaSpecs:
Worker:
replicas: 1
restartPolicy: Never
template:
metadata:
creationTimestamp: null
labels:
app: test-1
spec:
schedulerName: volcano
containers:
- args:
- sleep 360d
command:
- sh
- -c
image: registry.cn-beijing.aliyuncs.com/ai-samples/tensorflow:1.5.0-devel-gpu
imagePullPolicy: Always
name: tensorflow
resources:
limits:
nvidia.com/gpu: "1"
requests:
cpu: "1"
memory: 1Gi
nvidia.com/gpu: "1"
volumeMounts:
- mountPath: /dev/shm
name: dshm
- mountPath: /mnt
name: mnt
volumes:
- hostPath:
path: /mnt
name: mnt
- emptyDir:
medium: Memory
name: dshm

提交k8s,更换任务名称之后,继续提交,查看两个job是否调度到同一个node节点上
?

    推荐阅读