排查故障
以下为使用中常见问题的排障方法
1. 创建失败
一般创建失败时,网页实例【创建失败】状态旁边会显示简要原因,如果从该原因无法判断故障来源,那么请登录该实例所在主机,执行以下命令排查:
首先确认是否可以正常创建容器
# 创建一个简单GPU容器的命令,验证是否创建容器过程中存在docker的问题。往往GPU故障会导致无法创建容器
docker run -it --rm --gpus=all python:3.10 bash
如果可以创建容器,那么查看worker-agent的日志
# 查看worker agent日志。执行命令后按[shift + g]跳到最后一行日志,看是否有failed相关的错误信息,根据错误信息进行判断
journalctl -u worker-agent.service
2. 克隆失败
克隆失败的主要原因是worker agent配置中的ssh账号密码问题
排查:
-
worker agent的yaml配置文件中的ssh账号是否为root用户,由于跨主机拷贝docker目录下的文件,需要root权限才能写入
-
如果机器间配置密钥做免密ssh登录的方式,请确认密钥/公钥配置在/root/.ssh/目录下,而不是其他HOME用户目录下
然后进行测试:先确认源实例和目标实例所在主机,然后在源主机去ssh登录目标主机,确认是否可以正常登录(登录时请先切换到root用户,这样更符合实际情况)
3. 无法关机
首先在AutoDL私有云管理员账号的后台主机管理中,确认该实例所在主机的健康状态,如果是异常则登录该主机,检查下面的项目:
-
执行 nvidia-smi 确认GPU正常。如果卡主则解决GPU问题(如重启服务器等)
-
执行 docker ps 确认docker正常。
-
执行
journalctl -u worker-agent.service
命令查看worker-agent日志(执行命令后按[shift + g]跳到最后一行日志)
4. 实例开机后无法连接
这里的情形为第一次完成部署后,创建第一个实例时,无法访问实例。
使用实例的JupyterLab或SSH访问实例的过程,都是[ 用户 → proxy agent → 实例 ],所以首先确认[初始化配置中的proxy agent的ip地址] 是否可以正常ping通。
这里假设配置的proxy agent的公网地址是A,内网地址为B。那么:
-
登录实例所在主机执行命令:
ping B
(如果没有配置内网地址,则ping A
),看是否可以ping通,不过不能ping通请检查网络问题,或者是否配置错了IP地址 -
在用户本地机器(即在哪台机器上打开的实例JupyterLab)上执行命令:
ping A
(如果没有配置公网地址,则ping B
) -
如果以上两项均正常,那么找到实例的JupyterLab或SSH的访问地址,该地址中有一个端口号(比如20000)。然后登录proxy agent所在主机,执行命令:
telnet localhost 20000
,如果telnet可以通,那么说明[ 用户 → proxy agent → 实例 ]该链路中,proxy和实例之间的链路正常,问题在用户和proxy之间的链路。否则为proxy和实例之间的链路问题。如果为用户和proxy之间的链路问题,请检查端口的安全组是否已开放;如果为proxy和实例之间的链路问题,那么登录实例所在主机,查看该实例docker容器的日志