我想在我的 kubernetes 集群中实现一个简单的第 7 层负载均衡器,这将允许我向外部消费者公开 kubernetes 服务。
我将创建一个简单的基于 ha-proxy 的容器,它将观察 kubernetes 服务和相应的端点,并重新加载其后端/前端配置(在重新加载期间补充 SYN 吃规则)
这将允许我通过 SVCa、SVCb、SVCc 访问 Kubernetes 服务
http://load-balancer-ip:port/SVCa -------> Pod endpoints.....
http://load-balancer-ip:port/SVCb -------> Pod endpoints.....
http://load-balancer-ip:port/SVCc -------> Pod endpoints.....
与上述方法相比,上述方法如何工作
(1)ha-proxy将所有请求转发到kubernetes服务的clusterIP地址。
http://load-balancer-ip:port/SVCa ------->clusterIP-SVCa
http://load-balancer-ip:port/SVCb ------->clusterIP-SVCa
http://load-balancer-ip:port/SVCc ------->clusterIP-SVCa
(2)ha-proxy负载均衡请求到创建NodePort类型服务获得的worker-node-ip:port
http://load-balancer-ip:port/SVCa --------> node1:p1, node2:p1, node3:p1
http://load-balancer-ip:port/SVCb --------> node1:p2, node2:p2, node3:p2
http://load-balancer-ip:port/SVCc --------> node1:p3, node2:p3, node3:p3
注意:我的 k8s 集群正在自定义解决方案(本地虚拟机)上运行
最佳答案
我认为 nginx IngressController 在这种情况下可以更好地工作。 您只需在入口定义中设置后端服务和主机名。
看这里: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx
关于routes - Kubernetes 集群的外部负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111638/