首页 > 其他分享 >ipvs

ipvs

时间:2023-07-16 10:33:55浏览次数:42  
标签:iptables IP ipvsadm 网卡 ipvs ipvs0

iptables的缺点和ipvs的优点

当宿主机上有大量Pod时,大量iptables规则不断被刷新,占用大量CPU。
ipvs采用了hash数据结构,比iptables更加高效。
当创建了Service后,kube-proxy在每个宿主机上创建一个虚拟网卡(名字是kube-ipvs0),每个网卡上配置所有service的ip,每个IP地址上设置多个IPVS虚拟主机即Pod,使用轮询模式来作为负载均衡策略。
LVS由ipvs(工作在内核空间,实现负载均衡)和ipvsadm(工作在用户空间,编写规则)组成。
iptables是为防火墙而设计的,IPVS用于高性能负载均衡。

PREROUTING链确定目标IP是本机IP,将数据包发往INPUT链。
IPVS是工作在INPUT链上的,如果用户请求的是自定义集群服务,那么IPVS修改数据包里的目标IP地址和端口,把新的数据包发往POSTROUTING链。
POSTROUTING链把数据包发送给后端服务器。

IPVS用于负载均衡,不能实现包过滤和源地址转换等,使用iptables来实现。
通过ipset来减少iptables规则。
下面四种场景使用iptables
1. kube-proxy启动参数中带有--masquerade-all=true,即所有流量作源地址转换。
2. kube-proxy启动参数中指定CIDR。
3. 支持LoadBalancer类型的service。
4. 支持NodePort类型的service。

安装ipvs

yum install -y ipvsadm
默认没有集群服务
ipvsadm -ln

模拟创建service和pod

# 创建dummy类型的虚拟网卡,绑定service的ClusterIP
ip link add ipvs0 type dummy
ip addr add 10.247.0.1/24 dev ipvs0

本机ping通10.247.0.1,是否ping通与ipvs0的down或者up无关。

其他节点ping不通该IP,因为缺少路由。

ipvs0上既有同网段IP又有10.247.0.1

ipvs0网卡IP与虚拟机网卡IP同网段时,其他节点ping通同网段IP。

dummy类型网卡默认设置了NOARP,是否设置NOARP与网卡down和up无关。
NOARP在网卡up时生效,down时返回同属于内核协议栈的虚拟机网卡mac地址。

在其他节点上查看arp结果

docker run -itd nginx
docker run -itd nginx

# 创建集群服务
ipvsadm -A -t 10.247.0.1:2080 -s rr
# 在集群服务中添加后端服务,轮询负载均衡DNAT转发
ipvsadm -a -t 10.247.0.1:2080 -r 172.17.0.2:80 -m
ipvsadm -a -t 10.247.0.1:2080 -r 172.17.0.3:80 -m

ipvsadm -ln

抓包验证流量发送给容器

for ((i=0; i<10; i++)) do curl 10.247.0.1:2080 >/dev/null; sleep 2; done

tcpdump -i docker0 port 80 -nevvv

清空ipvs

# 不影响dummy类型网卡ipvs0
ipvsadm -C

参考资料

深入理解 Kubernetes 网络模型:自己实现 Kube-Proxy 的功能

基于IPVS的集群内负载均衡深入解读

ipvs之ipvs0网卡

标签:iptables,IP,ipvsadm,网卡,ipvs,ipvs0
From: https://www.cnblogs.com/WJQ2017/p/17557540.html

相关文章

  • 负载均衡集群ipvsadm命令及基本用法
     ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。需要使用yum单独安装。基本用法:ipvsadmCOMMAND[protocol]service-address        [scheduling-method][persistenceoptions]ipvsadmcommand[protocol]service-address  ......
  • kube-proxy的iptables与ipvs模式性能对比与分析
    kube-proxy的iptables与ipvs模式性能对比与分析背景:iptables代理模式iptables是一个Linux内核功能,旨在成为一种高效的防火墙,具有足够的灵活性来处理各种常见的数据包操作和过滤需求。它允许将灵活的规则序列附加到内核数据包处理管道中的各种钩子上。在iptables模式下,kube-p......
  • golang vrrp + ipvs 实现简单的服务ha
    比较类似keeplived,但是是比较简单的集成参考图基于vrrp实现vip的处理,同时master以及backup安装基于vrrp+ipvs的程序,基于服务状态进行服务的切换处理 实现说明:对于vrrp处理可以基于包装的vrrpgolang(rongfengliang/vrrp)包,同时对于ipvs可以直接ipvs包(可以使用mqli......
  • IPVS
    指定--proxy-mode=ipvs时IPVS使用的NAT模式做服务映射,Masq:masquerading:指定LVS的工作模式为NAT模式 [root@k8s-master01~]#ipvsadm-L-n//查看LVS状态IPVirtu......
  • 开启ipvs模式
    如果没有开启的话使用命令ipvsadm-ln开启ipvs模式kubectleditcmkube-proxy-nkube-system#修改mode为ipvs再执行命令,如果不行,重启一下服务器。。ip......
  • 5-1、ipvs
    ipvs一、概念ipvs(IPVirtualServer)实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为Linux内核的一部分。ipvs运行在主机上,在真实服务器集群前充当负载......
  • 部署Kubernetes 1.25.4初始ipvs模式
    1、环境准备主机名IP地址系统版本k8s-master01k8s-master01.wang.org​kubeapi.wang.orgkubeapi192.168.100.201Ubuntu2004k8s-master02k8s-master02.wang.org192.168.1......
  • k8s iptables 改造ipvs
    1.修改iptables为ipvs模式 ipvs采用的hash表,iptables采用一条条的规则列表。集群数量越多iptables规则就越多,而iptables规则是从上到下匹配,所以效率就越是低下......
  • Linux 使用ipvsadm管理LVS
    lvs是内核里面的功能,在内核中叫做ipvs用户空间使用ipvsadm这个工具包提供的工具来管理内核中的ipvs功能ipvsadm命令ipvsadm核心功能:集群服务管理:增、删、改......
  • LVS VS-TUN ipvsadm+heartbeat-ldirectord搭建linux集群
    ​测试环境一台调度机,两台真实机,使用ipvsadm+ldirectord搭建vs-tun的linux集群3台服务器都安装centos5.4调度机IP:eth0:192.168.11.10调度机VIP:eth0:0:192.168.11.20真实机1IP:e......