In Kubernetes, every node has a designated CIDR range of IPs for Pods. This would ensure that every Pod gets a unique IP address that can be seen by other Pods in the cluster and also ensures that when a new Pod is created, the IP address never overlaps. Unlike Container-to-Container networking, Pod-to-Pod communication happens using real IPs, whether the Pod is deployed on the same node or a different node in the cluster.
You can notice from the diagram above that, for Pods to communicate with each other, the traffic has to flow between the Pod network namespace and the Root network namespace. This is achieved by connecting both the Pod namespace and the root namespace by a virtual ethernet device or a veth pair (veth0 to Pod namespace 1 and veth1 to Pod namespace 2 in the diagram). Both these virtual interfaces would be connected via a virtual network bridge which will then allow traffic to flow between them using the ARP protocol.
So if data is sent from Pod 1 to Pod 2, the flow of events would like this ( refer to diagram above )
Pod 1 traffic flows through eth0 to the root network namespaces virtual interface veth0.
Then traffic goes via veth0 to the virtual bridge which is connected to veth1.
Traffic goes via the virtual bridge to veth1.
Finally, traffic reaches eth0 interface of Pod 2 via veth1.