容器卡在terminate状态无法删除
1. pod卡在terminate状态无法删除。一般是lxcfx 卡住 或者 logcounter组件进程读容器数据盘分区导致的
2. 验证一下我们的猜测
cat /sys/fs/fuse/connections/*/waiting 看有不为0且数字连续不变的值,或有D状态的进程,堆栈卡在fuse_waited, 若有则是lxcfs卡住导致的。重启一下lxcfs服务即可恢复
看kubelet日志,journalctl -u kubelet -r
若出现这种日志,则说明是logcounter组件进程还在读写容器数据盘分区导致回收容器时无法删除该分区,fuser查看是什么进程占用了分区
[root@ ~]# fuser -m -v /home/data/kubelet/pods/f27f2acc-6466-11eb-bf87-8030e04127a8/volumes/kubernetes.io~lvm/externalvolume
USER PID ACCESS COMMAND
/home/data/kubelet/pods/f27f2acc-6466-11eb-bf87-8030e04127a8/volumes/kubernetes.io~lvm/externalvolume:
root kernel mount /home/data/kubelet/pods/f27f2acc-6466-11eb-bf87-8030e04127a8/volumes/kubernetes.io~lvm/externalvolume
root 548083 f.... counter
看这个counter
[root@ ~]# ps -elf | grep 548083
4 S root 548083 548080 5 80 0 - 1437502 futex_ Mar31 pts/0 1-01:01:34 counter -p /etc/logengine/ -f config -t json
3.,logengine是日志服务loghouse的组件,以daemonset形式部署在所有节点上,kill后会自动拉起,所以直接kill掉就可以
kill -9 548083 后,容器就能正常删除(还删不掉就重启 一下kubelet)