<p>I am fairly new to Kubernates and what I am able to understand so far, </p>

<ol>
<li>cluster is collection of node(s)</li>
<li>each node can have a set of running container(s)</li>
<li>set of tightly coupled container(s) itself can be grouped together to form a pod (despite of the node in which the container is running).</li>
</ol>

<p>First of all, am I correct so far? </p>

<p>secondly,  and going through docs about <a href="https://kubernetes.io/docs/concepts/overview/components/#kube-scheduler" rel="nofollow noreferrer">kube-scheduler</a> says, </p>

<blockquote>
  <p>Control Plane component that watches for newly created pods with no assigned node, and selects a node for them to run on.</p>
</blockquote>

<p>and docs also says <a href="https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/" rel="nofollow noreferrer">pods</a> are,</p>

<blockquote>
  <p>The smallest and simplest Kubernetes object. A Pod represents a set of running containers on your cluster.</p>
</blockquote>

<p>My question, rather confusion is since we have already containers running in different nodes, why do we need additional node to run a pod on ?</p>

<blockquote>
<ol>
<li><p>cluster is collection of node(s)</p>
</li>
<li><p>each node can have a set of running container(s)</p>
</li>
</ol>
</blockquote>
<p>You are correct.</p>
<blockquote>
<ol start="3">
<li>set of tightly coupled container(s) itself can be grouped together to form a pod (despite of the node in which the container is running).</li>
</ol>
</blockquote>
<p>All containers belonging to a pod run on the same node.</p>
<blockquote>
<p>My question, rather confusion is since we have already containers
running in different nodes, why do we need additional node to run a
pod on ?</p>
</blockquote>
<p>It's not the pod that actually runs. The only things that actually run on your nodes are <strong>containers</strong>. Pod is just a logical grouping of containers and is the basic unit in kubernetes to create a container. (Docker container logo is a whale, a <a href="https://www.google.com/search?q=group+of+whales&amp;oq=group+of+whales&amp;aqs=chrome..69i57&amp;sourceid=chrome&amp;ie=UTF-8" rel="nofollow noreferrer">group of whales is called a pod</a> if you want a parallel to remember this). So if the containers that belong to the pod are running, the pod is termed as running.</p>
<p>In the following pod specification, <code>nginx-container</code> and <code>debian-container</code> containers belong to the pod named <code>two-containers</code>. When you create this pod object, <code>kube-scheduler</code> will select a node to run this pod (i.e., to run the two containers) and assigns a node to the pod. The <code>kubelet</code> running on that node then gets notified and starts the two containers on the node. Since the two containers belong to same pod, they are run in same network namespace.</p>
<pre><code>apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: [&quot;/bin/sh&quot;]
    args: [&quot;-c&quot;, &quot;echo Hello from the debian container &gt; /pod-data/index.html&quot;]
</code></pre>
