ClusterIP vs NodePort vs LoadBalancer: Key Differences & When to Use

What is a Service ?

A service helps clients reach one (or more) of the Pods that can fulfill their request. The Service can be reached at the same place at any point in time, so it serves as a stable destination that the client can use to get access to what it needs. The client doesn’t have to worry about the Pods’ dynamic IP addresses.

Cluster IP ( for Pod to Pod Communication )

  1. Service definition lives in the control plane (master node)
  2. Kube-proxy runs on every worker node
  3. Traffic routing

Small refinement (important nuance)

So the control plane (master node) stores the Service definition, but the routing actually happens on worker nodes (via kube-proxy).


Corrected Flow

  1. Client Pod sends traffic to ClusterIP:Port.
  2. Kube-proxy (on the same node as the client Pod) intercepts the traffic.
  3. Kube-proxy load-balances and chooses one backend Pod with app=nginx.
  4. Traffic is forwarded directly to that Pod (local or remote).