Deployment (Kubernetes)
A Kubernetes Deployment declaratively manages identical pods, automating rolling updates, rollbacks, and scaling through ReplicaSets.
A Deployment is a Kubernetes controller for managing stateless applications. You declare a desired state, such as which container image to run and how many replicas to keep, and the Deployment continuously works to make the cluster match that state.
How It Works
A Deployment manages pods indirectly through a ReplicaSet. When you update the pod template (for example, by changing the image), the Deployment creates a new ReplicaSet and performs a controlled rolling update: it gradually scales up the new ReplicaSet while scaling down the old one, respecting limits on how many pods can be unavailable or surge above the target at once.
Because it keeps a history of revisions, a Deployment can roll back to a previous version if a release misbehaves. It also supports pausing and resuming a rollout for staged changes. Scaling is a matter of changing the replica count, which can be automated with a Horizontal Pod Autoscaler.
Why It Matters
Deployments encapsulate the operational patterns most applications need: zero-downtime updates, automatic replacement of failed pods, and easy scaling. The declarative model means operators describe the target state rather than scripting each step, and the controller reconciles continuously.
Deployments suit stateless workloads where any replica is interchangeable. Workloads needing stable identity or ordered startup use a StatefulSet instead, and per-node agents use a DaemonSet.
Related Terms
A Deployment manages pods via a ReplicaSet, can be scaled by a Horizontal Pod Autoscaler, and is reconciled by the cluster control plane.