【问题标题】:Limit one connection per pod using GKE Ingress使用 GKE Ingress 限制每个 pod 一个连接
【发布时间】:2019-10-31 18:53:01
【问题描述】:

我有一个 GKE 部署,其中包含处理长时间运行的内存密集型请求的 pod。它位于 Ingress 后面的 NodePort 服务后面(基于this tutorial)。

我想限制每个 pod 的并发连接数,以避免节点耗尽内存。 This SO question 建议使用 Nginx Ingress 控制器。

这可以通过 GKE 的默认 Ingress 实现吗?我对 Kubernetes 还很陌生,如果可能的话,我想限制复杂性。

【问题讨论】:

    标签: google-kubernetes-engine


    【解决方案1】:

    从它的documentation来看,目前还不能用GKE ingress controller限制每个容器的并发连接数。

    因此,要参数化最大连接数,您必须遵循您提到的使用nginxinc/kubernetes-ingress 的帖子的接受答案,这是一个可以说比@ 接受答案更简单的解决方案987654324@与kubernetes/ingress-nginx相关。

    另一方面,如果您对资源没有限制(在这种情况下,您将限制并发用户的数量,因为给定的资源限制有两个并发连接到一个容器,这与拥有例如,两个连接到两个不同的容器)您可以阅读 Cluster autoscalerAutoscaling a cluster 以了解 GKE 如何实现 Kubernetes 的主要思想之一,即扩展。

    【讨论】:

      【解决方案2】:

      不,你不能。您必须在应用程序级别自行处理它,或者按照其他帖子中的建议,使用其他 Ingress Controller,您将拥有更多控制权。

      现在,如果您考虑一下,没有什么可以解决限制每个 pod 的并发连接数的问题,因为 pod 可以访问所有节点资源,除非您设置了资源限制,您可以随时修改。因此,拥有 2 个 pod,每个 1 个连接,一个 pod 有 2 个连接,将是相同的(如果您的应用程序可以处理它)。事实上,在一个 pod 中有 2 个连接,您可以从该节点为您的应用程序提供更多资源。

      我的观点是,如果它是资源方面的,那么限制每个 pod 的连接数是没有意义的。这对你来说只是额外的工作。

      我相信在其他情况下,您希望强制执行此限制,例如在节点级别设置它,在这种情况下,您会将所有资源分配给一个连接。而且我相信您可以通过排队系统实现这一目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-19
        • 1970-01-01
        • 1970-01-01
        • 2022-08-20
        • 2019-08-25
        • 2021-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多