工作节点无训练任务执行,一直无法下发新的训练任务

问题现象描述

当前环境无训练任务执行,下发新的训练任务始终无法成功创建任务Pod,Pod一直处于Pending状态。

原因分析

上次环境使用过程中,删除训练任务时对应容器没有清除干净,导致后续下发训练任务时卡无法释放,无法再次拉起任务。

解决措施

  1. 执行如下命令查看Ascend Device Plugin组件日志。示例如下

    kubectl logs -f -n kube-system ascend-device-plugin-daemonset-910-njj49

  2. 检索关键日志containerd used chips。
  3. 根据日志map中的key值确认占卡容器ID,在Docker和Containerd中检索容器是否存在。

    • Docker场景
      以容器ID:2d758ae3968b为例,介绍如何在Docker中完全删除容器。
      1. 执行以下命令检查节点中是否存在此容器。
        docker ps
      2. 若存在该容器且正在运行,执行以下命令停止此容器。
        docker stop containers 2d758ae3968b
      3. 再执行docker ps命令,查看该容器是否已被停止。
      4. 执行以下命令查看是否有容器残留。
        docker ps -a | grep 2d758ae3968b
      5. (可选)若存在容器残留,请执行以下命令删除此容器。
        docker rm 2d758ae3968b
      6. (可选)再次执行以下命令查看容器是否被删除。
        docker ps -a | grep 2d758ae3968b
    • Containerd场景
      以容器ID:test-containerd-1为例,介绍如何在Containerd中完全删除容器。
      1. 执行以下命令检查节点中是否存在此容器。
        ctr tasks list|grep test-containerd-1
      2. 若存在该容器且正在运行,执行以下命令停止容器。
        ctr tasks kill test-containerd-1
      3. 执行以下命令检查是否存在容器残留。
        ctr containers list|grep test-containerd-1
      4. (可选)若存在容器残留,请执行以下命令删除容器。
        ctr containers delete test-containerd-1
      5. (可选)检查残留容器是否已删除。
        ctr tasks list |grep test-containerd-1

  4. 再次检索Ascend Device Plugin组件关键日志containerd used chips,此时打印信息为空值,确认残留的占卡容器已被清空。
  5. 执行kubectl get pod -A命令观察任务Pod状态,确认任务成功running。