What is a deployment in Kubernetes?
A deployment is a resource that is designed for "deploying applications and updating them declaratively" (page 261 of Kubernetes in Action by Luksa). You may hear the phrase "Deployment controller." As far as we know this is a reference to the process that runs in the Kubernetes Control Plane (page 262 of Kubernetes in Action by Luksa). A part of the deployment process is referred to in Kubernetes as the rollout (page 273 of Kubernetes in Action by Luksa).
A deployment controller manages the creation of ReplicaSets (according to this posting).
A Deployment is "composed of a label selector, a desired replica count, and a pod template" (page 262 of Kubernetes in Action by Luksa).
A .yaml file in Kubneretes is declarative; to learn more about the file, see this posting. They support a key named "kind". The value associated with this "kind" key can be "Deployment" (which Kubernetes will recognize).
A deployment is something that is scalable in Kubernetes -- either manually or automatically according to page 443 of Kubernetes in Action by Luksa.
Once the deployment is complete, the pods are managed by the ReplicaSets (not the Deployment itself) (page 261 of Kubernetes in Action by Luksa). Here is how the process works (looking at it chronologically): Deployment -> ReplicaSet -> Pods
(This was adapted from page 261 of Kubernetes in Action by Luksa).
To learn more about Kubernetes deployments, see this.