项目场景:
现象,紧跟我上一篇文章:
kubectl get pod 发现pod长时间处于containercreating状态/或者kubectl get node时node节点长时间处于notready状态/或者kubectl get node时node节点状态一会儿ready一会儿notready状态之间相互转换/pod长时间不更新状态
我上一篇文章:
K8s节点频繁处于notready状态的解决办法
问题描述
由上一篇文章确定原因后,现在希望自动化处理此类异常
解决方案:
使用定时任务3分钟检测一次:
1.编写检测处理脚本.
# vim /opt/rm_exceptional_docker.sh
脚本内容如下:
#!/bin/bash
except_id=`docker ps -a |grep -vi up |grep -i Created |awk 'NR>1 {print $1}'`
if [[ -n "$except_id" ]];then
echo 异常的容器id为: $except_id
except_pid_1=`ps -ef |grep $except_id |grep format|awk '{print $2}'`
except_pid_2=`ps -ef |grep $except_id |grep format|awk '{print $3}'`
echo 异常进程号为: $except_pid_1 ,$except_pid_2
echo 开始kill 异常进程号
kill -9 $except_pid_1
kill -9 $except_pid_2
sleep 5
else
echo 无异常容器
fi
2.给脚本加上执行权限.
# chmod +x rm_exceptional_docker.sh
3.编写定时任务.
# crontab -e
具体内容如下:
# */3 * * * * /bin/bash /opt/rm_exceptional_docker.sh >/dev/null &
查看定时任务:
# crontab -l
*/3 * * * * /bin/bash /opt/rm_exceptional_docker.sh >/dev/null &