Need to create a pod for each new request from frontend service in Kubernetes

2/6/2019

I have a use case in which front-end application in sending a file to back-end service for processing. And at a time only one request can be processed by backend service pod. And if multiple request came service should autoscale and send that request to new Pod. So I am finding a way in which I can spawn a new POD against each request and after completion of processing by backend service pod it will return the result to front-end service and destroy itself. So that each pod only process a single request at a time.

I explore the HPA autoscaling but did not find any suitable way. Open to use any custom metric server for that, even can use Jobs if they are able to fulfill the above scenario.

So if someone have knowledge or tackle the same use case then help me so that I can also try that solution. Thanks in advance.

-- Prakul Singhal
amazon-eks
aws-eks
horizontal-scaling
kubernetes
kubernetes-helm

2 Answers

2/6/2019

As already said, there is no built in way for doing this , you need to find custom way to achive this.

One solution can be use of service account and http request to api server to create back end pod as soon as your service is received by front end pod, check status of back end pod and once it is up, forward request to back end.

Second way i can think of using some temp storage ( db or hostpath volume ) and write cronejob in your master to poll that storage and depending on status spawn pod having job container.

-- Rajesh Deshpande
Source: StackOverflow

2/6/2019

There's not really anything built-in for this that I can think of. You could create a service account for your app that has permissions to create pods, and then build the spawning behavior into your app code directly. If you can get metrics about which pods are available, you could use HPA with Prometheus to ensure there is always at least one unoccupied backend, but that depends on what kind of metrics your stuff exposes.

-- coderanger
Source: StackOverflow