根据GPU/NPU卡信息定位使用该卡的Pod
在CCE中使用GPU/NPU卡时,无法直接获取到使用该卡的Pod。您可以根据GPU/NPU卡的信息,通过kubectl命令行操作筛选Pod,以便在GPU/NPU卡故障时能够及时将Pod驱逐。
前提条件
- 已创建CCE集群,且配置了kubectl命令行工具。详细操作可参考通过kubectl连接集群。
- 集群上安装了CCE AI套件(GPU/NPU),可参考CCE AI套件(NVIDIA GPU)和 CCE AI套件(Ascend NPU)。其中NPU驱动版本应大于23.0。
操作步骤
您可以在集群节点上查询GPU/NPU卡的信息,然后使用kubectl搜索到使用该卡的Pod。
- 登录CCE控制台,在左侧导航栏中选择“节点管理”,切换至“节点”页签,查看GPU节点的IP。本文中以192.168.0.106为例。
- 登录GPU节点,通过以下命令查看GPU卡的信息。
nvidia-smi
可以看到该机器上存在1张卡GPU0。本文以GPU0为例,定位使用这张卡的Pod。
- 根据节点IP(即192.168.0.106)和设备号(即第0张卡)定位使用了该卡的Pod。
kubectl get pods --all-namespaces -o jsonpath='{range .items[?(@.spec.nodeName=="192.168.0.106")]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.metadata.annotations}{"\n"}{end}' | grep nvidia0 | awk '{print $1, $2}'
该命令查找了192.168.0.106节点上所有的Pod,并且查找了annotation中存在nvidia0(代表第0张卡)信息的Pod。最终输出了Pod所在的命名空间和Pod名称。查询结果如下:
代表default命名空间下名为k8-job-rhblr的Pod使用了192.168.0.106节点上的第0张卡。
- 登录CCE控制台,在左侧导航栏中选择“节点管理”,切换至“节点”页签,查看NPU节点的IP。本文中以192.168.0.138为例。
- 登录NPU节点,通过以下命令查看NPU卡的信息。
npu-smi info
可以看到该机器上存在两张卡device0和device1。本文以device0为例,定位使用了这张卡的Pod。
- 根据节点IP(即192.168.0.138)和设备号(即第0张卡)定位使用了该卡的Pod。
kubectl get pods --all-namespaces -o jsonpath='{range .items[?(@.spec.nodeName=="192.168.0.138")]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.metadata.annotations}{"\n"}{end}' | grep Ascend310-0 | awk '{print $1, $2}'
该命令查找了192.168.0.138节点上所有的Pod,并且查找了annotation中存在Ascend310-0(代表NPU卡的第0张卡)信息的Pod。最终输出了Pod所在的命名空间和Pod名称。查询结果如下:
代表default命名空间下名为test-564f996c77-fws6z的Pod使用了192.168.0.138节点上的第0张卡。
- 在使用其他卡时,Ascend310-0的Ascend310应该修改为对应卡名称。
- NPU驱动版本应大于等于23.0。