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:80
和10.244.1.2:80
。