问题描述
部署kubernetes的时候使用默认安装kube-proxy采用的是iptables模式,想转变成ipvs模式。
问题原因
kube-proxy提供三种代理模式(userspace、iptables、ipvs),ipvs性能要比iptables好很多,但是部署kubernetes默认使用的iptables,是因为系统没有配置ipvs相关模块,,建议生产集群使用ipvs模式。
解决方案
1.系统版本7.9
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2.安装必要的软件包
yum install ipset ipvsadm -y
3.命令行(临时添加)
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
4.系统文件中添加(永久添加)
cat /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
5.修改kube-proxy configmap 执行如下命令
kubectl edit configmap kube-proxy -n kube-system
修改如图位置,改为ipvs 6.重所有节点上的kube-poxy
kubectl get pod -A|grep kube-proxy
kubectl delete pod <kube-proxy-name> -n kube-system
7.验证 通过以下命令查看是否有对应规则生成
ipvsadm -L
参考链接
https://kubernetes.io/blog/2018/07/09/ipvs-based-in-cluster-load-balancing-deep-dive/