Deployments & rollouts

Release a new version and watch a rolling update happen: new pods in, old pods out, never fewer ready pods than you allow. Click the rollout gauge on the control cabinet to see the limits, or press ▶ Guided tour.

Drag to rotate · click a part
maxSurge 2 maxUnavailable 1

kind: Deployment
spec:
  replicas: 6
  strategy: { type: RollingUpdate, rollingUpdate: { maxSurge: 2, maxUnavailable: 1 } }
  template: { spec: { containers: [{ name: web, image: web:v2 }] } }
# kubectl rollout status deploy/web · kubectl rollout undo deploy/web

A Deployment keeps one ReplicaSet per version. On a rolling update the controller scales the new ReplicaSet up and the old one down within two limits: total pods may rise to replicas + maxSurge, and ready pods may fall to replicas − maxUnavailable. A new pod counts as available only once its readiness probe passes, so a broken image stops the rollout at the floor while the old pods keep serving; kubectl rollout undo switches the template back.