You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K3s无法加载容器 overlayfs挂载失败所有系统Pod持续处于Pending状态

问题现象
  • 执行journalctl -u k3s查看K3s运行日志时,日志无限循环输出报错,核心报错内容如下:

"overlayfs" snapshotter cannot be enabled for "/var/lib/rancher/k3s/agent/containerd", try using "fuse-overlayfs" or "native": failed to mount overlay: no such device

  • 日志同步循环输出关联异常提示:等待获取agent配置、服务未就绪、等待控制平面节点启动、对应节点不存在、v1beta1.metrics.k8s.io OpenAPI规范加载失败返回503服务不可用。
  • 异常状态持续12天期间,无论等待多长时间,执行kubectl get all -A查询集群资源均返回固定结果:kube-system命名空间下的helm-install-traefik-crd、helm-install-traefik、metrics-server、local-path-provisioner、coredns相关Pod全部处于Pending状态,对应Deployment、Job均无可用就绪副本。
  • 已尝试的修复操作:在宿主机执行pacman -S lxc containerd安装lxc与containerd组件,问题未解决。
问题根因

核心触发原因是当前K3s运行环境不支持内核级overlayfs挂载,K3s内置containerd默认配置的overlayfs快照器无法正常启动,直接导致容器运行时整体不可用。所有依赖容器运行时的集群控制逻辑、系统插件都无法完成调度启动,最终演变为日志循环报错、系统组件长期Pending的状态。
注意:宿主机独立安装lxc、containerd组件不会修复该问题,K3s默认使用自带的内置containerd运行时,不会复用宿主机独立部署的containerd服务配置。

修复步骤

按优先级依次尝试以下方案:

  1. 检查并加载内核overlay模块
    先执行lsmod | grep overlay检查模块是否加载,如果命令无任何输出,说明内核未加载overlay模块:
    • 执行modprobe overlay临时加载模块
    • 编辑/etc/modules-load.d/overlay.conf文件,写入overlay内容保存,配置模块开机自动加载
    • 执行systemctl restart k3s重启服务,验证问题是否修复
  2. 切换快照器为fuse-overlayfs(适用于嵌套虚拟化、LXC容器、WSL2等不支持原生内核overlay的场景)
    • 执行pacman -S fuse-overlayfs安装用户态overlay依赖
    • 编辑/创建K3s配置文件/etc/rancher/k3s/config.yaml,写入以下配置:
      snapshotter: fuse-overlayfs
      
    • 执行systemctl daemon-reload && systemctl restart k3s重载配置并重启服务
  3. 临时降级使用native快照器(仅用于排查问题,不推荐生产环境长期使用,性能损耗较大)
    如果fuse-overlayfs方案仍无法生效,可将上述配置文件中的snapshotter值改为native,保存后重启K3s服务即可。
修复验证

服务重启后等待1-2分钟,依次做以下检查:

  • 执行journalctl -u k3s -f查看实时日志,确认无overlay挂载相关报错
  • 执行kubectl get pods -A,确认kube-system命名空间下此前处于Pending状态的系统组件Pod逐步进入Running状态
  • 所有Pod启动完成后,执行kubectl get nodes确认集群节点状态为Ready

内容的提问来源于stack exchange,提问作者wviana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:54:20