Originally published on Naveed Ahmed's Engineering Blog.
Most Kubernetes teams start with RollingUpdate.
It works well for many applications, but there are situations where you need more control over traffic, rollback behavior, or the number of users exposed to a new release.
That's where different Kubernetes deployment strategies become useful.
Let's look at seven approaches and when to use them.
1. Rolling Update
RollingUpdate is the default Kubernetes Deployment strategy.
It gradually replaces old Pods with new ones.
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 0
With enough available capacity and correctly configured readiness checks, this can help maintain application availability during a rollout.
Best for: Stateless applications with backward-compatible changes.
2. Ramped Rollout
A ramped rollout is a more controlled variation of RollingUpdate.
Instead of updating several Pods at once, you replace them in smaller batches.
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
minReadySeconds: 30
This limits the pace of Pod replacement and requires newly ready Pods to remain ready for a minimum period.
Best for: Applications that need cautious rollouts or time for warm-up and observation.
3. Recreate
Recreate terminates the old application Pods before creating the replacement Pods.
strategy:
type: Recreate
It's simple, but it normally creates an availability gap.
Best for: Applications that cannot safely run old and new versions together, where downtime is acceptable.
4. Blue/Green Deployment
Blue/Green keeps two application environments:
- Blue: Current production version
- Green: New application version
You validate Green before switching production traffic to it.
If something goes wrong, traffic can be routed back to Blue, provided the old version remains compatible with shared dependencies.
Best for: Releases requiring controlled cutovers and fast traffic-based rollback.
5. Canary Deployment
Canary deployment gradually exposes the new application version to real users.
For example:
Stable Version: 95%
Canary Version: 5%
Monitor error rates, latency, and application metrics before increasing the new version's traffic share.
Argo Rollouts and compatible traffic-routing tools can automate progressive delivery.
Best for: High-traffic applications where limiting the initial blast radius matters.
6. A/B Testing
A/B testing routes different groups of users to different versions.
Unlike Canary, the primary goal is often to compare user behavior or product outcomes rather than simply validate release stability.
Best for: Feature experiments, beta releases, and user-segment testing.
7. Shadow Deployment
Shadow deployment sends a copy of production requests to a new application version.
Users still receive responses from the stable application.
This allows teams to observe how the new version behaves under realistic traffic.
Best for: Performance testing, infrastructure changes, and validating new services before cutover.
Be careful with database writes and other side effects from mirrored requests.
Which Kubernetes Deployment Strategy Should You Choose?
| Strategy | Main advantage | Main trade-off |
|---|---|---|
| Rolling Update | Simple gradual release | Mixed application versions |
| Ramped | Slower, controlled replacement | Longer rollout |
| Recreate | Avoids concurrent versions | Downtime |
| Blue/Green | Controlled traffic switching | Duplicate capacity |
| Canary | Limits initial exposure | Routing and monitoring complexity |
| A/B Testing | User-segment experimentation | More complex routing |
| Shadow | Tests with mirrored requests | Extra load and side-effect risks |
The best choice depends on application architecture, downtime tolerance, available capacity, and rollback requirements.
Production Checks That Matter
Before using any deployment strategy, verify:
- Readiness and startup behavior
- Available cluster resources
- Application and database compatibility
- Rollout monitoring
- Rollback procedures
- Error rates and latency
- Traffic-routing configuration
Useful Kubernetes commands include:
kubectl rollout status deployment/my-app
kubectl describe deployment my-app
kubectl rollout history deployment/my-app
kubectl rollout undo deployment/my-app
A successful rollout status doesn't necessarily mean every user-facing feature is working correctly.
Read the Full Kubernetes Deployment Guide
In my complete article, I compare all seven strategies with architecture diagrams, deployment manifests, production considerations, and troubleshooting examples.
Read the Complete Guide: 7 Kubernetes Deployment Strategies and When to Use Each
Final Thoughts
There's no single deployment strategy that works best for every application.
RollingUpdate is a good default, but Blue/Green, Canary, and Shadow patterns can provide additional control when your requirements become more complex.
The important part is understanding the trade-offs before deploying to production.
Which Kubernetes deployment strategy does your team use most often, and why?
Written by Naveed Ahmed — Lead DevOps & Platform Architect
Top comments (0)