升级原因
今天部署 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.8 | 3.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
评论区