How to update in all replicas when hitting an endpoint

4/28/2020

I have 3 replicas of same application running in kubernetes and application exposes an endpoint. Hitting the endpoint sets a boolean variable value to true which is having a use in my application. But the issue is, when hitting the endpoint, the variable is updated only in one of the replicas. How to make the changes in all replicas just by hitting one endpoint?

-- Gill Varghese Sajan
containers
deployment
docker
kubernetes
replication

2 Answers

4/28/2020

Seems like you're trying to solve an issue with your app using Kubernetes. Let me elaborate:

  1. If you have several pods behind a service, you can't access all of them using a single request. This have been proposed here, but in my opinion - isn't best practice.

  2. If you need to share data between your apps, you can have them communicate with each other using a cluster service.

  3. You probably assume you can share data using Kubernetes volumes, such as gcePersistentDisk or some other sort of volume, but then again, volumes were not meant to solve such problems.

In conclusion, the way I would solve such issue, is by having the pods communicate changes with each other. Kubernetes can't solve this for you.

EDIT: Another approach could be having a shared storage (for example a single pod containing mongoDB for example) but I would say that it's a bit of an overkill for your issue. Also because in order to communicate with this pod you would probably need in-cluster communication anyway.

-- omricoco
Source: StackOverflow

4/28/2020

You need to store your data in a shared database of some kind, not locally in memory. If all you need is a temporary flag, Redis would be a popular choice, or for more durable stuff Postgres is the gold standard. But there's a wide and wonderful world of databases out there, explore which match your use case.

-- coderanger
Source: StackOverflow