Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kubernetes pods and shared memory and state

I am a Kubernetes noobie so my apologies if this is a basic question - I am trying to get a good understanding of this amazing technology.

Let's say I have some processing on a pod and I have some variables and arrays. Now I will have a heavy load, and a new pod will be dispensed/replicated - now I have 2 pods rather than 1 to handle my load. What will happen to the memory of the second pod? Is pod 2 replicated with the same memory contents? will memory be shared? If there is some communication across my microservices which requires memory to be consistent, in other words there is some variables dependency, then replicating a pod with fresh memory is catastrophic. For clarifcation, let us say there is a key, value map on one pod. A pod is replicated, then we have two key,value map (one on pod1 and another on pod2). But we want a key,value map containing all the data that is common between these two pods - a shared key,value map across replicated pods - NOT two isolated key,value maps.

Sure, I suppose one solution would be to have a shared, central, database for reference. But this is a massive overhead for situations where we just want to share an array of a few hundred elements! What is the Kubernetes approach to this issue?

like image 791
Zeruno Avatar asked Dec 12 '18 23:12

Zeruno


2 Answers

@Zeruno maybe i am thinking out loud here but what if you used the existing etcd cluster as a key-value store for your application

  1. No overhead of maintaining it since its already there and manged by K8s itself that too in a distributed cluster mode.

  2. This might act as a single point of storage that will be accessible by all the pods in that cluster.

like image 131
sanster_23 Avatar answered Sep 24 '22 06:09

sanster_23


Addressing your question about memory of the second pod, the second pod will be assigned a new memory.

Addressing your question about the replicated memory content of the new pod, all the new pod will be replicated depending on the container spec.

Addressing your question about shared memory between pods, no the memory is not shared between the pods.If you want to share elements between pods, you need to make sure it is in container spec, such as volume or environment variables.

Addressing your question about key values, if you are looking for storage solutions, you could consider volumes 1, 2. If you are just looking to pass some key-values to pods, you might consider using configmaps.

1 https://kubernetes.io/docs/concepts/storage/persistent-volumes/

2 https://kubernetes.io/docs/concepts/storage/

like image 24
shamma Avatar answered Sep 25 '22 06:09

shamma