How traffic reaches pods: ClusterIP, NodePort, LoadBalancer and headless Services, plus Ingress for host and path based HTTP(S) routing.
| Type | Reachable from | Use |
|---|---|---|
| ClusterIP (default) | Inside the cluster | Service-to-service calls |
| NodePort | <nodeIP>:30000-32767 | Quick external test, bare metal |
| LoadBalancer | Cloud load balancer IP | One external IP per service |
Headless (clusterIP: None) | DNS returns pod IPs | StatefulSets, direct pod addressing |
| ExternalName | DNS CNAME | Alias an external host |
DNS name: <service>.<namespace>.svc.cluster.local
One entry point, many hosts and paths, TLS termination.
An Ingress does nothing without an ingress controller (ingress-nginx, Traefik or a cloud controller). Empty endpoints mean the Service selector matches no ready pods.