背景
我的master根目录只有40G,发现水位已经达到了76%
解决
我同时跑了docker和containerd,先清理docker
docker system prune
再删除不用的镜像和退出的容器。
docker images
docker rmi xxx
docker rm $(docker ps -a | grep -i exit | awk '{print $1}'')
下面清理containerd
crictl images | grep none | awk '{print $3} '| xargs crictl rmi
这些
清理后水位下降到66%
整理一下常用清理集群资源的命令
- 清理 Evicted 状态的 Pod
kubectl get pods --all-namespaces | grep Evicted
- 清理 Error 状态的 Pod
kubectl get pods --all-namespaces | grep Error | awk '{print $1,$2}' | xargs -L1 kubectl delete pod -n
- 清理 Completed 状态的 Pod
kubectl get pods --all-namespaces | grep Completed | awk '{print $1,$2}' | xargs -L1 kubectl delete pod -n
- 清理没有被使用的 PV
kubectl describe -A pvc | grep -E "^Name:.*$|^Namespace:.*$|^Used By:.*$" | grep -B 2 "<none>" | grep -E "^Name:.*$|^Namespace:.*$" | cut -f2 -d: | paste -d " " - - | xargs -n2 bash -c 'kubectl -n ${1} delete pvc ${0}'
- 清理没有被绑定的 PVC
kubectl get pvc --all-namespaces | grep -v Bound | awk '{print $1,$2}' | xargs -L1 kubectl delete pvc -n
- 清理没有被绑定的 PV
kubectl get pv | tail -n +2 | grep -v Bound | awk '{print $1}' | xargs -L1 kubectl delete pv
- 清理含有僵尸进程的pod
ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print }' | xargs kill -HUP > /dev/null 2>&1 ps aux | grep pid k delete po xxx -n xxx