IPVS在k8s中的使用

一、IPVS的优点

1、底层hash算法,查找复杂度为O(1)

事先将所有路由存储到hash表,不像iptables底层O(0)的复杂度,需要一条条规则从上到下匹配,这样随着service的增多(nat规则增多),内核越来越忙,集群性能越来越差。

2、支持多种负载均衡策略

加权、最少连接、最小负载等

3、支持健康检查和重试(后端pod异常重试去访问另一个后端pod)

二、工作原理

   

请求包——内核空间——prerouting——内核发现目的地址是本机网卡地址——input——ipvs工作在input链(内核空间)利用ipvsadm(用户空间)定义的转发规则对数据包进行检查——如果数据包目的地址和端口不在规则里继续发往用户空间进程处理——如果在规则里则ipvs根据规则修改数据包的目的地址为后端real server,借由postrouting链转发到后端服务器

 

请求包——内核空间——prerouting——内核发现目的地址是本机网卡地址——input——ipvs工作在input链(内核空间)利用ipvsadm(用户空间)定义的转发规则对数据包进行检查——如果数据包目的地址和端口不在规则里继续发往用户空间进程处理——如果在规则里则ipvs根据规则修改数据包的目的地址为后端real server,借由nat postrouting路由表转发到后端服务器。

多了下面一步:

real server(rip网关必须指向dip)收到报文,回报文会经过ds,ds再将源ip:rip改为vip,回包给客户端

NAT只是对地址进行转换。对端不需要支持NAT。
如果是家用路由器共享的话
比如你发送的报文是src: 192.168.1.100:5000, dst: 100.100.100.100:80
你的路由其的WAN IP是101.101.101.101

你的报文到了路由器这一侧,会找一个没有使用的源端口,比如10000
然后把报文转成src: 101.101.101.101:10000, dst: 100.100.100.100:80, 并且建立192.168.1.100:5000 -> 101.101.101.101:10000的映射表。
然后100.100.100.100:80收到报文,他只知道源是101.101.101.101:10000, 所以回复报文的目的地址是101.101.101.101:1000
路由器收到报文查找映射表,把目的地址再转换成192.168.1.100:5000。

三、ipvsadm常用管理命令

ipvsadm   -Ln   #查看

 

二、IPVS在k8s中的使用

默认使用IPVS的nat模式

由于ipvs的流量通过cluster-ip,dnat到pod,需要进入本机,因此会经过input链,因此需要将cluster-ip绑定到宿主机的虚拟网卡。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随sui缘

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值