5-1、ipvs

ipvs
一、概念

ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为 Linux 内核的一部分。



ipvs运行在主机上,在真实服务器集群前充当负载均衡器。ipvs可以将基于TCP和UDP的服务请求转发到真实服务器上,并使真实服务器的服务在单个 IP 地址上显示为虚拟服务。



ipvs vs. iptables#



我们知道kube-proxy支持 iptables 和 ipvs 两种模式,



在kubernetes v1.8 中引入了 ipvs 模式,在 v1.9 中处于 beta 阶段,在 v1.11 中已经正式可用了。



iptables 模式在 v1.1 中就添加支持了,从 v1.2 版本开始 iptables 就是 kube-proxy 默认的操作模式,



ipvs 和 iptables 都是基于netfilter的,那么 ipvs 模式和 iptables 模式之间有哪些差异呢?



ipvs 为大型集群提供了更好的可扩展性和性能

ipvs 支持比 iptables 更复杂的负载均衡算法(最小负载、最少连接、加权等等)

ipvs 支持服务器健康检查和连接重试等功能



ipvs 依赖 iptables#



ipvs 会使用 iptables 进行包过滤、SNAT、masquared(伪装)。



具体来说,ipvs 将使用 ipset 来存储需要 DROP 或 masquared 的流量的源或目标地址,以确保 iptables 规则的数量是恒定的,这样我们就不需要关心我们有多少服务了

使用ipvs:
修改kubelet配置文件/etc/sysconfig/kubelet,追加内容:
KUBE_PROXY_MODE=ipvs
ip_vs,ip_vs_rr,ip_vs_wrr,ip_VS_sh,nf_conntrack_ipv4
修改kube-proxy 启动参数:
在每个worker节点上修改,kube-proxy启动参数
vi /etc/systemd/system/kube-proxy.service, 加上 --proxy-mode=ipvs \,然后执行下面命令

ClusterIP,NodePort:
    NodePortLclient ---> NodeIP:NodePort  ---> ClusterIP:ServicePort  --->PodIP:containerPort
    LoadBalancer:
    ExternelName:
        FQDN:CNAME --->FQDN
No ClusterIP:Headless Service
    ServiceName --->PodIP    

https://www.jianshu.com/p/89f126b241db

 

posted @ 2022-11-14 23:48  Sky-wings  阅读(81)  评论(0编辑  收藏  举报