Pod启动失败: /var/lib/kubelet/xxx/kube-api-access/ :no space left on device

一、问题现象

Pod调度至master01节点后,始终无法正常启动,K8s事件日志持续报出挂载卷失败错误,核心报错信息如下:

bash 复制代码
Warning  FailedMount  3m56s  kubelet            MountVolume.SetUp failed for volume "kube-api-access-gv4wg" : write /var/lib/kubelet/pods/44996eb7-d911-4748-ba01-cfe0a43da87e/volumes/kubernetes.io~projected/kube-api-access-gv4wg/..2026_03_19_06_31_37.2528622089/ca.crt: no space left on device
Warning  FailedMount  3m55s  kubelet            MountVolume.SetUp failed for volume "kube-api-access-gv4wg" : write /var/lib/kubelet/pods/44996eb7-d911-4748-ba01-cfe0a43da87e/volumes/kubernetes.io~projected/kube-api-access-gv4wg/..2026_03_19_06_31_38.709114551/token: no space left on device

通过以下命令初步排查节点资源,结果显示节点物理资源无异常:

bash 复制代码
# 排查节点根分区磁盘容量及使用率
df -h /
# 输出结果:
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/sda1       197G   21G  168G  12% /

# 排查节点根分区inode使用率
df -i /
# 输出结果:
# Filesystem       Inodes  IUsed    IFree IUse% Mounted on
# /dev/sda1      13107200 170980 12936220    2% /

# 排查kubelet pods目录文件数量
ls -l /var/lib/kubelet/pods | wc -l
# 输出结果:17

排查结论:

  • 节点根分区磁盘容量总197G,已用21G,使用率12%,磁盘空间充足;
  • 节点inode使用率仅2%,无inode耗尽问题;
  • /var/lib/kubelet/pods目录文件数量仅17个,无异常文件堆积。

二、根因分析

此问题并非节点物理磁盘/inode资源耗尽,而是Pod内存资源限制配置错误导致的"逻辑空间不足":

  1. K8s中Pod的resources.limits.memory配置若未指定单位(如仅写512),会被默认解析为512字节(而非预期的512MB),该限额远低于Pod正常运行及挂载卷所需的最小内存;
  2. kube-api-access卷是K8s自动为Pod创建的投影卷(包含ca.crt、token等用于访问API Server的核心文件),挂载时需占用少量内存空间,因Pod内存限额仅512字节,触发内存耗尽,系统层面表现为"no space left on device";
  3. 补充:若配置为512mi(小写mi),K8s会识别为无效单位,同样会导致内存限额解析异常,标准单位应为Mi(1Mi=1024×1024字节)。

三、解决方案

1. 修正Pod内存资源限制配置

编辑Pod所属的控制器(以StatefulSet为例,Deployment操作逻辑一致):

bash 复制代码
kubectl edit statefulset nacos 

找到spec.template.spec.containers下的资源限制段,将错误配置:

yaml 复制代码
resources:
  limits:
    memory: 512  # 错误:无单位,默认512字节
  requests:
    memory: 512  # 错误:无单位,默认512字节

修改为正确配置(添加标准单位Mi):

yaml 复制代码
resources:
  limits:
    memory: 512Mi  # 正确:512兆字节,满足Pod运行及卷挂载需求   # 应该大写开头
  requests:
    memory: 256Mi  # 建议配置requests,值≤limits,提升调度合理性
相关推荐
晓杰'5 分钟前
从0到1实现Balatro游戏后端(8):Skip Blind与Tag奖励机制设计与实现
后端·websocket·typescript·项目实战·nestjs·状态管理·游戏服务器
叫我:松哥9 分钟前
基于Flask框架的校园二手书籍交易平台,注重校园场景的特殊需求,通过学号认证保障用户真实性
后端·python·sqlite·flask·bootstrap
终将老去的穷苦程序员42 分钟前
基于SpringBoot的餐饮管理系统
java·spring boot·后端
张忠琳1 小时前
【Go 1.26.4】Golang Map 深度解析
开发语言·后端·golang
一条泥憨鱼1 小时前
Java开发效率神器:Lombok从入门到精通!
java·后端·学习·开发·lombok
熠熠仔1 小时前
Spring Boot 与 MyBatis-Plus 空间几何数据集成指南
spring boot·后端·mybatis
AI 小老六1 小时前
Google AX 控制面拆解:分布式 Agent 如何把断点恢复、审计策略和执行调度收进同一条链路
人工智能·分布式·后端·ai·架构·ai编程
YHHLAI2 小时前
从零搭建一个 RESTful Todo 服务 —— Bun + TypeScript 全栈最小闭环
后端·typescript·restful
小闹5492 小时前
一个 65 行的小需求,我让 Claude Code 跑了 25 个 agent、整整两小时
后端·claude
天青色等烟雨..2 小时前
智慧农林核心遥感技术99个案例实践
运维·人工智能·spring boot·后端·自动化