文章目录
CentOS 7.x 内核kernel版本升级实操
前言
在玩耍kubernetes 集群中(之前部署的一套,可以查看我之前的博客内容),想要尝试部署的CNI Cilium 仅在 kernel 4.8 版本以上支持,推荐使用4.9 以上内核版本;而之前部署使用的CentOS 7.6 缺省内核版本为3.10 ;并即便是CentOS 8.2 也达不到 4.9的版本,所以需要将当前机器的内核版本升上去,本篇记录一下操作过程;
实操记录
升级前信息查看和准备
# 检查当前 CentOS 系统版本
cat /etc/redhat-release
# 检查当前 CentOS 系统内核版本
uname -sr
可以看出当前系统为 CentOS 7.6,系统内核版本为 3.10.
这里运行 yum 命令升级(虽然目前没看到做这部操作的意义(⊙o⊙),考虑到系统内核版本升级跨度较大)
CentOS 中 update 命令可以一次性更新所有软件到最新版本。
注意:不推荐使用 update 的 -y选项,-y 选项会让你在安装每项更新前都进行确认,这样会非常费时间.对于 CentOS 5.× 和 6.× 的系统我们在更新后需要重新安装应用程序恢复数据,庆幸的是 CentOS 7.× 不需要这么麻烦,可以直接升级.
yum clean all
yum update
yum update 由于centos 的安全性和稳点性是不会升级系统内核的;
因为 CentOS 为了安全和稳定并不会把系统内核升级到最新的版本,所以 yum update 命令只会升级系统版本和更新软件.接下来我们就来升级系统内核.
升级 CentOS 7.× 内核,启用 ELRepo
大多数现代发行版提供了一种使用 yum 等包管理系统和官方支持的仓库升级内核的方法。
但是,这只会升级内核到仓库中可用的最新版本,而不是在 The Linux Kernel Archives 中可用的最新主线稳定内核.不幸的是, Red Hat 只允许使用 yum 升级内核.与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新主线稳定内核.
要在 CentOS 7.× 上启用 ELRepo 仓库,请运行:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 仓库启用后,你可以使用下面的命令列出可用的系统内核相关包:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
# 接下来,安装最新的主线稳定内核:
yum --enablerepo=elrepo-kernel install kernel-ml
由于网络原因,以上操作可能需要不少时间.
重启机器,检查当前 CentOS 系统内核版本,重启后机器可能还不是刚最新安装的系统内核版本,需要设置GRUB 默认的内核版本;这里会有2中设置方案,验证都可以;(我截图的是第二种);
设置 GRUB 默认的内核版本
方法1如下:
为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB 配置,打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0.意思是 GRUB 初始化页面的第一个内核将作为默认内核.
# vi /etc/default/grub
> GRUB_TIMEOUT=5
> GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
> GRUB_DEFAULT=0
> GRUB_DISABLE_SUBMENU=true
> GRUB_TERMINAL_OUTPUT="console"
> GRUB_CMDLINE_LINUX="crashkernel=auto console=ttyS0 console=tty0 panic=5"
> GRUB_DISABLE_RECOVERY="true"
> GRUB_TERMINAL="serial console"
> GRUB_TERMINAL_OUTPUT="serial console"
> GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"
接下来运行下面的命令来重新创建内核配置.
grub2-mkconfig -o /boot/grub2/grub.cfg
方法2:
# 使用cat /boot/grub2/grub.cfg |grep menuentry 查看系统可用内核
cat /boot/grub2/grub.cfg |grep menuentry
# 查看当前内核
uname -r
# 修改开机时默认使用的内核
grub2-set-default 'CentOS Linux (5.9.11-1.el7.elrepo.x86_64) 7 (Core)'
# 重启机器,查看系统当前内核版本,验证最新的内核已作为默认内核
# uname -a
删除 CentOS 更新后的旧内核
查看系统中全部的内核 RPM 包:
rpm -qa | grep kernel
删除旧内核的 RPM 包
yum remove kernel-3.10.0-1160.6.1.el7.x86_64 kernel-tools-libs-3.10.0-1160.6.1.el7.x86_64 kernel-devel-3.10.0-1160.6.1.el7.x86_64 kernel-headers-3.10.0-1160.6.1.el7.x86_64 kernel-tools-3.10.0-1160.6.1.el7.x86_64 kernel-3.10.0-957.21.3.el7.x86_64 kernel-devel-3.10.0-957.21.3.el7.x86_64
重启系统
reboot
[root@master ~]# grub2-set-default 'CentOS Linux (5.9.11-1.el7.elrepo.x86_64) 7 (Core)'
[root@master ~]# grub2-editenv list
saved_entry=CentOS Linux (5.9.11-1.el7.elrepo.x86_64) 7 (Core)
[root@master ~]# uname -a
Linux master 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@master ~]# rpm -qa |grep kernel
kernel-tools-libs-3.10.0-1160.6.1.el7.x86_64
kernel-3.10.0-1160.6.1.el7.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
kernel-devel-3.10.0-1160.6.1.el7.x86_64
kernel-headers-3.10.0-1160.6.1.el7.x86_64
kernel-tools-3.10.0-1160.6.1.el7.x86_64
kernel-ml-5.9.11-1.el7.elrepo.x86_64
kernel-3.10.0-957.21.3.el7.x86_64
kernel-devel-3.10.0-957.21.3.el7.x86_64
[root@master ~]# yum remove kernel-3.10.0-1160.6.1.el7.x86_64 kernel-tools-libs-3.10.0-1160.6.1.el7.x86_64 kernel-devel-3.10.0-1160.6.1.el7.x86_64 kernel-headers-3.10.0-1160.6.1.el7.x86_64 kernel-tools-3.10.0-1160.6.1.el7.x86_64 kernel-3.10.0-957.21.3.el7.x86_64 kernel-devel-3.10.0-957.21.3.el7.x86_64
后记,内核升级成功后,查看2台机器 kubernetes pod 状态,可以看到 CNI Cilium 已经正常running 了,不是之前由于内核版本不支持时的异常状态;
参考博客:
https://blog.csdn.net/weixin_40268920/article/details/78007096
https://www.jianshu.com/p/fdf6bb6c5b9c