当前位置: 首页 > news >正文

最彻底-Ubuntu系统下如何清理kubernetes(k8s)残留-2023最新

1. 为什么需要彻底清理Kubernetes残留?

很多朋友在Ubuntu上卸载Kubernetes后,以为执行几条apt remove命令就完事了。直到某天重新安装k8s时遇到各种诡异报错,或者系统出现莫名其妙的端口占用,这才发现之前的卸载根本不彻底。我去年就遇到过这种情况——明明已经卸载了所有组件,但系统里还藏着几十个kube开头的配置文件,导致新集群始终无法正常初始化。

Kubernetes在安装过程中会散布各种文件到系统各处。除了常见的/usr/bin目录下的可执行文件,还会在/etc下存放配置文件,在/var/lib下存储数据,在/opt下放置CNI插件,甚至可能修改内核模块。如果只是简单用apt remove卸载,这些"散兵游勇"就会成为日后系统问题的定时炸弹。

2. 标准卸载流程

2.1 基础组件卸载

先执行标准卸载三板斧,这能处理掉90%的可见组件:

kubeadm reset -f sudo apt-get purge --auto-remove kubernetes-cni kubeadm kubectl kubelet

特别注意这里的purge参数比普通remove更彻底,它会连配置文件一起删除。有次我忘记加这个参数,结果/etc/kubernetes目录下的配置文件全部保留了下来,导致后来重装时kubeadm一直读取旧配置。

2.2 手动清理关键目录

接下来要像扫雷一样清理这些目录:

rm -rf ~/.kube/ # 删除kubectl配置文件 rm -rf /etc/kubernetes/ # 清除集群配置 rm -rf /etc/systemd/system/kubelet.service* # 移除服务单元 rm -rf /usr/bin/kube* # 删除二进制文件 rm -rf /etc/cni /opt/cni # 清理网络插件 rm -rf /var/lib/etcd # etcd数据目录

特别注意/opt/cni这个目录,很多人在清理时都会漏掉。有次我在AWS上遇到节点网络异常,排查半天发现是旧CNI插件没删干净,和新安装的Calico产生了冲突。

3. 深度清理技巧

3.1 使用find命令地毯式搜索

执行完基础清理后,我们需要用find命令在全盘搜索漏网之鱼:

find / -name '*kube*' 2>/dev/null find / -name '*etcd*' 2>/dev/null

这个命令会列出所有包含kube或etcd关键字的文件。我建议先不加-delete参数运行一次,检查输出结果是否包含重要文件。上周有个同事不小心把/home目录下的kubeconfig也删了,里面保存着生产环境的访问凭证。

确认无误后再执行删除:

find / -name '*kube*' -delete find / -name '*etcd*' -delete

3.2 处理空目录

有些目录在文件删除后会变成空目录,特别是k8s 1.24+版本:

find / -type d -name '*kube*' -empty -delete

这个命令专门删除名为kube的空目录。我在清理测试服务器时,发现/var/lib下竟有17个这样的空目录。

4. 依赖项处理

4.1 检查残留软件包

用dpkg检查是否有漏网的k8s相关包:

dpkg -l | grep -E 'kube|etcd|cni'

如果发现残留,用aptitude处理依赖问题比apt更可靠:

sudo apt install aptitude sudo aptitude purge '~nkubernetes|~nkube|~netcd|~ncni'

有次我在Ubuntu 22.04上遇到依赖地狱,apt死活不让卸载,换成aptitude后它给出了更合理的依赖解决方案。

4.2 容器运行时清理

如果是k8s 1.24+版本,记得单独清理containerd:

sudo apt-get purge --auto-remove containerd.io

还要检查docker是否还在:

sudo apt-get purge docker-ce docker-ce-cli

5. 常见问题解决

5.1 依赖冲突处理

当看到这种报错时:

The following packages have unmet dependencies: libegl-mesa0 : Depends: libgbm1 (= 22.0.1-1ubuntu2.1) but 22.0.5-0ubuntu0.1 is to be installed E: Error, pkgProblemResolver::Resolve generated breaks

可以尝试:

sudo apt --fix-broken install sudo apt autoremove

如果还不行,就用aptitude的交互式解决方案:

