Question
What is a deployment in Kubernetes?
Answer
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." This is a reference to a component of the Controller Manager in the Kubernetes Control Plane (page 262 of Kubernetes in Action by Luksa). When the Deployment controller runs, it can be referred to as the rollout or the deployment process (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 Kubernetes 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.