What is the relation between nodes, pods, containers? How app is replicated in cluster?

9/20/2019

I am new to kubernetes and I went through many articles but didnt find a basic answer to my doubt.

Suppose I have 2 nodes kubernete cluster and I have deployed 2 applications on it then.

  1. My both of the apps will be hosted on both of the nodes? Like app1 on both of the nodes and similarly app2? it means we have replication factor of 2 by default. Correct?

  2. It will have 1 pod per node? What will be the structure?

Node 1, Pod1 - > App1
Node 1, Pod1 - > App2
Node 2, Pod1 - > App1
Node 2, Pod1 - > App2
  1. If I have set replication factor=2 then how it will affect the structure? Will it create
Node 1- Pod1 - > App1
Node 1- Pod2 - > App2
Node 2- Pod1 - > App1
Node 2- Pod2 - > App2
  1. What is deployment in terms of above physical/logical structures? How it differs with service? Deployment is specific to per node?
-- Roobal Jindal
google-kubernetes-engine
kubernetes
kubernetes-cluster

3 Answers

9/20/2019

A pod comprises of an application container or a group of application containers. When there are more than 1 containers in a pod, the kubernetes scheduler makes sure that all the containers defined in the pod spec gets created on the same Node.

Kubernetes scheduler always tries to spread pods across nodes depending on various factors including resource availability.

Regarding your questions:

  1. My both of the apps will be hosted on both of the nodes? Like app1 on both of the nodes and similarly app2? it means we have replication factor of 2 by default. Correct?

If the replication count is '1' for both pods, then only one pod instance will be created for each app regardless of the number of nodes. Otherwise, Kubernetes scheduler dynamically decides where to put extra replicas depending on the resource (CPU, memory) availabile on each node. The default replication count (aka replicas) is 1.

  1. It will have 1 pod per node? What will be the structure?

If both nodes have enough resource availability, the structure could look like this:

Node 1 - Pod 1 -> App1
Node 2 - Pod 2 -> App2
  1. If I have set replication factor=2 then how it will affect the structure? Will it create

Depending upon the resource availability, the kubernetes scheduler could create additional replicas like this:

Node 1 - Pod 1 -> App1
         Pod 2 -> App2
Node 2 - Pod 1 -> App1
         Pod 2 -> App2
-- Junaid
Source: StackOverflow

9/20/2019

It depends on how many replicas do you set in your deployment ? If you have 2 nodes and you set 1 replicas in A deployment then you will have 1 pod in first node OR the second node. If you set 3 replicas in A deployment then you will have 3 pod in first node or the second node or 2 pod in first node and 1 pod in second node or also otherwise.

-- Nicky Puff
Source: StackOverflow

9/20/2019

There's no predefined tying of pods to nodes. The Kubernetes scheduler dynamically decides which node to assign a pod to when the pod is created.

In general, a Kubernetes app consists of a set of replicated pods (in most cases managed by a Deployment resource). Which nodes these pods end up running on is up to the scheduler. There's no built-in policy that replica pods of the same app must run on different nodes.

However, you can influence the decision of the scheduler with various mechanisms:

-- weibeld
Source: StackOverflow