<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>The short answer is that networks are complex and highly customized.  It's not easy to provide an efficient built-in that works everywhere.  All of the cloud provider networks are different than bare-metal networks.  Rather than pick a bad default we require that the end user, who really is the only person who could possibly comprehend their network, makes a decision.</p>

<p>Doing a built-in VXLAN or something might be possible but would be far from ideal for many users, and defaults tend to stick...</p>
