k8s配置使用ipvs替代iptables做代理转发

  • 2022-03-20 23:10:00
  • 运维
  • 653
  • shevechco

从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能。
1.k8s开启ipvs的方法
首先我们需要在内核中开启相关模块

01.
cat >> /etc/sysctl.conf << EOF
02.
net.ipv4.ip_forward = 1
03.
net.bridge.bridge-nf-call-iptables = 1
04.
net.bridge.bridge-nf-call-ip6tables = 1
05.
EOF
06.
sysctl -p


2.安装ipvs和相关依赖,并配置相关模块,使其生效

01.
yum -y install ipvsadm  ipset
02.
# 临时生效
03.
modprobe -- ip_vs
04.
modprobe -- ip_vs_rr
05.
modprobe -- ip_vs_wrr
06.
modprobe -- ip_vs_sh
07.
modprobe -- nf_conntrack_ipv4
08.
# 永久生效
09.
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
10.
modprobe -- ip_vs
11.
modprobe -- ip_vs_rr
12.
modprobe -- ip_vs_wrr
13.
modprobe -- ip_vs_sh
14.
modprobe -- nf_conntrack_ipv4
15.
EOF
16.
17.
chmod+x /etc/sysconfig/modules/ipvs.modules

3.配置k8s默认使用ipvs做转发,需要修改configmap

01.
kubectl -n kube-system edit cm kube-proxy
02.
#其中mode的地方修改为ipvs
03.
mode:"ipvs"

4.然后删除原来的kube-proxy 的pod

01.
[root@k8s-master kubernetes]# kubectl delete pod -n kube-system kube-proxy-4gz9f
02.
pod "kube-proxy-4gz9f" deleted
03.
[root@k8s-master kubernetes]# kubectl delete pod -n kube-system kube-proxy-7x8mg
04.
pod "kube-proxy-7x8mg" deleted
05.
[root@k8s-master kubernetes]# kubectl delete pod -n kube-system kube-proxy-gl55j
06.
pod "kube-proxy-gl55j" deleted

5.测试方法,主要使用ipvsadm命令来验证

可以通过查看kube-proxy的日志

01.
kubectl logs -f -n kube-system kube-proxy-tzq8n

打印出

微信截图_20220427210030.png

看到“Using ipvs Proxier”就说明已经配置成功了,同时我们也可以使用ipvsadm -Ln命令来查看

01.
ipvsadm -Ln

打印结果

微信截图_20220427210051.png

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

转载注明出处:http://www.sulao.cn/post/816

相关推荐