<p>While trying to understand <strong>Kubernetes networking</strong>, one point has confused me. Why <strong>Kubernetes doesn't handle pod-to-pod communication inbuilt/itself?</strong></p>

<p>As per the docs - <a href="https://kubernetes.io/docs/concepts/cluster-administration/networking/" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/cluster-administration/networking/</a> </p>

<p>There are <strong>4 distinct networking problems</strong> to address:</p>

<ol>
<li><strong>Highly-coupled container-to-container communications</strong>: this is solved
by pods and localhost communications.</li>
<li><strong>Pod-to-Pod communications</strong>: this is the primary focus of this
document.</li>
<li><strong>Pod-to-Service communications</strong>: this is covered by services.</li>
<li><strong>External-to-Service communications</strong>: this is covered by services.</li>
</ol>

<p>When Kubernetes can <strong>handle all the other problems</strong>(mentioned above) of networking, <strong>why does pod-to-pod communication needs to handled by other <a href="https://kubernetes.io/docs/concepts/cluster-administration/networking/#how-to-implement-the-kubernetes-networking-model" rel="nofollow noreferrer">plugins</a></strong> like ACI, Cilium, Flannel, Jaguar and so on..</p>

<p>Would like to know is there <strong>any specific reason for such architecture</strong>? </p>

<p>Agree with Tim above. Kubernetes in general is mostly an abstraction and orchestration layer of the Compute, storage and networking for the developers so that they don't have to be aware of the implementation. The implementation itself will be tied to the underlying infrastructure and kubernetes just defines the interface for them (CRI for containers -compute, CSI for storage and CNI for networking).</p>

<p>By just defining the interface the implementations can evolve independently without breaking the contract. For example, in future it might become possible to offload pod-to-pod networking to the nic-card and expecting kubernetes to evolve to such a technology change might be a big ask. By not being intimately tied to the implementation it allows development of technology to be accelerated in each layer. </p>
