本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

CentOS 7 升级内核版本到最新

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


升级原因

今天部署 Kubernetes-v1.19.0 时启动 kube-proxy 时报了这样的错误:

$ systemctl  status kube-proxy
● kube-proxy.service - Kubernetes Proxy
   Loaded: loaded (/usr/lib/systemd/system/kube-proxy.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-10-18 13:11:06 CST; 10min ago
 Main PID: 27944 (kube-proxy)
    Tasks: 8
   Memory: 20.2M
   CGroup: /system.slice/kube-proxy.service
           └─27944 /opt/apps/kubernetes/bin/kube-proxy --logtostderr=false --v=4 --log-dir=/opt/apps/kubernetes/log --config=/opt/apps/kubernetes/conf/kube-proxy-config.yml

Oct 18 13:11:06 k8s03 systemd[1]: Started Kubernetes Proxy.
Oct 18 13:11:06 k8s03 kube-proxy[27944]: E1018 13:11:06.564315   27944 proxier.go:381] can't set sysctl net/ipv4/vs/conn_reuse_mode, kernel version must be at least 4.1

即:can't set sysctl net/ipv4/vs/conn_reuse_mode, kernel version must be at least 4.1,显就是说我的内核版本不能低于 4.1

虽然这个错误看起来没怎么影响 kube-proxy 的运行,但对我这种强迫症患者来说那个报错也实在碍眼,索性就升级了吧。。

我的机器环境如下:

系统当前内核版本
CentOS 7.83.10.0-1127.el7.x86_64

小版本升级

这里我是要从 3.+ 升级到 4.1+,是大版本升级,但想着既然做了总结就一起说一下小版本升级,反正也很简单,步骤如下。

查看当前内核版本和可更新的内核版本:

$ yum list kernel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Installed Packages
kernel.x86_64                                                                                3.10.0-1127.el7                                                                                     @anaconda
Available Packages
kernel.x86_64    

直接执行 yum update kernel -y 就可以升级成功了,但需要重启才能生效。

大版本升级

添加源:

$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
$ yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
elrepo-kernel                                                                                                                                                                      | 2.9 kB  00:00:00     
elrepo-kernel/primary_db                                                                                                                                                           | 1.9 MB  00:00:01     
repo id                                                                   repo name                                                                                                                 status
elrepo-kernel                                                             ELRepo.org Community Enterprise Linux Kernel Repository - el7                                                             37
repolist: 37

检查可用的内核包:

$ yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
Installed Packages
kernel.x86_64                                                                                        3.10.0-1127.el7                                                                         @anaconda    
kernel-headers.x86_64                                                                                3.10.0-1127.19.1.el7                                                                    @updates     
kernel-tools.x86_64                                                                                  3.10.0-1127.el7                                                                         @anaconda    
kernel-tools-libs.x86_64                                                                             3.10.0-1127.el7                                                                         @anaconda    
Available Packages
kernel-lt.x86_64                                                                                     4.4.240-1.el7.elrepo                                                                    elrepo-kernel
kernel-lt-devel.x86_64                                                                               4.4.240-1.el7.elrepo                                                                    elrepo-kernel
kernel-lt-doc.noarch                                                                                 4.4.240-1.el7.elrepo                                                                    elrepo-kernel
kernel-lt-headers.x86_64                                                                             4.4.240-1.el7.elrepo                                                                    elrepo-kernel
kernel-lt-tools.x86_64                                                                               4.4.240-1.el7.elrepo                                                                    elrepo-kernel
kernel-lt-tools-libs.x86_64                                                                          4.4.240-1.el7.elrepo                                                                    elrepo-kernel
kernel-lt-tools-libs-devel.x86_64                                                                    4.4.240-1.el7.elrepo                                                                    elrepo-kernel
kernel-ml.x86_64                                                                                     5.9.1-1.el7.elrepo                                                                      elrepo-kernel
kernel-ml-devel.x86_64                                                                               5.9.1-1.el7.elrepo                                                                      elrepo-kernel
kernel-ml-doc.noarch                                                                                 5.9.1-1.el7.elrepo                                                                      elrepo-kernel
kernel-ml-headers.x86_64                                                                             5.9.1-1.el7.elrepo                                                                      elrepo-kernel
kernel-ml-tools.x86_64                                                                               5.9.1-1.el7.elrepo                                                                      elrepo-kernel
kernel-ml-tools-libs.x86_64                                                                          5.9.1-1.el7.elrepo                                                                      elrepo-kernel
kernel-ml-tools-libs-devel.x86_64                                                                    5.9.1-1.el7.elrepo                                                                      elrepo-kernel

说明:

  • lt :long term support,长期支持版本;

  • ml:mainline,主线版本;

安装最新版本的内核:

$ yum --disablerepo=\* --enablerepo=elrepo-kernel install  kernel-ml.x86_64  -y

删除旧版本工具包并安装最新版本工具包:

$ yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64  -y
$ yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml-tools.x86_64  -y

查看内核启动顺序:

$ awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.9.1-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-378ab164349d482590abb019c1e542b0) 7 (Core)

/etc/grub2.cfg/boot/grub2/grub.cfg 内容一致。

可以看到最新版本的内核已经处于索引 0 的第一个位置,虽然配置文件修改了,但它其实实际没有生效,可以执行如下命令查看启动时真正使用的内核:

$ grub2-editenv list
saved_entry=CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)

设置启动时默认使用的内核:

# 使用索引
$ grub2-set-default 0 
# 也可使用名称
$ grub2-set-default 'CentOS Linux (5.9.1-1.el7.elrepo.x86_64) 7 (Core)'

重启并检查:

$ reboot
$ uname -r 
5.9.1-1.el7.elrepo.x86_64
# Linux 杂项  

如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×