Docker 如何使用ingress nginx控制器设置负载平衡器

Docker 如何使用ingress nginx控制器设置负载平衡器,docker,nginx,kubernetes,microservices,Docker,Nginx,Kubernetes,Microservices,我不熟悉微服务。我很少有应用程序可以部署为微服务 我需要一个API和负载平衡器。对于API网关,我了解了Ingress Nginx。但我不确定热安装负载平衡。不过,我可以将其配置为API网关,如下所示 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-service annotations: kubernetes.io/ingress.class: nginx nginx.ingres

我不熟悉微服务。我很少有应用程序可以部署为微服务

我需要一个API和负载平衡器。对于API网关,我了解了Ingress Nginx。但我不确定热安装负载平衡。不过,我可以将其配置为API网关,如下所示

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: example.dev
      http:
        paths:
          - path: /api/users/?(.*)
            backend:
              serviceName: auth-srv
              servicePort: 3000
          - path: /api/orders/?(.*)
            backend:
              serviceName: order-srv
              servicePort: 3000
          - path: /?(.*)
            backend:
              serviceName: client-srv
              servicePort: 3000
我还有一个困惑:

负载平衡器位于API网关之前,即nginx控制器

我将如何配置Ingress Nginx以实现负载平衡

因为负载平衡器会将请求重定向到nginx控制器

因此,
负载平衡器->API网关>/API/orders

现在,
/api/orders->order srv->pods

显然,负载平衡器应该决定将请求路由到哪个pod


我怎样才能做到这一点呢?

嗯,这就像-

您收到了来自外部世界的请求,该请求已在负载平衡器层的第一级被截获,API网关应该是其中一个微服务,您将在其中保存所有URL映射,比如-
/API/orders/{orderId}
将其带到您的API网关,在该API网关中,您可以通过
完全限定域名订购服务(FQDN):portNumber/{uri}

因此,通过入口规则简单地将流量路由到前端和API网关是个好主意,即

-路径:/?(.*)
将把它带到客户端服务或前端


-path:/api/?(*)
这将把它带到api网关服务,它有到所有出现在幕后的服务的路由映射

谢谢@Tushar,但我的问题是负载平衡器在这里是如何工作的。若它只是将请求交给API网关,那个么我为什么需要它呢?负载平衡器应该以某种方式将请求分发给集群中的所有服务
/api/orders
可以访问order microservice的任何特定pod。幕后不会只有api Gateway的一个实例/pod,相反,它们应该有最多的min副本,并且在这个地方需要负载平衡,因为nginx将直接与之对话,除此之外,还支持多种其他功能,即TLS终止、防火墙规则、粘性等。所有这些都是由第7层负载平衡器(如nginxSo)完成的,在本例中,我有3个API网关实例,负载平衡器在它们之间分发请求。但是微服务呢?假设我正在运行order microservice的两个副本,那么谁将在其中分发对
/api/orders
的请求?这种内部负载平衡是通过服务组件完成的,tube代理参与其中。看看这个,了解更多