Deployment status and history in Kubernetes - Time & Space Complexity
When checking deployment status and history in Kubernetes, we want to know how the time to get this information changes as the number of deployments grows.
We ask: How does the time to retrieve status and history grow when there are more deployments or revisions?
Analyze the time complexity of the following commands.
kubectl rollout status deployment/my-app
kubectl rollout history deployment/my-app
kubectl rollout history deployment/my-app --revision=3
These commands check the current status and list the revision history of a deployment named "my-app".
Look for repeated steps in fetching and displaying deployment data.
- Primary operation: Iterating over deployment revisions to list history.
- How many times: Once per revision in the deployment's history.
The time to get the current status stays about the same no matter how many revisions exist.
But listing history takes longer as the number of revisions grows, because it shows each revision.
| Input Size (n = revisions) | Approx. Operations |
|---|---|
| 10 | 10 operations (one per revision) |
| 100 | 100 operations |
| 1000 | 1000 operations |
Pattern observation: The time grows linearly with the number of revisions when listing history.
Time Complexity: O(n)
This means the time to list deployment history grows directly with the number of revisions.
[X] Wrong: "Checking deployment status takes longer as history grows."
[OK] Correct: Checking current status only looks at the latest state, so it stays fast regardless of history size.
Understanding how commands scale with data size helps you explain system behavior clearly and shows you know what affects performance in real tools.
"What if we added a filter to show only the last 5 revisions? How would the time complexity change?"
Practice
kubectl rollout status deployment/myapp do in Kubernetes?Solution
Step 1: Understand the command purpose
The commandkubectl rollout statuschecks the current status of a deployment rollout.Step 2: Apply to the specific deployment
Usingdeployment/myapptargets the deployment named 'myapp' to see if it is running or updating.Final Answer:
It shows if the deployment named 'myapp' is successfully running or still updating. -> Option AQuick Check:
Rollout status = Deployment running status [OK]
- Confusing rollout status with deployment creation
- Thinking it deletes or lists pods
- Using wrong resource type after rollout status
Solution
Step 1: Identify the correct command for rollout history
The command to view rollout history iskubectl rollout history.Step 2: Use correct resource type and name
Appendingdeployment/webappspecifies the deployment named 'webapp'.Final Answer:
kubectl rollout history deployment/webapp -> Option DQuick Check:
Rollout history syntax = kubectl rollout history deployment/name [OK]
- Using 'get' or 'describe' instead of 'rollout history'
- Omitting 'deployment/' prefix
- Confusing rollout status with rollout history
deployment "frontend" successfully rolled out
What command was most likely run to get this output?
Solution
Step 1: Analyze the output message
The message says the deployment "frontend" was successfully rolled out, indicating a status check.Step 2: Match output to command
kubectl rollout statusshows this success message, while history or describe commands show different outputs.Final Answer:
kubectl rollout status deployment/frontend -> Option CQuick Check:
Success rollout message = rollout status command [OK]
- Confusing rollout history output with status output
- Assuming pod listing shows rollout success
- Using describe which shows detailed info, not status message
kubectl rollout history deployment/api but got an error: error: deployments.apps "api" not found. What is the most likely cause?Solution
Step 1: Understand the error message
The error says deployment "api" not found, meaning Kubernetes can't find that deployment in the current namespace.Step 2: Check command and context
The command syntax is correct, and cluster down would cause different errors. Missing deployment is the most likely cause.Final Answer:
The deployment named 'api' does not exist in the current namespace. -> Option BQuick Check:
Deployment not found error = deployment missing [OK]
- Assuming syntax error when command is correct
- Forgetting namespace context
- Blaming cluster status without checking deployment
Solution
Step 1: Check rollout history
Usekubectl rollout history deployment/backendto see past versions and confirm rollback target.Step 2: Rollback to previous version
Usekubectl rollout undo deployment/backendto revert to the last successful deployment.Final Answer:
kubectl rollout history deployment/backend followed by kubectl rollout undo deployment/backend -> Option AQuick Check:
History then undo = safe rollback steps [OK]
- Deleting deployment instead of rolling back
- Undoing before checking history
- Confusing status command with rollback
Ready to prove it?
Pass the test and this pattern moves unknown
