看我们之前的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
保存退出后重启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相关的日志信息说明切换完成了。
上述除了写的集中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
评论列表