The request for a service call is made to the ClusterIP, the kube-proxy on the node intercepts the request. The kube-proxy manages rules in iptables or IPVS. These rules perform destination NAT (DNAT) to translate the Service IP into one of the backend Pod IPs.
I wrote about it recently if you want to take a look here