k8s pod因节点临时存储(ephemeral-storage)不足而被驱逐

发布时间:2026/9/10 10:41:04

k8s pod因节点临时存储(ephemeral-storage)不足而被驱逐 es master三节点中的一个节点提示容器状态未知describe发现events有如下提示这个是Kubernetes Pod因节点临时存储ephemeral-storage不足而被驱逐Evicted的事件日志。Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Evicted 15m kubelet Thenodewas low on resource: ephemeral-storage. Threshold quantity:3692958570, available: 3567316Ki. Container es-agent was using 1280Ki, request is0, has larger consumption of ephemeral-storage. Container kbagent was using 4Ki, request is0, has larger consumption of ephemeral-storage. Container exporter was using 20Ki, request is0, has larger consumption of ephemeral-storage. Container elasticsearch was using 976Ki, request is0, has larger consumption of ephemeral-storage. Normal Killing 15m kubelet Stopping container elasticsearch Normal Killing 15m kubelet Stopping container kbagent Normal Killing 15m kubelet Stopping container es-agent Normal Killing 15m kubelet Stopping container exporter Warning ExceededGracePeriod 15m kubelet Container runtime did notkillthe pod within specified grace period. Warning FailedPreStopHook 14m kubelet PreStopHook failed问题根因分析直接原因节点可用临时存储available: 3567316Ki ≈ 3.4Gi低于驱逐阈值Thresholdquantity: 3692958570 ≈ 3.52Gi触发机制kubelet 的节点压力驱逐Node Pressure Eviction连锁问题PreStop钩子执行失败14m前容器未在优雅终止期内停止ExceededGracePeriod最终被强制杀死核心问题容器未设置 ephemeral-storage 资源请求/限制从日志看所有容器 request is 0这意味着没有声明对临时存储的资源请求QoS等级为 BestEffort最低优先级节点资源不足时这类Pod会被最先驱逐解决方案1. 立即恢复临时措施# 查看Pod当前状态kubectl get podpod-name-nnamespace# 如果Pod已被删除检查是否有控制器Deployment/StatefulSet自动重建kubectl get deploy,sts-nnamespace# 手动删除Pod让其重建如果控制器存在kubectl delete podpod-name-nnamespace2. 根本解决资源配置在Pod/Deployment/StatefulSet中添加资源限制spec:containers:-name:elasticsearchresources:requests:ephemeral-storage:2Gi# 请求量limits:ephemeral-storage:4Gi# 限制量防止容器写爆磁盘-name:es-agentresources:requests:ephemeral-storage:500Milimits:ephemeral-storage:1Gi-name:kbagentresources:requests:ephemeral-storage:100Milimits:ephemeral-storage:200Mi-name:exporterresources:requests:ephemeral-storage:50Milimits:ephemeral-storage:100Mi3. 修复 PreStop 钩子PreStop钩子失败会导致优雅终止超时检查并修复# 查看Pod的PreStop配置kubectl get podpod-name-nnamespace-oyaml|grep-A5-B5preStop# 常见问题# - 钩子中调用的命令/API不存在# - 超时时间设置过短# - 网络问题导致钩子无法完成建议增加 terminationGracePeriodSeconds默认30秒spec:terminationGracePeriodSeconds:60# 增加到60秒containers:-name:elasticsearchlifecycle:preStop:exec:command:[/bin/sh,-c,curl -XPOST http://localhost:9200/_cluster/nodes/_local/shutdown]4. 节点层面优化# 查看节点磁盘使用情况kubectl describenodenode-name|grep-A5Allocated resources# 清理节点上的无用资源# - 清理已终止的容器日志# - 清理未使用的镜像# - 清理已完成的Poddockersystem prune-f# 如果是Docker运行时5. 配置驱逐阈值集群管理员修改kubelet配置调整更合理的阈值# /var/lib/kubelet/config.yamlevictionHard:imagefs.available:15%nodefs.available:10%ephemeral-storage.available:10%# 当前是约15%evictionSoft:ephemeral-storage.available:15%evictionSoftGracePeriod:ephemeral-storage.available:2m预防建议监控告警对节点磁盘使用率设置告警如 80%日志轮转配置容器日志轮转策略max-size, max-file持久化存储对需要大量存储的组件使用PVC而非emptyDir资源配额在命名空间级别设置ResourceQuota限制总存储使用apiVersion:v1kind:ResourceQuotametadata:name:compute-quotanamespace:your-namespacespec:hard:requests.ephemeral-storage:20Gilimits.ephemeral-storage:40Gi验证修复# 查看Pod资源请求/限制是否生效kubectl describe podpod-name-nnamespace|grep-A3QoS# 期望输出QoS Class: Burstable 或 Guaranteed有requests如果问题持续需要检查是否有日志文件过大未轮转是否有应用产生大量临时文件节点的emptyDir目录/var/lib/kubelet是否被其他Pod占满怎么看出来是临时存储的1. 直接从事件消息中识别日志里明确写了Thenodewas low on resource: ephemeral-storageephemeral-storage 就是临时存储的英文术语中文翻译临时存储、临时存储空间、临时卷存储2. 关键词对照表英文关键词中文含义说明ephemeral-storage临时存储Kubernetes官方术语ephemeral临时/短暂的表示非持久化emptyDir临时卷Pod级别临时存储的一种实现nodefs节点文件系统包含/var/lib/kubelet等imagefs镜像文件系统存放容器镜像3. 阈值表达式的含义Threshold quantity:3692958570, available: 3567316Ki这两个值的单位不一样3692958570 → 没有单位后缀默认是字节bytes换算3692958570 bytes ≈ 3.52 GiB3567316Ki → KiBKibibyte换算3567316 KiB ≈ 3.4 GiB所以实际含义是阈值:3.52GiB(硬驱逐阈值)可用:3.40GiB 可用阈值 → 触发驱逐4. Kubernetes存储类型对比存储类型生命周期是否临时典型用途ephemeral-storagePod生命周期✅ 是容器日志、镜像层、emptyDiremptyDirPod生命周期✅ 是临时缓存、共享数据hostPath节点生命周期❌ 否宿主机目录挂载PersistentVolume (PVC)独立于Pod❌ 否持久化数据数据库configMap/secretPod生命周期✅ 是配置文件、密钥5. ephemeral-storage 包含哪些内容/var/lib/kubelet/ ├── containers/# 容器可写层├── volumes/# emptyDir等临时卷├── pods/# Pod相关文件└──... /var/log/containers/# 容器日志/var/lib/docker/# 镜像层部分计入如何查看当前Pod的临时存储使用# 方法1查看Pod的详细状态kubectl describe podpod-name-nnamespace# 查找 Ephemeral Storage 相关行# 方法2查看节点上所有Pod的存储使用kubectltoppod-nnamespace--containers# 注top命令不直接显示存储需要结合以下命令# 方法3查看节点的存储分配情况kubectl describenodenode-name# 输出示例# Allocated resources:# ephemeral-storage: 15Gi (40%)7. 实际查看节点存储的命令# 登录到节点查看实际磁盘使用df-h/var/lib/kubelet# 输出示例# Filesystem Size Used Avail Use% Mounted on# /dev/sda1 100G 85G 15G 85% /var/lib/kubelet# 查看详细的目录占用du-sh/var/lib/kubelet/*|sort-hr|head-108. 日志中的request is 0含义Container es-agent was using 1280Ki, request is0容器实际使用了 1280 KiB 的临时存储但没有设置资源请求request0这意味着该Pod的QoS是 BestEffort最低优先级当节点资源不足时这种Pod会被最先驱逐9.快速验证命令bash# 查看Pod的QoS等级如果是BestEffort则没有requestskubectl get podpod-name-nnamespace-ojsonpath{.status.qosClass}# 查看Pod的资源请求kubectl get podpod-name-nnamespace-oyaml|grep-A10resources:总结如何一眼识别临时存储驱逐看关键词ephemeral-storage 或 临时存储看资源类型不是 memory 或 cpu看驱逐原因Evicted resource: ephemeral-storage看数值单位Ki、Mi、Gi或纯数字表示字节看容器使用using 多少request 是多少如果日志写的是 disk pressure 或 nodefs也是指磁盘/存储相关但 ephemeral-storage 是Kubernetes 1.8后的标准术语。
延伸阅读

