通过告警得知,有一台节点进入notready状态,登陆主机排查发现node组件异常,通过日志分析得知 数据盘异常, 切换到挂载盘目录下发现无法正常写入

 状态如下

[root@k8s-master /app ]# ls
ls: cannot access app: Input/output error

解决方法

#卸载挂载
umount /app

#返回设备正忙,无法卸载
说明有进程还在挂载中跑

#通过
lsof  /dev/mapper/vg--docker-lvapp 
#没有看到进程的相关信息
#因次换一种思路,查看所有进程下的关于这个分区的信息,通过命令
for i in  /proc/[0-9]* ; do echo $i >> /tmp/mountinfo ;  grep -q "/dev/mapper/vg--docker-lvapp" $i/mountinfo ; echo $? >> /tmp/mountinfo ; done


#我们会得到一个所有和挂载设备相关的进程表
grep -B 1 '^0$' /tmp/mountinfo | grep -v 0$ | awk -F"/" '{print $3}' | grep -v ^$ | grep -v  ^1$ > 1.txt
##注意不要把进程1给干掉,这里手动将1进程删掉


#然后通过pid得到对应的进程
for i in `cat 1.txt`;do ps -ef | grep $i ;done > 2.txt

#上面已经把相关进程的进程id导入到2.txt了,我们这里批量杀死这些进程
for i in `cat 2.txt  | awk '{print $2}'`;do kill -9 $i ;done

#进程杀死后,应该就可以卸载了
umount /dev/mapper/vg--docker-lvapp
(如果没有卸载成功说明有依旧有进程在挂载中运行)
#比如我这里是一台master节点,上面的etcd、api、sch、manager等都在,所以需要手动停止他们


#修复挂载
sudo xfs_repair -L /dev/mapper/vg--docker-lvapp

 

 修复后正常挂载即可

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