背景
我的ecs当前版本是3.10.0,使用cilium的话内核最低版本是4.9.17,看了下要想使用全部的功能最低内核版本是5.10,所以升级到5.10版本。
当前环境:
kernel:3.10.0-957.21.3.el7.x86_64
centos:7.6.1810
gcc:4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
步骤
1.清理yum缓存
yum clean all
2.重新建立缓存
yum makecache fast
3.升级系统
yum update -y
4.重启系统
reboot
5.创建ecs快照
为了以防万一,还是创建一个快照更为保险,毕竟要升级内核。。。
6.配置elrepo源,导入public key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
7.安装ELRepo
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
8.列举可用的kernel版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
版本说明
- kernel-ml #主线版本,比较新
- kernel-lt #长期支持版本,比较旧
9.安装最新版本5.18.14-1.el7.elrepo
yum --enablerepo=elrepo-kernel install kernel-ml
10.修改初始内核参数
sed -i s/saved/0/g /etc/default/grub&& grub2-mkconfig -o /boot/grub2/grub.cfg
11.修改默认启动项
grub2-editenv list
# 修改默认内核启动项为 0
grub2-set-default 0
12.重启
reboot
13.查看内核版本
uname -r
注意
在上面的第3步升级系统后,kubelet,kubectl,kubeadm都会跟着一起升级,如果跨了多个版本,升级内核后kubelet会启动失败,会无法查看集群状况。报错信息如下:
我这里就是kubelet从1.22升级到了1.24.3,kubectl只允许跨一个小版本,即1.23可以查看1.22和1.24版本的集群。
解决
1.卸载1.24.3的kubelet,kubectl,kubeadm
yum remove kubeadm kubectl kubelet -y
2.查询版本
yum list kubelet kubeadm kubectl --showduplicates | sort -r
3.选择最新,安装1.22.9-0(也可以选择1.23.9)
yum install -y kubeadm-1.22.9-0 kubectl-1.22.9-0 kubelet-1.22.9-0
4.启动kubectl
systemctl enable kubelet
systemctl restart kubelet
systemctl status kubelet