kubeproxy 会监听 pod 的变化,在 node 上配置 iptables规则,将访问的 service ip,做 DNAT,转到 service 负载均衡的endpoint ip。但是 iptables 查找负载均衡的 endpoint 是 O(n)复杂度,当集群 pod 数量庞大时,性能低下。而 ipvs 实现方案,可以实现 O(1)复杂度查找,性能更好。 iptables 实现方案还有个缺点,无法额外配置自定义的 nat 规则。因为在nat表里面对数据包进行dnat操作过后,数据包就不在执行nat表里面的其它规则
更新的注意事项
使用宿主机的 network namespace,包括网络设备、路由表、防火墙规则、协议栈,可通过 lo 网络设备和宿主机通信。
协议栈、路由表、网络设备、防火墙规则、网络状态
虚拟网卡对
可以。通过虚拟网卡对-》docker 网桥-》ip 路由表-》宿主机网卡
可以。通过虚拟网卡对-》docker 网桥-》ip 路由表-》宿主机网卡
不可以。宿主机网卡出去时,需要做 iptables SNAT,否则回不来。
Post Views: 12