深夜你熟睡时,用户打来电话。大哥我在上线我的应用怎么突然起不来了。快帮我看看,再过一个小时店铺就开门了。
- 核实pod状态
打开电脑登入环境,使用kubectl get pod 查询到用户的pod处于创建中,kubectl get deployment 发现
应用yaml文件中定义的pod实例是四个,成功率为百分之百。目前启动了三个,有个应用疯狂重启。
- 查询事件日志
使用kubectl log -f -namespaces pod名 查询事件日志发现,日志一直在报错。挂载某个nas一直处于连接超
时的状态。pod挂载nas启动失败报错:unable to mount volume xxxx Timeout waiting for mount
paths to be created
3.解决方式
查询到这种情况,我们可以手动在宿主机上挂载nas进行尝试挂载 sudo mount -t nfs 10.0.0.21:/snjkvb
/tmp/gan 发现挂载超时。一般挂载超时两种情况,一种是网络问题,另外一种就是nas目录权限问题。
4.进一步分析
使用kubectl delete 删除pod,将主机禁止调度,应用启动成功。怀疑这台主机可能有问题?使用Prometheus
监控查询各项指标都正常。怀疑挂载的过程一直超时会产生D进程。ps aux|awk '{if($8 == "D") {print}}'
ps -axjf |grep D 查询发现确实有D进程,导致挂载超时。接下来就没有办法了。只能重启或者想办法搞掉D
进程。