Bird
Raised Fist0
Kubernetesdevops~5 mins

Rolling update strategy in Kubernetes - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Rolling update strategy
O(n)
Understanding Time Complexity

When Kubernetes updates an application, it replaces old versions with new ones gradually. Understanding how long this process takes helps us plan and manage updates smoothly.

We want to know how the update time grows as the number of pods increases.

Scenario Under Consideration

Analyze the time complexity of the following Kubernetes rolling update configuration.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-app
spec:
  replicas: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 2
      maxSurge: 3
  template:
    metadata:
      labels:
        app: example-app
    spec:
      containers:
      - name: app-container
        image: example-image:v2

This config updates 10 pods gradually, allowing up to 3 extra pods and 2 pods down at once.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Updating pods in batches during the rolling update.
  • How many times: The number of batches depends on total pods and maxUnavailable/maxSurge settings.
How Execution Grows With Input

As the number of pods (n) grows, the update happens in groups limited by maxUnavailable and maxSurge.

Input Size (n)Approx. Number of Update Batches
10About 4 batches
100About 34 batches
1000About 334 batches

Pattern observation: The number of batches grows roughly linearly with the number of pods.

Final Time Complexity

Time Complexity: O(n)

This means the update time grows roughly in direct proportion to the number of pods being updated.

Common Mistake

[X] Wrong: "The rolling update time stays the same no matter how many pods there are."

[OK] Correct: Because pods update in batches limited by maxUnavailable and maxSurge, more pods mean more batches and more time.

Interview Connect

Understanding how rolling updates scale helps you manage real applications smoothly and shows you can think about system behavior as it grows.

Self-Check

"What if maxUnavailable was set to 1 instead of 2? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of a rolling update in Kubernetes?
easy
A. To update an application without downtime by gradually replacing pods
B. To delete all pods and recreate them at once
C. To backup the current state of the application
D. To scale the application to zero replicas

Solution

  1. Step 1: Understand rolling update concept

    A rolling update replaces pods one by one to avoid downtime.
  2. Step 2: Compare options with concept

    Only To update an application without downtime by gradually replacing pods describes gradual replacement without downtime.
  3. Final Answer:

    To update an application without downtime by gradually replacing pods -> Option A
  4. Quick Check:

    Rolling update = gradual pod replacement [OK]
Hint: Rolling update means update pods one by one without downtime [OK]
Common Mistakes:
  • Thinking rolling update deletes all pods at once
  • Confusing rolling update with backup
  • Assuming rolling update scales pods to zero
2. Which kubectl command starts a rolling update by changing the image of a deployment?
easy
A. kubectl set image deployment/myapp myapp-container=myimage:v2
B. kubectl rollout undo deployment/myapp
C. kubectl scale deployment/myapp --replicas=0
D. kubectl get pods --watch

Solution

  1. Step 1: Identify command to update image

    The command to update a deployment's image is 'kubectl set image'.
  2. Step 2: Match command with options

    kubectl set image deployment/myapp myapp-container=myimage:v2 uses 'kubectl set image' correctly to start rolling update.
  3. Final Answer:

    kubectl set image deployment/myapp myapp-container=myimage:v2 -> Option A
  4. Quick Check:

    Change image = kubectl set image [OK]
Hint: Use kubectl set image to start rolling update [OK]
Common Mistakes:
  • Using rollout undo to start update
  • Scaling replicas to zero instead of updating image
  • Using get pods to update image
3. After running kubectl set image deployment/myapp myapp-container=myimage:v2, what does kubectl rollout status deployment/myapp show?
medium
A. The configuration details of the deployment
B. The current rollout progress of the deployment update
C. The logs of the deployment pods
D. The list of pods in the deployment

Solution

  1. Step 1: Understand purpose of rollout status

    The command 'kubectl rollout status' shows progress of deployment updates.
  2. Step 2: Compare options with command purpose

    The current rollout progress of the deployment update correctly describes rollout progress; others describe different commands.
  3. Final Answer:

    The current rollout progress of the deployment update -> Option B
  4. Quick Check:

    Rollout status = update progress [OK]
Hint: Rollout status shows update progress, not pod list or logs [OK]
Common Mistakes:
  • Confusing rollout status with pod listing
  • Expecting logs from rollout status
  • Thinking rollout status shows config details
4. You ran kubectl set image deployment/myapp myapp-container=myimage:v2 but the new pods crash. Which command helps you revert to the previous version?
medium
A. kubectl scale deployment/myapp --replicas=0
B. kubectl delete deployment myapp
C. kubectl rollout undo deployment/myapp
D. kubectl get pods --all-namespaces

Solution

  1. Step 1: Identify command to revert deployment

    'kubectl rollout undo' reverts deployment to previous version.
  2. Step 2: Match command with options

    kubectl rollout undo deployment/myapp correctly reverts the deployment; others do not revert updates.
  3. Final Answer:

    kubectl rollout undo deployment/myapp -> Option C
  4. Quick Check:

    Undo rollout = kubectl rollout undo [OK]
Hint: Use rollout undo to revert bad updates quickly [OK]
Common Mistakes:
  • Deleting deployment instead of undoing
  • Scaling replicas to zero instead of reverting
  • Using get pods which only lists pods
5. You want to update your deployment with zero downtime and ensure at least 2 pods are always available during the update. Which rolling update settings in the deployment spec help achieve this?
hard
A. Set 'maxUnavailable' to 1 and 'maxSurge' to 1 in 'rollingUpdate' strategy
B. Set 'maxUnavailable' to 2 and 'maxSurge' to 0 in 'rollingUpdate' strategy
C. Set 'maxUnavailable' to 3 and 'maxSurge' to 3 in 'rollingUpdate' strategy
D. Set 'maxUnavailable' to 0 and 'maxSurge' to 2 in 'rollingUpdate' strategy

Solution

  1. Step 1: Understand maxUnavailable and maxSurge

    'maxUnavailable' controls how many pods can be down; 'maxSurge' controls extra pods created during update.
  2. 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.
  3. Final Answer:

    Set 'maxUnavailable' to 0 and 'maxSurge' to 2 in 'rollingUpdate' strategy -> Option D
  4. Quick Check:

    Zero unavailable + surge 2 = no downtime, 2 pods always up [OK]
Hint: maxUnavailable 0 means no pod down; maxSurge adds extra pods [OK]
Common Mistakes:
  • Setting maxUnavailable > 0 causes downtime
  • Setting maxSurge to 0 prevents extra pods during update
  • Choosing high maxUnavailable and maxSurge causing instability
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard