0

0

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

冰川箭仙

冰川箭仙

发布时间:2026-01-20 15:54:37

|

171人浏览过

|

来源于php中文网

原创

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

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

卸载 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 不提供“批量删除所有未使用镜像”的一键命令,需组合操作:

Detect GPT
Detect GPT

一个Chrome插件,检测您浏览的页面是否包含人工智能生成的内容

下载
  • 停止 containerd: sudo systemctl stop containerd
  • 删除所有容器(含已退出):sudo ctr -n k8s.io containers delete $(sudo 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 等精简参数,减少初始化组件,降低残留风险

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1027

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

454

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

269

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

210

2023.12.29

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

252

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

495

2024.04.08

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 17.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号