Every pod can reach every other pod. This is accomplished by deploying a pod networking solution to the cluster.
A pod network is an internal virtual network that spans across all the nodes in the cluster to which all the pods connect to.
The service cannot join the pod network because the service is not an actual thing. It is not a container like pods, so it doesn't have any interfaces or an actively listening process. It is a virtual component that only lives in the Kubernetes memory. But then, we also said that the service should be accessible across the cluster from any nodes. So how is that achieved?
kube proxy is a process that runs on each node in the k8s cluster, is job is to look for new services and each time services is created it creates the appropriate rules on each node to forward traffic to those services to the backen pods (using iptables rules)
In this case, it creates an iptables rule on each node in the cluster to forward traffic heading to the IP of the service, which is 10.96.0.12, to the IP of the actual pod, which is 10.32.0.15. So that's how kube-proxy configures a service.
by systemd service (binary)
by kubeadm