What if you could update your app without your users ever noticing a thing?
Why Rolling update strategy in Kubernetes? - Purpose & Use Cases
Imagine you have a website running on several servers. You want to update the website without making it go offline. So, you stop one server, update it, then start it again. Then you do the same for the next server, and so on.
This manual way is slow and risky. If you stop too many servers at once, your website breaks. If you forget to start a server, users get errors. It's hard to keep track and fix mistakes quickly.
The rolling update strategy in Kubernetes updates your app step-by-step automatically. It replaces old versions with new ones little by little, keeping the app running all the time. If something goes wrong, it stops and fixes it before continuing.
kubectl delete pod pod-1 kubectl apply -f new-version.yaml kubectl delete pod pod-2 kubectl apply -f new-version.yaml
kubectl set image deployment/myapp myapp=myapp:v2 kubectl rollout status deployment/myapp
You can update your app smoothly without downtime, keeping users happy and your service reliable.
A popular online store updates its product page code. Using rolling updates, customers keep shopping without noticing any interruption during the update.
Manual updates risk downtime and errors.
Rolling updates replace app versions gradually and safely.
This keeps services running smoothly during changes.
Practice
Solution
Step 1: Understand rolling update concept
A rolling update replaces pods one by one to avoid downtime.Step 2: Compare options with concept
Only To update an application without downtime by gradually replacing pods describes gradual replacement without downtime.Final Answer:
To update an application without downtime by gradually replacing pods -> Option AQuick Check:
Rolling update = gradual pod replacement [OK]
- Thinking rolling update deletes all pods at once
- Confusing rolling update with backup
- Assuming rolling update scales pods to zero
Solution
Step 1: Identify command to update image
The command to update a deployment's image is 'kubectl set image'.Step 2: Match command with options
kubectl set image deployment/myapp myapp-container=myimage:v2 uses 'kubectl set image' correctly to start rolling update.Final Answer:
kubectl set image deployment/myapp myapp-container=myimage:v2 -> Option AQuick Check:
Change image = kubectl set image [OK]
- Using rollout undo to start update
- Scaling replicas to zero instead of updating image
- Using get pods to update image
kubectl set image deployment/myapp myapp-container=myimage:v2, what does kubectl rollout status deployment/myapp show?Solution
Step 1: Understand purpose of rollout status
The command 'kubectl rollout status' shows progress of deployment updates.Step 2: Compare options with command purpose
The current rollout progress of the deployment update correctly describes rollout progress; others describe different commands.Final Answer:
The current rollout progress of the deployment update -> Option BQuick Check:
Rollout status = update progress [OK]
- Confusing rollout status with pod listing
- Expecting logs from rollout status
- Thinking rollout status shows config details
kubectl set image deployment/myapp myapp-container=myimage:v2 but the new pods crash. Which command helps you revert to the previous version?Solution
Step 1: Identify command to revert deployment
'kubectl rollout undo' reverts deployment to previous version.Step 2: Match command with options
kubectl rollout undo deployment/myapp correctly reverts the deployment; others do not revert updates.Final Answer:
kubectl rollout undo deployment/myapp -> Option CQuick Check:
Undo rollout = kubectl rollout undo [OK]
- Deleting deployment instead of undoing
- Scaling replicas to zero instead of reverting
- Using get pods which only lists pods
Solution
Step 1: Understand maxUnavailable and maxSurge
'maxUnavailable' controls how many pods can be down; 'maxSurge' controls extra pods created during update.Step 2: Ensure at least 2 pods always available
Setting 'maxUnavailable' to 0 means no pods go down; 'maxSurge' 2 allows 2 extra pods to be created for smooth update.Final Answer:
Set 'maxUnavailable' to 0 and 'maxSurge' to 2 in 'rollingUpdate' strategy -> Option DQuick Check:
Zero unavailable + surge 2 = no downtime, 2 pods always up [OK]
- Setting maxUnavailable > 0 causes downtime
- Setting maxSurge to 0 prevents extra pods during update
- Choosing high maxUnavailable and maxSurge causing instability
Ready to prove it?
Pass the test and this pattern moves unknown