更多相关文章

2026/9/10 10:40:53

2026山东APP定制开发行业优选服务商分析报告

一、行业概述与市场现状2026年,国内企业数字化建设进入AI深度融合新阶段,APP定制开发行业完成阶段性迭代升级。传统以“功能模板复刻、单一代码外包”为主的开发模式,已无法适配企业经营需求。当前市场核心趋势从“工具型软件开发”全面转向“…

2026/9/10 6:12:19

AIGC内容检测与反检测技术实战解析

1. 项目概述:检测平台升级与AIGC痕迹消除的挑战2026年内容检测平台的算法升级正在重塑数字内容生态。作为从业者,我亲历了三次重大检测算法迭代,这次升级带来的核心变化在于:平台开始采用多模态特征融合分析技术,能够同…

2026/8/30 18:19:29

Python 项目结构最佳实践:配置、请求、业务分开写,后期真的省事

适合个人开发者、AI 工具作者、脚本自动化玩家。 如果你现在的项目还把 API Key、请求逻辑、业务逻辑全写在一个文件里,这篇文章可以直接改掉你的写法。为什么项目一开始就要拆结构? 很多人做项目的时候,第一版通常都很简单: 一个…

2026/9/10 10:37:18

CANN/ge编译选项设置

aclSetCompileopt 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFl…

2026/9/10 10:37:18

如何把老 SWF 跑起来:Ruffle Flash 模拟器快速上手指南

如何把老 SWF 跑起来:Ruffle Flash 模拟器快速上手指南 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle Ruffle 是一个用 Rust 编写的 Flash Player 模拟器(当前版本…

2026/9/10 10:37:18

没有AB实验怎么做因果推断?PSM倾向得分匹配实战指南

做AB实验做得久了,你会慢慢意识到一个扎心的事实:不是所有场景都能给你一个干净的随机分组。用户在产品里已经走了一圈,你没法把他们“打回原形”重新抽签。这时候还硬套AB实验的框架,出来的结论不是偏的就是假的,甚至…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码