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

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:显示文件系统类型 我正在使用这个:4.times{|i|assert_not_equal("content#{i+2}".constantize,object.first_content)}我之前声明过局部变量content1content2content3content4content5我得到的错误NameError:wrongconstantnamecontent2这个错误是什么意思?我很确定我想要content2=\ 最佳答案 你必须用一个大字母来调用ruby常量:Content2而不是content2。Aconstantnamestart
我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe
我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我在en:语言环境中有一个字符串display_device:toplay:getplayer冒号给我的错误是cannotloadtranslationsfromC:/DocumentsandSettings/rajg/discoveryaws/branches/internationalization/config/locales/en.yml,expectedittoreturnahash,butdoesnot我怎样才能让它工作? 最佳答案 如果你用这样的引号将它括起来,你可以在你的字符串中转义冒号(和其他“重要”字符):dis
我使用RVM安装Ruby-2.1.5并再次运行bundle。现在pggem不会安装,我得到这个错误:geminstallpg-v'0.17.1'----with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configBuildingnativeextensionswith:'--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config'Thiscouldtakeawhile...ERROR:Error
我是Rails的新手,我遇到了一个错误,但我似乎找不到问题所在。这是日志:[32651:ERROR]2012-10-0913:46:52::comparisonofFloatwithFloatfailed[32651:ERROR]2012-10-0913:46:52::/home/sunny/backend/lib/analytics/lifetime.rb:45:in`each'/home/sunny/backend/lib/analytics/lifetime.rb:45:in`max'/home/sunny/backend/lib/analytics/lifetime.rb:45
我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme
RuntimeError:CUDAerror:device-sideasserttriggered问题描述解决思路发现问题:总结问题描述当我在调试模型的时候,出现了如下的问题/opt/conda/conda-bld/pytorch_1656352465323/work/aten/src/ATen/native/cuda/IndexKernel.cu:91:operator():block:[5,0,0],thread:[63,0,0]Assertion`index>=-sizes[i]&&index通过提示信息可以知道是个数组越界的问题。但是如图一中第二行话所说这个问题可能并不出在提示的代码段
抱歉,如果问题很明显,我才刚刚开始使用Rails。我现在在几个Controller方法中有以下代码:respond_todo|format|if@project.saveformat.html{redirect_to(edit_project_url(@project),:notice=>'#{user.name}addedto#{role}.')}format.jselseformat.html{render:action=>"edit"}format.js#...endend那么问题来了,对于所有方法中的错误,最好的方法是什么?是否建议我使用save!并在rescue_action