kube-proxy IPVS 模式的一个疑问

2018-11-21 22:18:14 +08:00
 kidlj

经过仔细研究发现,kube-proxy 开启了 IPVS 模式的情况下:

  1. 访问 service 的入流量,iptables 只是 mark 封包就完成了,后面交给了 IPVS 来做 DNAT。

  2. 由 endpoint 到 service 的出流量,iptables mark 封包以后又做了 MASQUERADE 的工作;这一步的工作为什么不能交由 IPVS 直接完成?

Chain KUBE-POSTROUTING (1 references)
target     prot opt source               destination
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            /* kubernetes service traffic requiring SNAT */ mark match 0x4000/0x4000
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            match-set KUBE-LOOP-BACK dst,dst,src

另外请问,IPVS 模式的代理性能是否要比 iptables 好很多,是否还有必要自研四层负载均衡( Ingress Controller )呢?

2094 次点击
所在节点    云计算
2 条回复
abmin521
2018-11-22 12:07:55 +08:00
第一个应该是 负载均衡用的

第二个 随意啦
kidlj
2018-11-22 12:43:40 +08:00
在 Kubernetes mailinglist 上发问,得到了下面的回复,感觉理解了。

> It is not iptables doing *NAT/MASQUERADE, it is netfilter.
iptables is just an interface to netfilter just like ipvs. So fall
back here means ipvs does not setup *NAT rules for netfilter, it just
call iptables to setup the rules.

另外参考了华为做的 IPVS 和 iptables mode 的性能基准测试,IPVS 模式的性能会好很多,因为免除了大量 iptables rules 的增减,只使用了固定几条 iptables 规则。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/510219

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX