【问题标题】:Is an ingress and ingress contoller needed是否需要入口和入口控制器
【发布时间】:2020-02-13 15:09:36
【问题描述】:

我是一个 kubernetes 新手,无论我读了多少关于它的内容,我都无法理解这个问题。
我有一个简单的部署,它正在创建一个带有不那么复杂的应用程序的 pod。
我知道入口和入口控制器在做什么,但据我所知,我不需要在外部公开我的 pod-app。
只有一个 LoadBalancer 服务就足够了。
我不需要多个流量路由规则。
我错了吗?

【问题讨论】:

    标签: nginx kubernetes kubernetes-ingress nginx-ingress kubernetes-service


    【解决方案1】:

    传统上,您会为要对外公开的每个服务创建一个 LoadBalancer 服务。这可能会变得相当昂贵。 Ingress 为您提供了一种基于请求主机或路径将请求路由到服务的方法,将多个服务集中到一个入口点。

    此外,负载均衡器配置需要时间,并且仅适用于 AWS、GCP 等受支持的云提供商。

    另外需要考虑的是 L4(TCP/UDP) 层路由的需要,因为 kubernetes Ingress API 主要是 L7 层,但一些入口控制器,例如 traefik,nginx 支持 L4 层(TCP/UDP) 和 L7层(HTTP)路由。

    所以回答您的问题是否取决于您的环境和用例。

    【讨论】:

    • Ingress 路由也可以立即添加,而 LoadBalancer 配置取决于您的特定云供应商,有时可能需要一分钟。
    • 感谢您的回答。在我的例子中,我部署了一个 python web 应用程序,它从一个 influx 数据库返回一些结果,它也部署在同一个 kubernetes 集群中。我使用 LoadBalancer,它允许我通过使用 external-ip 和端口对数据库进行外部访问。我想为我的 python 应用程序 pod 提供类似的东西。它们都部署到 AWS ,但我不知道如何使用我的 python webapp 服务来做到这一点。
    • 您可以为您的 python 应用程序获取 ALB,这里是使用 AWS ALB 入口控制器 github.com/kubernetes-sigs/aws-alb-ingress-controller/tree/… 的示例
    【解决方案2】:

    Ingress 和 IngressController 用于第 7 层的流量路由,即,如​​果您的后端使用 HTTP、GRPC 等 L7 协议。您可以使用 Ingress 根据请求路径将请求路由到不同的后端服务。

    • 如果您的应用不在第 7 层运行,您可能不需要 Ingress。

    • 如果您将应用程序从非 kubernetes 环境迁移到 kuberneters,您可能会问自己的另一个问题是 - 您是否已经在使用像 nginx 这样的反向代理?如果是这样,您可能想要使用 Ingress。我说可能是因为没有必要。您可以通过将 nginx 容器作为 pod 运行、自己编写 nginx.conf 并使其在外部可用(例如使用 LoadBalancer 服务)来实现使用 Ingress 的相同效果。相反,通过使用 IngressController,您无需维护 nginx pod 或编写 nginx.conf。您可以改为表达与Ingress 资源相同的配置,这要简单得多。

    【讨论】:

      【解决方案3】:

      如果您想向外部公开您的服务,则需要 Ingress。特别是对于layer 7 in OSI model(HTTP 传输)。 Ingress 还提供了在负载均衡器中启用 TLS 支持的机制。流量路由由 Ingress 资源上定义的规则控制。可以将 Ingress 配置为向服务提供外部可访问的 URL、负载平衡流量、终止 SSL / TLS 并提供基于名称的虚拟主机。 Ingress 控制器负责实现 Ingress,通常使用负载均衡器,但它也可能配置您的边缘路由器或其他前端来帮助处理流量。

      默认情况下,Ingress 控制器取决于您使用的云提供商类型,或者如果您在本地使用,则需要根据需要进行设置。在一个集群中,您也可以创建多个 Ingress 控制器。 Ingress 控制器有很多种,你可以去this article看看。

      我认为this article about Load Balancer and Ingress 也可能有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-04-17
        • 2021-02-23
        • 2021-11-02
        • 1970-01-01
        • 2021-01-28
        • 2020-02-10
        • 2021-03-07
        • 1970-01-01
        • 2021-03-18
        相关资源
        最近更新 更多