Microsoft PAI 集群故障排查指南
pai Resource scheduling and cluster management for AI 项目地址: https://gitcode.com/gh_mirrors/pa/pai
前言
作为Microsoft PAI(开放人工智能平台)的集群管理员,在日常运维过程中可能会遇到各种问题。本文将系统性地介绍PAI集群常见故障的排查方法和解决方案,帮助管理员快速定位和解决问题。
一、服务容器异常问题排查
1.1 PaiServicePodNotReady报警处理
问题现象:收到来自alert manager的PaiServicePodNotReady报警,表明服务容器可能被异常终止。
可能原因:
- 系统内存不足导致OOM Killer终止容器
- 容器自身崩溃
- Kubernetes调度问题
排查步骤:
-
检查内存状况:
- 访问Prometheus界面(默认地址为
http://<master-ip>:9091
) - 查询
node_memory_MemFree_bytes
指标 - 如果空闲内存接近0,则很可能是OOM问题
- 访问Prometheus界面(默认地址为
-
确认OOM Killer行为:
- 登录问题节点执行
dmesg | grep oom
命令 - 或使用
docker inspect <容器ID>
查看详细终止信息
- 登录问题节点执行
解决方案:
- 强制删除问题Pod:
kubectl delete pod <pod名称> --grace-period=0 --force
- 如果删除卡住,重启节点上的docker服务:
/etc/init.d/docker restart
- 长期解决方案:
- 适当增加Pod的内存限制
- 优化服务内存使用
- 增加节点内存资源
二、节点状态异常问题
2.1 NodeNotReady报警处理
问题现象:watchdog服务报告节点状态为"unknown"。
排查流程:
-
基础检查:
- 尝试ping节点IP
- 检查节点是否关机
-
kubelet状态检查:
sudo systemctl status kubelet
- 日志分析:
journalctl -u kubelet -n 100
重点关注与API Server的连接问题
常见错误:
Error updating node status: Get http://<api-server-ip>:8080/api/v1/nodes/<node-ip>
解决方案:
- 检查节点与Master间的网络连接
- 重启kubelet服务
- 检查防火墙设置
三、存储空间问题
3.1 NodeFilesystemUsage报警
阈值:磁盘使用率超过80%触发报警
主要占用空间的服务:
- storage manager
- docker镜像缓存
- PAI日志目录
/var/log/pai
排查命令:
# 查看磁盘使用情况
df -h
# 查找大文件
du -sh /var/lib/docker/* | sort -rh
du -sh /var/log/pai/* | sort -rh
解决方案:
- 清理过期docker镜像
- 设置日志轮转策略
- 扩容磁盘空间
四、GPU相关问题
4.1 NodeGpuCountChanged报警
原因:实际GPU数量与layout.yaml
配置不符
解决步骤:
- 在dev box容器中检查并修改
layout.yaml
- 更新配置并重启相关服务:
/pai/paictl.py service stop -n cluster-configuration job-exporter
/pai/paictl.py config push -p <config-dir> -m service
/pai/paictl.py service start -n cluster-configuration job-exporter
4.2 GPU无法识别问题排查
检查清单:
- 显卡驱动是否正常(
nvidia-smi
命令) - nvidia-container-runtime是否配置正确:
docker info -f "{{json .DefaultRuntime}}"
4.3 GPU低性能状态处理
解决方法:
sudo nvidia-smi -pm ENABLED -i <gpu-id>
sudo nvidia-smi -ac <memory-clock>,<clock> -i <gpu-id>
查询支持的时钟频率:
sudo nvidia-smi -q -d SUPPORTED_CLOCKS
五、监控数据缺失问题
可能原因:监控组件异常
关键服务检查:
- prometheus
- grafana
- job-exporter
- node-exporter
排查步骤:
- 检查服务状态:
kubectl get pod
- 查看服务日志:
kubectl logs <pod-name>
- 解决问题后重启集群
六、云环境特殊问题
6.1 节点被回收后无法自动恢复
解决方案:设置定期检查的cron job
示例脚本:
ansible-playbook -i inventory/mycluster/hosts.yml upgrade-cluster.yml \
--become --become-user=root \
--limit=${limit_list} \
-e "@inventory/mycluster/openpai.yml"
七、存储扩容方案
7.1 增加Internal Storage容量
操作步骤:
- 停止所有PAI服务
- 备份原存储目录:
sudo mv /mnt/paiInternal /mnt/paiInternalBak
- 修改
services-configuration.yaml
:
internal-storage:
quota-gb: 100
- 推送配置并启动internal-storage服务
- 迁移数据:
sudo mv /mnt/paiInternalBak/pgdata /mnt/paiInternal/
- 启动所有服务
结语
本文涵盖了Microsoft PAI集群运维中最常见的故障场景及其解决方案。作为集群管理员,建议定期检查系统日志和监控指标,建立预防性维护机制,以降低严重故障发生的概率。对于复杂问题,建议结合多个监控工具的数据进行综合分析。
pai Resource scheduling and cluster management for AI 项目地址: https://gitcode.com/gh_mirrors/pa/pai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考