整体调度逻辑如图1所示,其中Ascend Device Plugin的功能是发现昇腾AI处理器资源并上报;Volcano组件为华为在开源Volcano框架上进行适配修改的调度器。
用户可通过登录后台环境,执行kubectl describe cm mindx-dl-deviceinfo-{nodeName} -n kube-system命令获取上报的资源信息。
此时Ascend Device Plugin会找到当前Node上所有的满足条件的Pod(Pod的状态为非Failed或者Succeeded),且Pod的“Annotations”字段中存在Volcano写入的分配的昇腾AI处理器ID,昇腾AI处理器数量和kubelet分配昇腾AI处理器数量要一致。
再从满足条件的Pod中,选择“predicate-time”最小的Pod,并把这个Pod的“predicate-time”改为最大的Uint值(避免下次再选到)。解析Pod的“Annotations”字段,得到Volcano分配的昇腾AI处理器信息,例如Ascend910-0和Ascend910-1,把它们对应的挂载路径等信息返回,并且将真正分配的昇腾AI处理器信息写入到Pod的“Annotations”中的“huawei.com/AscendReal”字段中。