问题现象描述
当前环境无训练任务执行,下发新的训练任务始终无法成功创建任务Pod,Pod一直处于Pending状态。
原因分析
上次环境使用过程中,删除训练任务时对应容器没有清除干净,导致后续下发训练任务时卡无法释放,无法再次拉起任务。
解决措施
- 执行如下命令查看Ascend Device Plugin组件日志。示例如下
kubectl logs -f -n kube-system ascend-device-plugin-daemonset-910-njj49
- 检索关键日志containerd used chips。
- 根据日志map中的key值确认占卡容器ID,在Docker和Containerd中检索容器是否存在。
- Docker场景
以容器ID:2d758ae3968b为例,介绍如何在Docker中完全删除容器。
- 执行以下命令检查节点中是否存在此容器。
docker ps
- 若存在该容器且正在运行,执行以下命令停止此容器。
docker stop containers 2d758ae3968b
- 再执行docker ps命令,查看该容器是否已被停止。
- 执行以下命令查看是否有容器残留。
docker ps -a | grep 2d758ae3968b
- (可选)若存在容器残留,请执行以下命令删除此容器。
docker rm 2d758ae3968b
(可选)再次执行以下命令查看容器是否被删除。
docker ps -a | grep 2d758ae3968b
- Containerd场景
以容器ID:test-containerd-1为例,介绍如何在Containerd中完全删除容器。
- 执行以下命令检查节点中是否存在此容器。
ctr tasks list|grep test-containerd-1
- 若存在该容器且正在运行,执行以下命令停止容器。
ctr tasks kill test-containerd-1
- 执行以下命令检查是否存在容器残留。
ctr containers list|grep test-containerd-1
- (可选)若存在容器残留,请执行以下命令删除容器。
ctr containers delete test-containerd-1
- (可选)检查残留容器是否已删除。
ctr tasks list |grep test-containerd-1
- 再次检索Ascend Device Plugin组件关键日志containerd used chips,此时打印信息为空值,确认残留的占卡容器已被清空。

- 执行kubectl get pod -A命令观察任务Pod状态,确认任务成功running。