持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情
IPVS概念
ipvs称之为IP虚拟服务器,IPVS基本上是一种高效的Layer-4交换机,它提供负载平衡的功能。当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS不用检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。
k8s启用ipvs
如何启用ipvs呢?配置如下
第一步:开启内核参数
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl -p
第二步:加载内置的ipvs模块
lsmod|grep ip_vs
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
第三步: 安装ipvsadm
yum install ipvsadm ipset -y
第四步: 设置k8s启用ipvs
kubectl edit configmap kube-proxy -n kube-system
修改配置
mode: "ipvs"
iptables.masqueradeAll: true
第五步:删除k8s启动的pod
重新配置了ipvs以后,需要重新启动pod
kubectl delete pod -all -n kube-system
pod会重新创建。
第六步:检验ipvs启动是否生效
查看kube-proxy-***的日志
kubectl logs kube-proxy-xxx -n kube-system
找到其中一个kube-proxy, 看到using ipvs Proxier. 表示启用ipvs成功.
第七步: 查看ipvs维护的ip列表
ipvsadm -ln
我们可以找到一个指定svc, 根据svc查看ipvs匹配的ip列表.