The node was low on resource: ephemeral-storage. 错误的排除与解决步骤
因为我在一个1master3nodes的K8S集群内部署了Argo + Jenkins + mysql + spark + postsql 等等一系列软件服务,导致计算机运行极度缓慢。我将有关的namespace进行强制删除,降低资源的使用。在测试的名称空间重新创建简单pod的时候发生以上报错,现记录相应的排除工作思路。
核心原因是磁盘被占用,存储空间不足。产生存储空间不足的原因是我近期想学大数据课程,转移了大量资料,导致系统无法调度
正确操作:进入根目录查看什么文件夹占用磁盘存储过大,处理掉相应的文件夹
cd / && du -h -x --max-depth=1
kubectl get pod -n test-2022 -o wide
信息摘要:
kubectl describe pod pod-tomcat -n test-2022 | grep -A 20 Events
信息摘要:
ephemeral-storage 是用于管理和调度Kubernetes中运行的应用的短暂存储。
在每个Kubernetes的节点上,kubelet的根目录(默认是/var/lib/kubelet)和日志目录(/var/log)保存在节点的主分区上。
这个分区同时也会被Pod的EmptyDir类型的volume、容器日志、镜像的层、容器的可写层所占用。
ephemeral-storage 便是对这块主分区进行管理,通过应用定义的需求(requests)和约束(limits)来调度和管理节点上的应用对主分区的消耗。
df -h | grep /var/lib
ephemeral-storage引发的pod驱逐问题
imagefs.available
来提高阈值,然后重启 Kubeletcd /var/lib/docker/overlay2/
ls
rm -rf ./*
留下没被删除的导致问题的挂载容器,正常的容器被清理了。
只需要解除指定的四个容器挂载降低磁盘耗用,假如删除其他容器则产生新的报错。因为其他其实没有导致问题,一旦删除会导致节点无法部署新容器。如图
逐个解除挂载
umount /var/lib/docker/overlay2/813c20b4310ab610e208c9e1b9918ae3ee39e710a0613ebbf6f1ee32516cf875/merged
umount /var/lib/docker/overlay2/866b04c8e5ae3ea4bf9235a2692500b246a5ed9298ceff03f50774ad0bc56e7f/merged
umount /var/lib/docker/overlay2/32571ae5029d3616af0dbe65f145f5e47306a87b65f239906c891d58f5d7a95f/merged
umount /var/lib/docker/overlay2/49c700ff9ff853a08c1c46b376be6afbe2c219b8a75f1cafe40280b4bf253557/merged
统一解决挂载
df -h | grep /var/lib | grep 98 | awk '{print $6}' | xargs umount
后期发现即使正确解除容器的挂载,资源占用也是高得离谱,核心问题应该是磁盘占用问题
du -h -x --max-depth=1
# 查看哪个目录占用过高,对于过高目录中的内容适当删减腾出一些空间
因为近期在学大数据,转移了比较多的文件到export文件夹,导致磁盘占用过大,需要删除该文件夹内容
rm -rf export/
grep --help
Usage: grep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is, by default, a basic regular expression (BRE).
Example: grep -i 'hello world' menu.h main.c
'egrep' means 'grep -E'. 'fgrep' means 'grep -F'.
Direct invocation as either 'egrep' or 'fgrep' is deprecated.
When FILE is -, read standard input. With no FILE, read . if a command-line
-r is given, - otherwise. If fewer than two FILEs are given, assume -h.
Exit status is 0 if any line is selected, 1 otherwise;
if any error occurs and -q is not given, the exit status is 2.
-E、 --扩展正则表达式PATTERN是扩展正则表达式(ERE)
-F、 --固定字符串PATTERN是一组以换行符分隔的固定字符串
-G、 --基本正则表达式PATTERN是一个基本正则表达式(BRE)
-f、 --file=file从file获取模式
-i、 --忽略大小写忽略大小写区分
-v、 --反转匹配选择非匹配行
输出控制:-m、 --最大计数=NUM匹配后的NUM停止
-n、 --行号打印带有输出行的行号
上下文控制:-B、 --before context=NUM打印前导上下文的NUM行
-A、 --after context=NUM打印NUM行的尾随上下文
-C、 --context=NUM打印输出上下文的NUM行
df --help
Usage: df [OPTION]... [FILE]...
Show information about the file system on which each FILE resides,
or all file systems by default.
# df命令
# 用来查看linux系统服务器文件系统的磁盘使用情况。
# 可以用该命令来查看已经使用了多少空间,还有多少空间可用。
# df命令格式为 df [选线] [文件名]
# 选项可以有
-a:全部文件系统列表,包含虚拟文件系统
-h:方便人阅读方式显示。
-H:和-h相似,不过其中1k = 1000byte, 1M=1000k
-l :显示本地文件系统
-t:打印指定的文件系统类型
-T:显示文件系统类型