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