A Pod runs your containers, a Deployment keeps the right number of Pods running, and a Service gives those Pods one stable address.
A Pod is the smallest deployable unit. It holds one or more containers that share storage and network. Pods are ephemeral, so you rarely create them directly.
A Deployment is a higher-level object that manages ReplicaSets and rolls out changes to Pods declaratively. It keeps the desired number of replicas running.
A Service selects a set of Pods by label and gives them stable networking, one IP and DNS name that outlives any Pod. Other parts of the application call the Service, not Pod IPs.
The Deployment below keeps three nginx Pods running, and a Service with the selector app: nginx would send traffic to them.