问题:搭建K8S时,需要节点机器使用 ipvs 替换iptables,结果再重启kube-proxy组件时,切换ipvs失败,原因是我的节点机器为centos7.9,内核不满足k8s要求,K8S要求kernel必须大于等于4.1版本,如下:
I1121 01:22:37.084309 1 server_others.go:142] kube-proxy node IP is an IPv4 address (139.159.228.11), assume IPv4 operation
I1121 01:22:37.117710 1 server_others.go:258] Using ipvs Proxier.
E1121 01:22:37.117898 1 proxier.go:389] can't set sysctl net/ipv4/vs/conn_reuse_mode, kernel version must be at least 4.1
W1121 01:22:37.117968 1 proxier.go:445] IPVS scheduler not specified, use rr by default
解决步骤:
这里一定要看清楚,这个kube-proxy的pod到底是属于哪一个node节点的,属于哪个node节点,再去操作对应的node节点!我升级了master节点的内核,后面查看node节点的kube-proxy,很ben......
1、查看当前系统内核编码
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
不满足k8s的要求
2、配置阿里云的elrepo镜像源
vi /etc/yum.repos.d/elrepo.repo
填入:
[elrepo]
name=elrepo
baseurl=https://mirrors.aliyun.com/elrepo/archive/kernel/el7/x86_64
gpgcheck=0
enabled=1
- 清空和刷新yum源元数据缓存
yum clean all && yum makecache
3、查镜像仓库中内核包
- 这一步一定要做,因为仓库里面的内核包会存在更新,我这里是有的是5.4.254,可能过一段时间这个版本就没了,自己用其他的版本即可
yum list --showduplicate kernel*
4、安装内核
yum install -y kernel-lt-5.4.254
yum install -y kernel-lt-devel-5.4.254
5、设置启动的内核
命令:(设置编码为0的内核,也就是刚刚安装的内核)
grub2-set-default 0
6、重启操作系统
reboot
7、查看生效的版本
hostnamectl
8、查看node节点中的kube-proxy日志
k8s不会再报版本问题