内容纲要
概要描述
本文描述pod状态卡在ContainerCreating阶段,且kubectl describe pod -n xxxx 中pod event报错“Unable to mount volumes for pod "xxx": timeout expired waiting for volumes to attach/mount for pod "xx"”的排查思路以及解决方案
详细描述
问题描述
创建Pod时经常遇到volume mount超时的情况,此时pod的状态一直保持在ContainerCreating状态,使用kubectl describe pod会看到类似下面的错误信息:
Warning FailedMount 41s (x40 over 1h) kubelet, tdcdev06 Unable to mount volumes for pod "kibana-r6pnc-58b58ccf5f-rjtz6_1g68azg(1fccdf02-35a2-11e9-bebb-0cc47ae29dba)": timeout expired waiting for volumes to attach/mount for pod "1g68azg"/"kibana-r6pnc-58b58ccf5f-rjtz6". list of unattached/unmounted volumes=[kibana-supervisor]
排查思路
1 确认warpdrive服务状态
warpdrive 所有的操作都添加了event,如果describe pod时,只看到了mount超时的错误,没有看到具体操作的error event,很大概率说明warpdrive是正常的,要么其函数一直没有被调用,要么调用的时候没有发生错误。
systemctl status warpdrive
2 查看warpdrive日志是否有报错
journalctl -xeu warpdrive
3 查看warpdrive是否占用到<主机名:8808>
netstat -antulp | grep 8808

若没有,则
systemctl restart warpdrive
4 events里面有关键报错Get "http://warpdrive-manager-servcie:9500/v1/volumes/xxxx"
如果还有关键报错:
failed to get volume xxxx, err: Get "http://warpdrive-manager-servcie:9500/v1/volumes/xxxx": dial tcp 10.10.10.40.152:9500: i/o timeout

确认warpdrive-manager 是否健康, 可以进行pod的重启
kubectl get po -n kube-system -o wide | grep warpdrive-manager
检查servcie配置是否正确
kubectl get svc -n kube-system -o wide | grep warpdrive-manager

从主机直接访问service观察是否正常

从主机直接访问service观察是否正常
curl -v 10.10.40.152:9500
5 重启后还是有问题可以检查 /etc/hosts 配置是否正确。
6 若报错:open /dev/mapper/xxxx_vg-warpdrive_xxxx_data_xxxx: no such file or director,则是存储池未激活导致
检查内核日志是否报错 dmesg –level err | grep sdX
手动激活:vgchange -ay xxxx_dev_sdX_vg
重启 warpdrive