Ascend Device Plugin支持两种安装方式,用户可根据实际情况选择其中一种进行安装。
Ascend Device Plugin组件需使用特权容器和root用户运行,如果容器被人恶意利用,有容器逃逸风险。建议节点导入KubeConfig配置文件后,直接在物理机上通过二进制服务启动。
[Unit] Description=Ascend K8s device plugin Documentation=hiascend.com [Service] ExecStart=/bin/bash -c "/usr/local/bin/device-plugin -volcanoType=true -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log>/dev/null 2>&1 &" Restart=always RestartSec=2 KillMode=process Environment="LD_LIBRARY_PATH=/usr/local/kmc" Environment="GOGC=50" Environment="GOMAXPROCS=2" Environment="GODEBUG=madvdontneed=1" Environment="NODE_NAME=<当前节点的K8s node name>" Type=forking User=hwMindX Group=hwMindX [Install] WantedBy=multi-user.target
... [Service] ExecStart=/bin/bash -c "/usr/local/bin/device-plugin -volcanoType=true -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log &" Restart=always RestartSec=2 ...
如果部署节点为Atlas 200I Soc A1 核心板,需要在“ExecStart”字段设置参数“-useAscendDocker=false”。
usermod -a -G HwBaseUser hwMindX usermod -a -G HwDmUser hwMindX
cd /home/ascend-device-plugin mkdir /usr/local/kmc cp -r lib/* /usr/local/kmc cp device-plugin /usr/local/bin cp device-plugin.service /etc/systemd/system chmod 444 /usr/local/kmc/* chmod 755 /usr/local/kmc chmod 500 /usr/local/bin/device-plugin chown hwMindX:hwMindX /usr/local/bin/device-plugin setcap CAP_CHOWN,CAP_DAC_OVERRIDE+ep /usr/local/bin/device-plugin chattr +i /usr/local/bin/device-plugin tee /etc/ld.so.conf.d/ascend_dl_so.conf <<- EOF /usr/local/kmc EOF ldconfig chattr +i /etc/systemd/system/device-plugin.service systemctl enable device-plugin systemctl start device-plugin
由于Ascend Device Plugin需要访问主机路径 “/var/lib/kubelet/device-plugins/”,并且需要修改创建的sock属主为root,因此上述命令包含为二进制添加对应的能力项。
加密组件依赖的动态库文件lib目录中提供了libcrypto.so动态库,在某些环境下可能会与系统自带库冲突,如果执行安装过程出现了包含openssl相关的错误,请参见常见故障处理解决。
docker images | grep k8sdeviceplugin
示例如下:
root@ubuntu:~# docker images|grep k8sdeviceplugin ascend-k8sdeviceplugin v3.0.0 29eec79eb693 About an hour ago 105MB
yaml文件列表 |
说明 |
---|---|
device-plugin-310-{version}.yaml |
Atlas 200/300/500 推理产品上不使用Volcano的配置文件。 |
device-plugin-310P-{version}.yaml |
Atlas 推理系列产品上不使用Volcano的配置文件。 |
device-plugin-910-{version}.yaml |
Atlas 训练系列产品上不使用Volcano的配置文件。 |
device-plugin-310P-1usoc-{version}.yaml |
Atlas 200I SoC A1 核心板上不使用Volcano的配置文件。 |
device-plugin-volcano-{version}.yaml |
Atlas 训练系列产品上使用Volcano的配置文件。 |
device-plugin-310-volcano-{version}.yaml |
Atlas 200/300/500 推理产品上使用Volcano的配置文件。 |
device-plugin-310P-volcano-{version}.yaml |
Atlas 推理系列产品设备上使用Volcano的配置文件。 |
device-plugin-310P-1usoc-volcano-v3.0.0.yaml |
Atlas 200I SoC A1 核心板上使用Volcano的配置文件。 |
如果部署节点为Atlas 200I Soc A1 核心板,需要在启动参数中设置“-useAscendDocker=false”,默认已配置。
... apiVersion: apps/v1 kind: DaemonSet metadata: name: ascend-device-plugin-daemonset-910 namespace: kube-system spec: selector: matchLabels: name: ascend-device-plugin-ds ... spec: ... containers: - image: ascend-k8sdeviceplugin:v2.0.3 # 用户需替换当前使用的版本 ... volumeMounts: ... - name: kmckeystore mountPath: /etc/mindx-dl/kmc_primary_store - name: kmckeybak mountPath: /etc/mindx-dl/.config - name: kmc-deviceplugin mountPath: /etc/mindx-dl/device-plugin ... volumes: ... - name: kmckeystore hostPath: path: /etc/mindx-dl/kmc_primary_store - name: kmckeybak hostPath: path: /etc/mindx-dl/.config - name: kmc-deviceplugin hostPath: path: /etc/mindx-dl/device-plugin ...
kubectl apply -f device-plugin-310-*.yaml
kubectl apply -f device-plugin-310P-*.yaml
kubectl apply -f device-plugin-910-*.yaml
kubectl apply -f device-plugin-310-volcano-*.yaml
kubectl apply -f device-plugin-310P-volcano-*.yaml
kubectl apply -f device-plugin-volcano-*.yaml
kubectl apply -f device-plugin-310P-1usoc-volcano-*.yaml
kubectl apply -f device-plugin-310P-1usoc-*.yaml
如果K8s集群使用了多种类型的昇腾AI处理器,请分别执行对应命令。
启动示例如下所示:
root@ubuntu:/home/ascend-device-plugin# kubectl apply -f device-plugin-volcano-v3.0.0.yaml serviceaccount/ascend-device-plugin-sa created clusterrole.rbac.authorization.K8s.io/pods-node-ascend-device-plugin-role created clusterrolebinding.rbac.authorization.K8s.io/pods-node-ascend-device-plugin-rolebinding created daemonset.apps/ascend-device-plugin-daemonset created root@ubuntu:/home/ascend-device-plugin# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE ... ascend-device-plugin-daemonset-d5ctz 1/1 Running 0 11s ...
参数 |
类型 |
默认值 |
说明 |
---|---|---|---|
-mode |
string |
无 |
指定Ascend Device Plugin运行模式,不指定该参数会根据NPU芯片类型自动指定。自动获取运行模式时,如果没查询到以下模式中的任意一种,则插件启动失败。
说明:
MindX 3.0.0只支持自动获取运行模式,不接受指定,如果获取失败,则插件启动失败。MindX 3.0.0之后版本的Ascend Device Plugin将不再提供该参数,使用时请注意软件版本信息。 |
-fdFlag |
bool |
false |
边缘场景标志,是否使用FusionDirector系统来管理设备。 |
-edgeLogFile |
string |
/var/alog/AtlasEdge_log/devicePlugin.log |
边缘场景日志文件。fdFlag设置为true时生效。 说明:
单个日志文件超过20 MB时会触发自动转储功能,文件大小上限不支持修改。 |
-useAscendDocker |
bool |
true |
是否使用Ascend Docker Runtime。开启K8s的CPU绑核功能时,无论是否使用Ascend Docker Runtime,参数“useAscendDocker”均需设置为false。 说明:
Ascend Docker Runtime的安装方式请参见安装Ascend Docker Runtime。 |
-volcanoType |
bool |
false |
是否使用Volcano进行调度,当前已支持Atlas 训练系列产品、Atlas 推理系列产品和Atlas 200/300/500 推理产品。 |
-kubeConfig |
string |
/etc/mindx-dl/device-plugin/.config/config6 |
volcanoType为true时生效。 默认为导入的加密KubeConfig文件路径,也支持用户自定义路径下的KubeConfig文件,如果默认路径下不存在配置文件,才启用InClusterConfig。 说明:
该文件必须使用证书导入工具进行加密,不支持明文文件。 |
-presetVirtualDevice |
bool |
true |
静态虚拟化功能开关,目前支持Atlas 训练系列产品和Atlas 推理系列产品且值只能为true。 |
-version |
bool |
false |
查看当前device-plugin的版本号。 |
-listWatchPeriod |
int |
5 |
设置健康状态检查周期,取值范围为[3,60],单位:秒。 |
-autoStowing |
bool |
true |
是否自动纳管已修复设备,volcanoType为true时生效。
说明:
设备故障后,会自动从K8s里面隔离。如果设备恢复正常,默认会自动加入K8s集群资源池。如果设备不稳定,可以设置为false,此时需要手动纳管。
|
-logLevel |
int |
0 |
日志级别:
|
-maxAge |
int |
7 |
日志备份时间限制,范围:[7, 700],单位:天。 |
-logFile |
string |
/var/log/mindx-dl/devicePlugin/devicePlugin.log |
非边缘场景日志文件。fdFlag设置为false时生效。 说明:
单个日志文件超过20 MB时会触发自动转储功能,文件大小上限不支持修改。 |
-maxBackups |
int |
30 |
转储后日志文件保留个数上限,范围:(0,30],单位:个。 |
-h |
无 |
不涉及 |
显示帮助信息。 |