【问题标题】:Why put a LoadBalancer Type of Service in front of the Nginx Ingress为什么在 Nginx Ingress 前面放一个 LoadBalancer 类型的服务
【发布时间】:2021-09-18 00:31:00
【问题描述】:

我发现在生产环境中使用公共云的一些 k8s 用例会将 LoadBalancer 类型的服务放在 Nginx Ingress 前面。 (您可以从下面的 yaml 中找到一个示例。)

据我所知,ingress 可用于向公众公开内部服务,那么在 ingress 前面放置负载均衡器有什么意义呢?我可以删除该服务吗?

apiVersion: v1
kind: Service
metadata:
  annotations:
  labels:
    helm.sh/chart: ingress-nginx-3.27.0
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/version: 0.45.0
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: controller
    kubernetes.io/elb.class: union
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  type: LoadBalancer
  loadBalancerIP: xxx.xxx.xxx.xxx
  externalTrafficPolicy: Cluster
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller

【问题讨论】:

    标签: kubernetes kubernetes-ingress


    【解决方案1】:
    ...so what's the point to put a loadbalancer in front of the ingress?
    

    通过这种方式,您可以利用云提供商 LB 设施(例如 multi-az 等),然后通过 Ingress,您可以使用基于路径或名称的虚拟主机进一步控制集群中服务的路由。

    Can I delete that service?
    

    Ingress 不进行端口映射或 Pod 选择,您无法使用 DNS 解析 Ingress 名称。

    【讨论】:

      【解决方案2】:

      因为在这种情况下,Ingress Controller 本身在 Pod 中运行,因此它需要像在 Pod 中运行的其他任何东西一样暴露在互联网上。一些 Ingress Controller 具有在外部运行的实际代理,例如 AWS ALB。但是 Nginx 只是像平常一样在容器内运行。

      【讨论】:

        猜你喜欢
        • 2021-12-20
        • 2021-11-05
        • 2022-06-11
        • 2021-04-22
        • 2019-09-10
        • 2018-08-31
        • 2018-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多