Bird
Raised Fist0
Kubernetesdevops~20 mins

Deployment as higher-level abstraction in Kubernetes - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Deployment Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What is the primary purpose of a Kubernetes Deployment?

Choose the main function of a Deployment in Kubernetes.

ATo expose Pods to external traffic via a stable IP address
BTo manage the lifecycle of Pods and ensure the desired number of replicas are running
CTo store configuration data for Pods and containers
DTo schedule Pods onto specific nodes based on resource availability
Attempts:
2 left
💡 Hint

Think about what keeps your app running smoothly even if some parts fail.

💻 Command Output
intermediate
2:00remaining
Output of 'kubectl get deployment myapp' after scaling

What is the output of the following command after scaling the Deployment to 3 replicas?

kubectl get deployment myapp
A
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
myapp  0/3     0            0           10m
B
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
myapp  1/3     3            1           10m
C
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
myapp  3/3     3            3           10m
DError from server (NotFound): deployments.apps "myapp" not found
Attempts:
2 left
💡 Hint

Scaling to 3 replicas means all 3 should be ready and available.

❓ Configuration
advanced
2:30remaining
Correct YAML snippet for a Deployment with rolling update strategy

Which YAML snippet correctly configures a Deployment to use a rolling update strategy with max 1 unavailable Pod?

A
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 1
B
strategy:
  type: Recreate
  rollingUpdate:
    maxUnavailable: 1
C
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 0
D
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 0
    maxSurge: 2
Attempts:
2 left
💡 Hint

RollingUpdate with maxUnavailable controls how many Pods can be down during update.

❓ Troubleshoot
advanced
2:30remaining
Why does a Deployment keep creating new Pods endlessly?

You notice your Deployment keeps creating new Pods and old ones are terminating repeatedly. What is the most likely cause?

AThe Deployment has no replicas specified, so it keeps creating Pods
BThe nodes have insufficient resources causing Pods to crash
CThe Service selector does not match the Pod labels
DThe Pod template spec has changed causing a new ReplicaSet to be created each time
Attempts:
2 left
💡 Hint

Think about what triggers a new ReplicaSet creation in a Deployment.

🔀 Workflow
expert
3:00remaining
Order the steps to perform a zero-downtime Deployment update

Arrange the steps in the correct order to update a Deployment without downtime.

A1,2,3,4
B2,1,3,4
C1,3,2,4
D3,1,2,4
Attempts:
2 left
💡 Hint

Think about the natural flow from editing to applying and then Kubernetes handling the rollout.

Practice

(1/5)
1. What is the main purpose of a Kubernetes Deployment?
easy
A. To provide network access to pods
B. To store data persistently across pods
C. To schedule pods on specific nodes manually
D. To manage multiple copies of an application and keep them running

Solution

  1. Step 1: Understand Deployment role

    A Deployment manages the desired number of pod replicas and ensures they stay running.
  2. Step 2: Compare other options

    Options A, B, and D describe Services, Persistent Volumes, and manual scheduling, which are not Deployment's main purpose.
  3. Final Answer:

    To manage multiple copies of an application and keep them running -> Option D
  4. Quick Check:

    Deployment manages pods = C [OK]
Hint: Deployment controls app copies and uptime [OK]
Common Mistakes:
  • Confusing Deployment with Service or Volume
  • Thinking Deployment schedules pods manually
  • Assuming Deployment stores data
2. Which of the following is the correct minimal YAML snippet to define a Deployment selector matching pods with label app: myapp?
easy
A. selector: matchLabels: app: myapp
B. selector: labels: app: myapp
C. selector: matchLabels: name: myapp
D. selector: matchExpressions: - key: app operator: In values: [myapp]

Solution

  1. Step 1: Recall Deployment selector syntax

    The selector must use matchLabels with key-value pairs matching pod labels.
  2. Step 2: Check options

    selector: matchLabels: app: myapp uses correct matchLabels with app: myapp. selector: labels: app: myapp uses wrong key labels. selector: matchLabels: name: myapp uses wrong label key name. selector: matchExpressions: - key: app operator: In values: [myapp] uses matchExpressions which is valid but more complex and not minimal.
  3. Final Answer:

    selector: matchLabels: app: myapp -> Option A
  4. Quick Check:

    Use matchLabels with correct key = A [OK]
Hint: Use matchLabels with exact pod label keys [OK]
Common Mistakes:
  • Using 'labels' instead of 'matchLabels'
  • Mismatching label keys in selector
  • Confusing matchLabels with matchExpressions
3. Given this Deployment YAML snippet, what will be the number of pods running after applying it?
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: nginx
        image: nginx:latest
medium
A. 0 pods running due to label mismatch
B. 1 pod running
C. 3 pods running
D. Deployment will fail to create pods

Solution

  1. Step 1: Check replicas and labels

    The Deployment requests 3 replicas and the selector matches pods with label app: test. The pod template labels match this exactly.
  2. Step 2: Confirm pod creation

    Since labels match, Kubernetes will create 3 pods as requested.
  3. Final Answer:

    3 pods running -> Option C
  4. Quick Check:

    Matching labels + replicas 3 = 3 pods [OK]
Hint: Match selector and template labels to get pods [OK]
Common Mistakes:
  • Assuming label mismatch causes zero pods
  • Thinking Deployment fails without errors
  • Ignoring replicas count
4. You applied a Deployment YAML but no pods are created. Which issue is most likely causing this?
medium
A. The Deployment metadata name is missing
B. The Deployment selector labels do not match the pod template labels
C. The replicas field is set to zero
D. The container image name is missing

Solution

  1. Step 1: Understand Deployment selector importance

    The Deployment uses the selector to find pods it manages. If selector labels don't match pod template labels, no pods are created.
  2. Step 2: Evaluate other options

    Missing image name causes pod creation failure but usually with errors. Replicas zero means no pods but is explicit. Missing metadata name causes YAML validation error.
  3. Final Answer:

    The Deployment selector labels do not match the pod template labels -> Option B
  4. Quick Check:

    Selector-template label mismatch = no pods [OK]
Hint: Check selector and template labels match exactly [OK]
Common Mistakes:
  • Ignoring label mismatch
  • Assuming missing image silently creates no pods
  • Confusing replicas zero with label mismatch
5. You want to update your app smoothly without downtime using a Deployment. Which feature of Deployment helps achieve this?
hard
A. Rolling update strategy that replaces pods gradually
B. Manual pod deletion to force restart
C. Setting replicas to zero before update
D. Using a StatefulSet instead of Deployment

Solution

  1. Step 1: Identify update strategies in Deployment

    Deployment supports rolling updates that replace pods one by one, keeping the app available.
  2. Step 2: Compare other options

    Manual deletion causes downtime. Setting replicas to zero stops all pods. StatefulSet is for stateful apps, not smooth rolling updates.
  3. Final Answer:

    Rolling update strategy that replaces pods gradually -> Option A
  4. Quick Check:

    Rolling update = smooth app update [OK]
Hint: Rolling update replaces pods one by one [OK]
Common Mistakes:
  • Deleting pods manually causes downtime
  • Scaling replicas to zero stops app
  • Confusing StatefulSet with Deployment update
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