K3s 卸载/重装后残留大量 crictl 容器和网络接口怎么清理

发布时间 - 2026-01-20 00:00:00    点击率:
卸载K3s后残留容器、镜像及CNI接口,是因containerd和网络配置未彻底清理;需用ctr命令删除底层资源,清除CNI网卡与iptables规则,并清空/var/lib/rancher/k3s等目录。

卸载 K3s 后,crictl 仍能列出旧容器、镜像,或 ip link 显示残留的 CNI 接口(如 cni0flannel.1br-* 等),说明底层运行时(containerd)和网络配置未被清除。这不是 crictl 本身的问题,而是 K3s 卸载不彻底导致的资源滞留。

确认残留容器和镜像是否真实存在

先验证这些“残留”是否还在运行或驻留:

  • 执行 crictl ps -a 查看所有容器状态;若显示 ExitedUnknown,说明它们只是元数据未清理,实际进程已不存在
  • 运行 crictl images 检查镜像列表;大量 镜像或旧版本 k3s 系统镜像(如 rancher/pausedocker.io/traefik)属于典型残留
  • sudo ctr -n k8s.io containers listsudo ctr -n k8s.io images list 直接查 containerd 底层,比 crictl 更准确

强制清理 containerd 中的闲置容器与镜像

crictl 不提供“批量删除所有未使用镜像”的一键命令,需组合操作:

  • 停止 containerd: sudo systemctl stop containerd
  • 删除所有容器(含已退出):sudo ctr -n k8s.io containers delete $(su

    do ctr -n k8s.io containers list -q)
  • 删除所有镜像(谨慎!确保无其他服务依赖):sudo ctr -n k8s.io images rm $(sudo ctr -n k8s.io images list -q)
  • 重启 containerd:sudo systemctl start containerd
  • 再运行 crictl ps -acrictl images,应为空或仅剩基础 pause 镜像(重装后会自动拉取)

清除 CNI 网络接口和 iptables 规则

K3s 默认使用 Flannel 或 Calico,卸载后常遗留虚拟网卡和防火墙链:

  • 查看残留接口:ip link show | grep -E "(cni|flannel|cilium|br-)"
  • 逐一删除(示例):sudo ip link delete cni0sudo ip link delete flannel.1
  • 清空 K3s 相关 iptables 链:sudo iptables -t nat -F KUBE-SERVICESsudo iptables -t filter -F KUBE-FIREWALL;更彻底可执行 sudo iptables -P FORWARD ACCEPT && sudo iptables -t nat -F && sudo iptables -t filter -F && sudo iptables -t mangle -F(注意:这会清除所有自定义规则)
  • 检查挂载点是否残留:mount | grep -i cni\|k8s\|overlay;若有,用 sudo umount /var/lib/cni 或对应路径卸载

验证并防止下次重装再次残留

清理完成后建议做两件事:

  • 确认关键目录已清空:/var/lib/rancher/k3s/etc/k3s/var/lib/cni/run/flannel/var/run/containerd/io.containerd.runtime.v2.task/k8s.io
  • 重装前先停掉相关服务:sudo systemctl stop k3s* containerd kubelet,避免新进程复用旧状态
  • 如用脚本重装,加 --disable traefik --disable servicelb --disable local-storage 等精简参数,减少初始化组件,降低残留风险


# docker  # 防火墙  # ai  # trae  # Filter  # 接口  # var  # delete  # kubelet  # rancher  # 镜像  # 重装  # 清空  # 还在  # 这不是  # 不存在  # 自定义  # 若有  # 重启  # 件事 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 魔方云NAT建站如何实现端口转发?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  利用vue写todolist单页应用  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何在腾讯云免费申请建站?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  iOS发送验证码倒计时应用  如何在香港服务器上快速搭建免备案网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Linux网络带宽限制_tc配置实践解析【教程】  进行网站优化必须要坚持的四大原则  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何为不同团队 ID 动态生成多个独立按钮  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel distinct去重查询_Laravel Eloquent去重方法  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何在景安云服务器上绑定域名并配置虚拟主机?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  如何在云虚拟主机上快速搭建个人网站?  详解jQuery停止动画——stop()方法的使用  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  如何自定义建站之星网站的导航菜单样式?  香港服务器租用每月最低只需15元?  Android Socket接口实现即时通讯实例代码  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel怎么上传文件_Laravel图片上传及存储配置  高防服务器租用首荐平台,企业级优惠套餐快速部署  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  想要更高端的建设网站,这些原则一定要坚持!  Laravel PHP版本要求一览_Laravel各版本环境要求对照  制作旅游网站html,怎样注册旅游网站?