k8s集群kube-proxy从iptables模式切换到ipvs模式

看我们之前的k8s部署教程基本都是有安装和配置ipvs,但是都没切换到ipvs模式,今天我们就专门来记录一篇笔记来讲下如何切换到ipvs模式。

ipvs和iptables都是通过netfitle内核进行转发,iptables只是为防火墙设计的,IPtable只是防火墙,而ipvs是专门用于高性能负载均衡的,并使用更高效的数据结构,如hash表并支持索引。

ipvs为大型集群提供了更好的可扩展性和性能,支持更复杂的负载均衡算法,如rr、wrr、lc、wlc等,同时ipvs也之后i服务健康检查和链接重试等机制。

1.ipvs的安装

apt install ipset ipvsadm -y

2.加载ipvs内核模块

然后写一个脚本用来启动加载ipvs内核相关的模块

mkdir -p /etc/sysconfig/modules/
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF

然后设置权限并执行内核加载

chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules

可以使用如如下命令检查相关内核是否加载完成

lsmod | grep -iE 'ip_vs|nf_conntrack'

3.切换kube-proxy代理方式

从k8s 1.14.2开始切换ipvs就必须要开启arp严格模式,也就是srtictARP要设置为true。

kubectl edit configmap -n kube-system kube-proxy
strictARP: true #改为true
mode: "ipvs" #填写ipvs

202507240903196473250238.png

保存退出后重启kube-proxy

kubectl get pod -n kube-system |grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'

4.验证切换ipvs模式

然后查看kube-proxy的日志,可以看到打印Using ipvs相关的日志信息说明切换完成了。

202507232120433085921298.png

上述除了写的集中ipvs算法加载到内核,实际还有其他很多算法模块,可以根据自己的需求来添加

ip_vs_wlc 
ip_vs_sed
ip_vs_pe_sip
ip_vs_nq
ip_vs_lc 
ip_vs_lblcr 
ip_vs_lblc
ip_vs_ftp
ip_vs_dh 
ip_vs_sh
ip_vs_wrr 
ip_vs_rr 
ip_vs

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1100

评论列表

0%