K3s 卸载/重装后残留大量 crictl 容器和网络接口怎么清理
发布时间 - 2026-01-20 00:00:00 点击率:次卸载K3s后残留容器、镜像及CNI接口,是因containerd和网络配置未彻底清理;需用ctr命令删除底层资源,清除CNI网卡与iptables规则,并清空/var/lib/rancher/k3s等目录。
卸载 K3s 后,crictl 仍能列出旧容器、镜像,或 ip link 显示残留的 CNI 接口(如 cni0、flannel.1、br-* 等),说明底层运行时(containerd)和网络配置未被清除。这不是 crictl 本身的问题,而是 K3s 卸载不彻底导致的资源滞留。
确认残留容器和镜像是否真实存在
先验证这些“残留”是否还在运行或驻留:
- 执行
crictl ps -a查看所有容器状态;若显示Exited或Unknown,说明它们只是元数据未清理,实际进程已不存在 - 运行
crictl images检查镜像列表;大量镜像或旧版本 k3s 系统镜像(如rancher/pause、docker.io/traefik)属于典型残留 - 用
sudo ctr -n k8s.io containers list和sudo 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 -a和crictl images,应为空或仅剩基础 pause 镜像(重装后会自动拉取)
清除 CNI 网络接口和 iptables 规则
K3s 默认使用 Flannel 或 Calico,卸载后常遗留虚拟网卡和防火墙链:
- 查看残留接口:
ip link show | grep -E "(cni|flannel|cilium|br-)" - 逐一删除(示例):
sudo ip link delete cni0、sudo ip link delete flannel.1 - 清空 K3s 相关 iptables 链:
sudo iptables -t nat -F KUBE-SERVICES、sudo 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,怎样注册旅游网站?


