【发布时间】:2021-01-12 13:40:22
【问题描述】:
我正在移植一个应用程序以在 k8s 中运行。我遇到了入口问题。我正在尝试找到一种方法来限制在任何给定时间对部署管理的每个后端 pod 进行的 REST API 请求的数量。
请看下图,展示了架构。
Ingress 由 nginx-ingress 管理。对于给定的一组 URL 路径,入口将请求转发到以部署 REST API 后端进程为目标的服务。部署也由 HPA 根据 CPU 负载进行管理。
我想做的是找到一种方法来对入口请求进行排队,这样在运行我们的 API 后端进程的任何 pod 中传输的请求永远不会超过 X 个。 (例如,每个 pod 一次只允许 50 个正在运行的请求)
有人知道如何设置这样的请求限制吗?
作为一个额外的问题,我需要做的下一件事是让 HPA 监控请求队列并自动扩大/缩小部署,以使 pod 的数量与当前正在处理/排队的请求数量相匹配。例如,如果每个 pod 可以同时处理 100 个运行中的请求,而我们目前有 1000 个请求的负载水平要处理,那么自动缩放到 10 个 pod。
如果有用,我还计划为这个集群安装 linkerd。也许它有一种可以提供帮助的能力。
【问题讨论】:
-
stackoverflow.com/a/48693860/9521610 由于 Kubernetes 中的上游服务器是一个服务,它不能给出所需的结果,但在特定的配置中你可能会发现它很有用。
标签: kubernetes kubernetes-ingress nginx-ingress hpa linkerd