澄清入口负载平衡器

时间:2019-01-11 16:53:53

标签: kubernetes

我不确定Ingress如何实现负载平衡。
如果我理解正确,实际发生的事情是这样的:

enter image description here

我看不到如何进行负载均衡。
我提出的上述方案有什么问题?
你能帮我纠正一下吗?

注意:
-以下答案告诉我Ingress控制器本身的类型为“ loadbalancer”:Ingress service type
-我使用的是ClusterIP,因为我不想将负载均衡器暴露给外界。以下文章不支持此要求,该负载平衡器将由服务提供:

https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0

enter image description here

3 个答案:

答案 0 :(得分:4)

ClusterIP服务本身执行负载平衡。命名可能会造成混乱,因为LoadBalancer服务并不是唯一涉及负载平衡的服务-LoadBalancer实际上意味着更多类似“云提供商请创建一个外部负载平衡器并将其指向此服务”。 kubernetes ClusterIP也提供load-balance across Pods in different Nodes using the kube-proxy服务。如果您不希望kubernetes进行负载平衡,则必须通过creating a headless service专门将其禁用。

答案 1 :(得分:3)

您提出的第一个方案似乎是正确的。但是我认为您对术语感到困惑。特别是text = request.POST.get('text', '') new_text = zlib.decompress(text) ingress之间的区别。

ingress-controller是k8中的一种资源(例如IngressServiceDeployment等)。如果我们想通过绑定某些路径和主机将某些服务暴露给外部世界,则可以使用Ingress(即myapp.com/api-> my-api-service)。

ReplicaSet的工作是处理入口资源的创建/更新/删除,并实现入口所需的所有功能。入口控制器的内部是一个简单的部署,根据k8的部署位置,以ingress-controllerLoadBalancer服务的形式公开。图像控制器将接收到的请求进一步转发到与某些已部署的入口资源中的主机和路径匹配的服务舱之一。

答案 2 :(得分:1)

我很好奇和思考:如果它唯一要做的就是将流量转发到在第4层实现负载均衡的服务,为什么我需要在第7层上使用Ingress进行负载均衡?

我查找的大多数Ingress控制器实现都与Kubernetes API服务器进行了交谈,以跟踪与服务关联的所有Pod。他们没有将流量转发到服务,而是跳过了中介并直接转发到Pod。由于入口控制器在第7层上运行,因此可以实现更加面向应用程序的负载平衡。