kube-proxy为什么要用ipvs?

发布时间 2023-05-25 10:50:03作者: jiayou111

kube-proxy使用IPVS的主要原因是为了提高kubernetes集群中服务的可靠性和性能。

IPVS是Linux内核中的一个功能强大的网络负载均衡器,能够根据不同的负载均衡算法将流量分配到不同的后端Pod上,从而实现高可用性和高性能的服务。
与Kube-proxy默认使用的iptables相比,IPVS具有以下优点:

1.性能更好:IPVS使用非常高效的内核空间的负载均衡算法,可以快速将请求转发到后端pod中。相比于其他负载均衡算法,ipvs性能更高,延迟更低,吞吐量更高,这对于大规模的kubernetes集群和高并发的请求非常有利。比iptables使用用户空间的算法更快。

2.可扩展性更好,可用性更高:IPVS支持多种负载均衡算法,包括轮询、加权轮询、最小连接数等。这些算法可以根据不同的负载情况进行选择,从而提高服务的可扩展性。而且IPVS支持主动探测后端Pod的健康状态,如果某个Pod不可用,则会将流量自动转发到其他健康的Pod上,从而提高服务的可靠性。

3.灵活性更高:IPVS提供了多种配置方式,可以根据需要进行灵活配置。支持多种IPVS模式,如iptables、IPVS service proxy和IPVS direct server return等,可以根据实际情况选择最适合的模式。IPVS支持多种负载均衡算法和调度策略,可以根据实际需求进行选择。

总之,Kube-proxy使用IPVS可以提高Kubernetes集群中服务的可靠性和性能,特别是在大规模集群中。在使用 IPVS 负载均衡时,需要确保 kube-proxy 的配置正确,并在每个节点上安装所需的 IPVS 组件。可以使用 ipvsadm 命令来查看当前的负载均衡规则。

安装ipvsadm工具

yum install ipvsadm

查看ipvs负载均衡规则

# 使用ipvsadm查看当前负载均衡规则
ipvsadm -Ln

# 将显示当前所有负载均衡规则和对应后端服务器列表
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.100:80 wlc
  -> 10.244.2.2:80                Masq    1      0          0
  -> 10.244.1.2:80                Masq    1      0          0

这个示例中,有一个 IPVS 负载均衡规则,监听10.0.0.100:80,采用 WLC 调度算法,有两个后端服务器10.244.2.2:8010.244.1.2:80