Linux(Centos7系列)内核升级
为什么部署Kubernetes V1.18.X版本需要升级内核版本呢?
基于以下2个方面考虑:
1.官方推荐Docker使用overlay2的存储驱动(overlay2存储驱动需要在内核4.0或者3.10.0-514以上版本才支持)
docker推荐存储驱动类型
Note: overlay2 is the preferred storage driver for systems running Linux kernel version 4.0 or higher, or RHEL or CentOS using version 3.10.0-514 and above.
关于容器存储驱动了解,详见:
https://docs.docker.com/storage/storagedriver
简单描述下vfs、overlay、overlay2 三种存储驱动的优缺点:
存储驱动类型 |
原理描述 |
优缺点 |
vfs |
它不是UnionFS联合文件系统,每一层都需要单独创建目录; |
不支持读写同步,磁盘空间和性能利用率低,但是稳定、可靠 |
overlay |
它是通过硬连接的方式在层与层之间直接进行共享 |
完全依赖硬链接数量,而Linux硬连接数量是有限制的;造成可支持分层的数量有限 |
overlay2 |
它直接将lower的目录dir挂载到它的/rootfs下 |
不受硬链接影响,支持读写同步,支持分层高达128层 |
Docker启动overlay2存储驱动程序需要调整:/etc/docker/daemon.json文件中的”storage-driver”: “overlay2″参数
2.Kubernetes V1.18.X版本的kube-proxy引入的IPVS模块需要内核Kernel 3.10以上版本支持(具体哪个小版本不确定)
内核版本不升级容易造成DNS解析异常:
https://github.com/kubernetes/kubernetes/issues/89520;
Centos7系统版本与初始内核版本对照表
centos7系统版本与内核版本对照表
由上图可知,在Centos7.3.1611版本以前安装docker需要升级内核版本的,不然无法支撑overlay2存储驱动系统
其它版本可通过:
https://en.wikipedia.org/wiki/CentOS 和
https://access.redhat.com/articles/3078 查看
Linux内核下载
内核仓库 |
仓库地址 |
备注 |
elrepo |
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/ |
只维护最新版本内核 |
pkgs |
https://pkgs.org/ |
内核镜像大全 |
官方仓库 |
https://www.kernel.org/ |
内核版本全,但是全部是源码包 |
清华源 |
https://mirrors.cnnic.cn/kernel |
与官方源一致 |
阿里源 |
https://developer.aliyun.com/mirror/ |
只维护特定几个版本的内核rpm/deb包,不维护源码,目前正在升级中 |
elrepo只维护新内核版本,不维护老版本;如果想安装老指定版本需要去 上下载,建议定时同步仓库内核版本到公司或者私人服务器做备份
其中lt为稳定支持版本,ml为最新版本
内核版本升级有三种方式:
日常Linux内核升级采用第三种方式:
日常Linux内核升级采用第三种方式:
查看当前内核版本
[root@kmi-xfkhyrih ~]# cat /etc/redhat-release[root@kmi-xfkhyrih ~]# uname -a
内核版本
更新yum源仓库
[root@kmi-xfkhyrih ~]# yum -y update
启用ELRepo仓库
ELRepo 仓库是基于 区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。
ELRepo 聚焦于和硬件相关的软件包,包括文件系统驱动、显卡驱动、 络驱动、声卡驱动和摄像头驱动等。
导入ELRepo仓库的公共密钥、安装 ELRepo仓库的yum源
[root@kmi-xfkhyrih ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org[root@kmi-xfkhyrih ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-5.el7.elrepo.noarch.rpm
查看当前仓库支撑内核版本,并安装最新稳定版:
[root@kmi-xfkhyrih ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available[root@kmi-xfkhyrih ~]# yum --enablerepo=elrepo-kernel install kernel-lt -y
支持安装的内核版本
–enablerepo 选项开启 CentOS 系统上的指定仓库。默认开启的是 elrepo,这里用 elrepo-kernel 替换。内核安装好后,需要设置为默认启动选项并重启后才会生效
查看系统所用内核:
[root@kmi-xfkhyrih ~]# awk -F' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
系统已安装的内核版本
设置服务器默认启动内核
[root@kmi-xfkhyrih ~]# grub2-set-default 0
[root@kmi-xfkhyrih ~]# vim /etc/default/grubGRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=saved 改成 GRUB_DEFAULT=0GRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet console=tty0 console=ttyS0,115200n8"GRUB_DISABLE_RECOVERY="true"[root@kmi-xfkhyrih ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
重启服务器验证内核生效
[root@kmi-xfkhyrih ~]# reboot[root@kmi-xfkhyrih ~]# uname -aLinux kmi-xfkhyrih.novalocal 5.4.114-1.el7.elrepo.x86_64 #1 SMP Mon Apr 19 18:53:45 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
由此可知内核版本已更新生效。
卸载老版本内核(可选)
1.通过yum remove方式
[root@kmi-xfkhyrih ~]# rpm -qa|grep kernelkernel-3.10.0-1127.el7.x86_64kernel-tools-3.10.0-1160.24.1.el7.x86_64kernel-lt-5.4.114-1.el7.elrepo.x86_64kernel-3.10.0-1127.19.1.el7.x86_64abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64kernel-tools-libs-3.10.0-1160.24.1.el7.x86_64kernel-3.10.0-1160.24.1.el7.x86_64
可通过yum remove 方式删除不需要的内核版本,一般版本不超过5个,建议不用删除
2.通过yum-utils工具删除
内核个数不超过3个的时候,工具不删除,超过3个执行 package-cleanup –oldkernels清理
[root@kmi-xfkhyrih ~]# package-cleanup --oldkernels
到此Centos系统升级内核完成。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!