首页 文章

Kubernetes集群的外部负载均衡器

提问于
浏览
0

我想在我的kubernetes集群中实现一个简单的第7层负载均衡器,这将允许我向外部消费者公开kubernetes服务 .

我将创建一个简单的基于ha代理的容器,它将观察kubernetes服务和各自的 endpoints 并重新加载其后端/前端配置(在重新加载期间补充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)对通过创建NodePort类型服务获得的worker-node-ip:port的ha-proxy负载均衡请求

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群集在自定义解决方案(内部部署VM)上运行

2 回答

  • 3

    (2)如果您的集群在没有可预测的节点名称的情况下非常动态,那么这并不理想 . 对于不可变的基础设施而言,这也是非常非常反模式的 - 如果这是你正在努力的方向 .

    (1)这将有效,但依赖于kube代理代理到另一个节点 - 现在不是超级智能的,你实际上是从haproxy(强大的代理)到kube代理(相对愚蠢的代理)到pod-添加额外的跳跃和一些(虽然最小)延迟

    您的原始计划可能是最好的,并且与入口控制器基本相同 .

  • 0

    我认为在这种情况下,nginx IngressController可以更好地工作 . 您只需在入口定义中设置后端服务和主机名 .

    看看这里:https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx

相关问题