看我们之前的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
相关阅读
- k8s使用SA和Secret配置私有仓库镜像拉取凭证
- k8s使用flannel作为CNI网络插件
- k8s中harbor-database-0日志报Permissions should be u=rwx (0700)的处理方法
- k8s使用helm部署harbor镜像仓库并使用nodeport方式暴露
- k8s集群部署prometheus/node-exporter/dcgm-exporter
- k8s中calico匹配多种网络接口名字的方法
- ubuntu22.04使用containerd部署k8s集群
- k8s级联删除(删除deployment却删除不了rs和pod)异常问题的处理办法
- k8s中修改containerd存储目录并将数据迁移到新磁盘目录
- k8s网络cni插件calico的安装和网络模式切换
评论列表