我有一个带有docker镜像的Kubernetes集群。我有一些应用程序,每套应用程序都有一项服务。负载平衡和路径路由由Nginx Ingress完成。
现在,我有一个应用程序,其用途非常特定。我想将它的使用限制为一次只处理一个请求。该过程也可能长达半小时。如何在Kubernetes集群中执行此操作?如果kubernetes有这样的解决方案来跟踪pod中运行的进程并且不向该进程分配请求,那将是很好的。
也可以通过自动缩放来完成。如果我们可以删除未使用的Pod,并在收到请求时缩放应用程序。
最佳答案
这个问题并不是Kubernetes要解决的问题,而是您的应用程序设计-在这种情况下,这听起来像您对消息传递队列有很好的用例。无需将服务公开为REST API(我假设这就是您正在做的事情),而是可以为要放置的请求设置消息传递队列,并且服务可以在就绪时读取新请求,而无需按需读取。这样可以确保您的服务一次仅预订一个队列事件,而不会阻止将来的请求。
随时查看RabbitMQ或AWS SQS之类的解决方案。
关于docker - 将Kubernetes Pod限制为一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599098/