sudo aptitude install libgbm1

它会给出多个解决方案选项,通常选第一个降级方案就能解决。

5.2 内核模块清理

Kubernetes可能会加载ipip等内核模块:

lsmod | grep -E 'ipip|tunnel' sudo modprobe -r ipip

我在某台机器上发现即使卸载k8s后,ipip模块仍然自动加载,后来发现是/etc/modules-load.d/下还有个k8s的配置文件。

6. 终极检查清单

执行完所有步骤后,建议做最后检查:

# 检查进程 ps aux | grep -E 'kube|etcd' # 检查端口 ss -tulnp | grep -E '6443|2379|2380' # 检查内核模块 lsmod | grep -E 'ipip|br_netfilter' # 最终扫描 find / -name '*kube*' 2>/dev/null find / -name '*etcd*' 2>/dev/null

如果所有命令都返回空,恭喜你,系统已经回到安装k8s前的纯净状态。最后别忘了执行:

sudo apt autoremove sudo apt clean

我在实际运维中发现,按照这个流程操作后重新安装k8s的成功率能达到100%,再也不会出现各种灵异问题了。特别是那些需要频繁搭建测试环境的开发者,一定要养成彻底清理的好习惯。

http://www.jsqmd.com/news/642112/

相关文章:

  • 实现双列表共用单滚动条的 CSS 解决方案
  • 告别冗余高斯!用Scaffold-GS结构化锚点,实现更鲁棒的3D场景实时渲染
  • Multi-Agent系统的容量规划:从性能基准到资源预算的完整方法
  • 如何高效管理《边缘世界》模组:RimSort免费开源模组管理器终极指南
  • PLC编程新手必看:LD、LDI、OUT指令的5个实战应用场景(附台达WPLSoft操作截图)
  • DownKyi终极指南:从零开始掌握B站视频下载的完整路线图
  • 从GROMACS到Amber:交叉工具链完成氢键寿命分析的避坑指南
  • 别再折腾模拟器了!Godot 4.4.1 项目直接打包APK,用微信传手机就能跑起来
  • AG32VF407VGT6 MCU 编程环境配置
  • 保姆级教程:在Ubuntu 20.04上搞定LeGO-LOAM(含VLP-16/Pandar-40配置与常见坑点修复)
  • 如何高效使用哔哩下载姬:专业用户的完整指南
  • 告别手动计算偏移量:用J-Flash合并STM32 Bootloader与App的保姆级教程
  • 跨模态对齐失效全解析,深度解读特征空间坍缩、模态鸿沟量化指标及3种可验证对齐增强方案
  • 2026年4月,探寻优质杨梅酒品牌:舜祥酒业深度解析与联系方式 - 2026年企业推荐榜
  • 3分钟搞定Figma中文界面:设计师必备的免费本地化插件终极指南
  • 保姆级教程:用CST Studio Suite 2024从零搭建一个4-5GHz波导弯头(附建模避坑点)
  • OpenClaw语法基础:龙虾智能体核心命令快速上手(附常用命令汇总)
  • LoongArch版ArchLinux安装指南:从ISO镜像到完整系统的Qemu虚拟化之旅
  • 2026年Q2宁波考公面试培训市场深度测评:这5家机构谁更懂本地考情? - 2026年企业推荐榜
  • BugKu渗透测试实战:从弱口令到内网漫游的全过程记录
  • 【2026奇点大会独家解码】:AIAgent视频理解的5大技术拐点与3类企业落地避坑指南
  • 02-限流熔断详解
  • 14款主流富文本编辑器深度评测:从功能到实战应用
  • 【异常】使用git clone 时提示git@github.com: Permission denied (publickey). fatal: Could not read from remote
  • 大模型推理优化:降低推理成本90%的核心技巧
  • 光刻胶选购指南:如何根据线宽需求选择I-line/DUV/EUV(附参数对比表)
  • 2026年近期宿迁AI销售服务商综合评测与选购指南 - 2026年企业推荐榜
  • AIAgent稳定性失效全景图(SITS2026核心洞察+27家头部企业故障归因数据)
  • SQL统计各分组中排名前三的记录_使用窗口函数RANK
  • Opencascade避坑指南:模型选取常见问题及解决方案