腾讯云服务器Kernel升级导致的一系列问题

yuanheci 2024年04月30日 158次浏览

由于想学习一下ebpf,不知怎么就跑去升级kernel了,想把原来的5.4.0内核升级到6.1。
=====> 升级教程

结果升级完,docker不能用了,直接无法启动。经过排查发现是没有overlay驱动,于是在kernel编译menuconfig中加入了overlay支持,但是还是不行。(当时没有细看日志, 其实可以结合gpt再分析一波~ 之后再试试!)

docker不能用直接导致我的服务全部瘫痪,包括这个博客。。。于是开启了拯救计划。

先是尝试换回了5.4.0内核,由于一开始以为腾讯云服务器无法看到grub,于是一直在捣鼓默认内核(也是参考上面那个教程 + gpt)。结果一直不行,后来找到了腾讯云的VPN方式登录,就可以看到主机完整的启动流程了(包括grub界面选择kernel)。
=====> 腾讯云VNC

image

在这里终于成功换回了原来的内核。以为就到此结束了吗?启动docker还是报错!

分析:
查看 Docker 的完整日志,以获取更多关于为什么 Docker 守护进程无法启动的信息:

sudo journalctl -xeu docker.service

image-1714477331921

表明 Docker 无法创建默认的 bridge 网络,因为已经存在一个具有相同桥接名称 docker0 的网络。这种冲突阻止了 Docker 守护进程的正常启动。

解决方法:

(1) 手动删除网络接口:
如果 Docker 创建了 docker0 网络接口,但由于某种原因它与现有网络发生了冲突,您可以尝试手动删除这个网络接口:

sudo ip link delete docker0

(2) 清理 Docker 进程:
如果 Docker 守护进程无法正常关闭,您可以尝试杀死所有 Docker 相关的进程:

sudo pkill -SIGHUP dockerd

(3) 检查并移除残留的 Docker 网络配置:
检查 /var/lib/docker/network/files/ 目录下是否有残留的 Docker 网络配置文件,并考虑移除它们

sudo rm -rf /var/lib/docker/network/files

(4) 重启系统

好了,终于救回来了!


2024.5.6
由于epbf一些功能(如fentry和fexit)在v5.4版本内核不支持,因此还是需要升级一下。经历了上次的“大动荡”这次谨慎多了~~
注意:Ubuntu内核升级到v5.13或v5.15时,需要升级libc和开发工具gcc,版本 >= 2.34:
由于考虑到复杂性以及docker兼容问题,因此打算先不升级到v5.13+

查看本地可用的内核升级版本:

#generic表示通用版内核。lowlatency表示低延迟内核。我们一般选择通用版内核
sudo apt-cache search linux-image | grep generic

#升级
sudo apt install linux-image-$(uname -r)-generic

最终升级到了v5.11~

grub的更新方式,centos系和debian系的命令是不同的,注意区别!