使用动态虚拟化时,以普通用户运行推理业务容器失败
2023/09/18
183
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
官方 | 集群调度 | 虚拟化实例 | 动态虚拟化、普通用户、推理任务启动失败 |
问题现象描述
在Atlas 推理系列产品上部署Ascend Device Plugin和Volcano组件并开启动态虚拟化开关,下发任务后虚拟设备创建成功,但推理任务运行失败。
原因分析
推理任务容器使用普通用户运行,会出现以下问题,最终导致普通用户访问root属组的vNPU设备失败,从而导致推理业务容器运行失败。
- 物理机上通过特权容器调用接口创建的vNPU为root属组,该vNPU在特权容器内/dev目录下不可见。
- 驱动接口创建vNPU后默认为root属组,特权容器内就无法修改新创建的vNPU属组为非root。
解决措施
在Ascend Device Plugin组件的启动yaml中挂载/dev,示例如下。
command: [ "/bin/bash", "-c", "--"] args: [ "device-plugin -useAscendDocker=true -volcanoType=true -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log -logLevel=0" ] securityContext: privileged: true readOnlyRootFilesystem: true imagePullPolicy: Never volumeMounts: - name: device-plugin mountPath: /var/lib/kubelet/device-plugins ... # 此处省略若干字段 - name: tmp mountPath: /tmp - name: dev mountPath: /dev # 在此处挂载/dev env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName volumes: - name: device-plugin hostPath: path: /var/lib/kubelet/device-plugins ... # 此处省略若干字段 - name: tmp hostPath: path: /tmp - name: dev # 在此处挂载/dev hostPath: path: /dev
本页内容